Option Explicit 'oblige a déclarer toutes les variables
Private TV As Variant 'déclare la variableTV (Tableau des Valeurs)
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim I&, X&
TV = Feuil1.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV)
X = Application.Match(TV(I, 2), Application.Index(TV, 0, 2), 0)
If X = I Then ComboBox1.AddItem TV(I, 2)
Next
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(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partante de la seconde)
'si la donnée ligne I colonne 2 de TV est égale à la valeur de la ComboBox1 ajoute la donnée ligne I colonne 1 à la ComboBox2
If TV(I, 2) = Me.ComboBox1.Value Then Me.ComboBox2.AddItem TV(I, 1)
Next I 'prochaine ligne de la boucle
If Me.ComboBox2.ListCount = 1 Then Me.ComboBox2.ListIndex = 0 'si la ComboBox2 ne contient qu'u seul élément celui-ci s'affiche par défaut
End Sub