1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Private TP As Worksheet 'déclare la variable TP (onglet TestProduits)
Private TC As Worksheet 'déclare la variable TC (onglet TestClients)
Private TdP As Variant 'déclare la variable TdP (Tableau des Produits)
Private TdC As Variant 'déclare la variable TdC (Tableau des Clients)
Dim Enregistrement_Courant As Long ' Enregistrement en cours
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Set TP = Sheets("testproduits") 'définit l'onglet TP
Set TC = Sheets("testclients") 'définit l'onglet TC
TdP = TP.Range("A1").CurrentRegion 'définit le tableau des produits TdP
TdC = TC.Range("A1").CurrentRegion 'définit le tableau des clients TdC
Me.ComboBox2.ColumnCount = 2 'définit le nombre de colonnes de la ComboBox2
Me.ComboBox2.ColumnWidths = ";0" 'masque la seconde colonne de la ComboBox2
Me.ComboBox1.List = Application.Index(TdP, , 1) 'alimente la ListBox1 avec la première colonne du tableau des produits TdP
Me.ComboBox1.RemoveItem (0) 'supprime de la ComboBox1 l'étiquette "Code produit"
End Sub
Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim I As Integer 'déclare la variable I (Incrément
Me.ComboBox2.Clear 'vide la ComboBox2
For I = 2 To UBound(TdC, 1) 'boucle sur toutes les lignes I du tableau des clients TdC (en partant de la seconde)
If TdC(I, 1) = Me.ComboBox1.Value Then 'condition : si la donnée ligne I colonne 1 de TdC est égale à la valeur de la ComboBox1
With Me.ComboBox2 'prend en compte la ComboBox2
.AddItem TdC(I, 2) 'ajoute la donnée ligne I colonne 2 de TdC dans la première colonne de la ComboBox2 (colonne 0)
.Column(1, .ListCount - 1) = I 'place le numéro de la ligne dans la seconde colonne cachée (colonne 1)
End With 'fin de la prise en compte de la ComboBox2
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub
Private Sub ComboBox2_Change() 'au changement dans la ComboBox2
Dim LI As Integer 'déclare la variable LI (LIgne)
With Me.ComboBox2 'prend en compte la ComboBox2
LI = .Column(1, .ListIndex) 'définit la variable LI (récupère la valeur dans la seconde colonne cachée de la ComboBox2)
End With 'fin de la prise en compte de la ComboBox2
For I = 1 To 5 'boucle sur les 5 TextBoxes
Me.Controls("TextBox" & I).Value = TdC(LI, I + 2) 'récupère la donnée ligne LI colonne I + 2 tu tableau des clients TdC
Next I 'prochaine Textbox de la boucle
End Sub |
Partager