Partager via

Enregistrer des textbox renseignés par une listbox dans 2 feuilles différentes

Anonyme
2024-03-15T19:06:32+00:00

Au secours, je ne comprends rien !

Enregistrer des textbox renseignés par une listbox dans 2 feuilles différentes 'l'une est une feuille("DOSSIER") sans particularité, l'autre est un tableau (" PARAMETRE")

J'appelle depuis un UserForm Frmenfant dans lequel je souhaite boucler en lançant autant de fois que nécessaire l'USF qui me pose problème

Private Sub CbModifier_Click()

ModifEnfant = 2

FrmEnfantChoix.Show

Dans USF '"FrmEnfantChoix" j'ai une listbox1 qui a un rowsource "BddEnfant" créé depuis une extraction de la feuille "ENFANT"

ROWSOURCE :

Ce USF contient 2 procédures :

Private Sub ListBox1_Change()

' contient des colonnes cachées

Me.TextBox1.Value = Me.ListBox1.Column(1)

Me.TextBox2.Value = Me.ListBox1.Column(2)

Me.TextBox3.Value = Me.ListBox1.Column(3)

If Me.ListBox1.Column(4) = "Fille" Then

OptionButton1.Value = True

Else

    OptionButton2.Value = True 

End If

LigneE = Me.ListBox1.Column(5) 

Exit Sub

End Sub

et

Private Sub CommandValider_Click()

'''''''''''''''''''''''

'Var public

'modifenfant

'lastrowE

'ligneE

'''''''''''''''''''''''

Select Case ModifEnfant

Case 1

MonMessage = "Confirmez l'enregistrement de cet Enfant" 

Case 2

MonMessage = "Voulez-vous modifier les informations pour cet enfant" 

Case 3

MonMessage = "Voulez-vous l'enregistrement cet enfant" 

End Select

'demande confirmation

If MsgBox(MonMessage, vbOKCancel + vbQuestion) = vbOK Then

If ModifEnfant = 1 Or ModifEnfant = 2 Then 

    lastrowE = LigneE - 1 

Else 

    'supprimer l'enregistrement 

    'Worksheets("ENFANT").Cells(LigneE, 1).Select 

    'c.Row.EntireRow.Delete 

    'Exit Sub 

End If 

Else

Exit Sub 

End If

' enregistrement des enfants dans la feuille ENFANT

Me.TextBox1.Value = UCase(Me.TextBox1.Value) 'NOM en majuscule

Me.TextBox2.Value = StrConv(Me.TextBox2.Value, vbProperCase) 'Prénom 1ere lettre majuscule

Worksheets("ENFANT").Cells(lastrowE + 1, 1).Value = ligne 'dossier

Worksheets("ENFANT").Cells(lastrowE + 1, 2).Value = Me.TextBox1.Value 'nom

Worksheets("ENFANT").Cells(lastrowE + 1, 3).Value = Me.TextBox2.Value 'prenom

Worksheets("ENFANT").Cells(lastrowE + 1, 4).Value = Me.TextBox3.Value 'age

If OptionButton1.Value = True Then 'genre

Worksheets("ENFANT").Cells(lastrowE + 1, 5).Value = "Fille" 

Else

Worksheets("ENFANT").Cells(lastrowE + 1, 5).Value = "Garçon" 

End If

Worksheets("ENFANT").Cells(lastrowE + 1, 6).Value = lastrowE + 1

i = FrmEnfantChoix.ListBox1.ListIndex + 2

MsgBox Me.TextBox2.Value

Worksheets("PARAMETRE").Cells(i, 10).Value = Me.TextBox1.Value 'nom

Worksheets("PARAMETRE").Cells(i, 11).Value = Me.TextBox2.Value ' prenom

Worksheets("PARAMETRE").Cells(i, 12).Value = Me.TextBox3.Value 'age

If Me.OptionButton1.Value = True Then 'genre

Worksheets("PARAMETRE").Cells(i, 13).Value = "Fille" 

Else

Worksheets("PARAMETRE").Cells(i, 13).Value = "Garçon" 

End If

Me.Hide

End Sub

Le problème auquel je ne comprends rien !

  • L'enregistrement des textbox dans la feuille("ENFANT") se déroule correctement
  • L'enregistrement des textbox dans la feuille("PARAMETRE") ne copie pas les valeurs des textbox mais les valeurs contenues dans le 1er enregistrement de la listbox

Quelqu'un peut-il me secourir ?

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

  1. Anonyme
    2024-03-15T21:32:04+00:00

    Bonjour D.Mouillaud,

    Il semble qu’il y ait un problème avec la façon dont les valeurs dans les zones de texte de la feuille « PARAMÈTRE » sont dupliquées. Il apparaît, d’après les exemples de code que vous avez fournis, que vous tentez d’enregistrer les valeurs des zones de texte de la feuille « PARAMÈTRE » en fonction de l’élément de zone de liste qui a été sélectionné.

    La façon dont vous obtenez les valeurs à partir de la zone de liste peut être à l’origine du problème. La propriété ListIndex fournit l’index de l’élément sélectionné dans la zone de liste et est utilisée lors de la tentative d’obtention de l’élément sélectionné à partir de la zone de liste. Il semble, cependant, que vous ne faites qu’ajouter 2 à cet index sans tenir compte de la ligne d’en-tête de votre feuille de calcul.

    Voici ce que vous pouvez faire pour résoudre le problème :

    Envisagez d’abord de déterminer si le ListIndex est supérieur ou égal à 0 (ce qui indique qu’un élément est sélectionné) avant d’ajouter 2 au ListIndex. En procédant ainsi, vous pouvez être sûr que les lignes de votre feuille de calcul sont valides pour l’accès.

    À l’aide de l’index de ligne de droite, vous pouvez enregistrer les valeurs dans la feuille « PARAMÈTRE » après les avoir récupérées dans les colonnes de la zone de liste.

    Sinceres salutations Saurabh Mishra Équipe de support Microsoft

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire

0 réponses supplémentaires