Private Sub UserForm_Initialize()
Dim i As Long, t, m As Long, N As Long, doublon As Boolean
'lecture des valeurs de la colonne B
With Sheets("Feuil1")
t = .Range("b2:b" & .Cells(.Rows.Count, "b").End(xlUp).Row).Value
End With
' on groupe en haut du tableau les valeurs non vides
' et qui ne sont pas doublons
For i = 1 To UBound(t)
If t(i, 1) <> "" Then 'il faut que la valeur ne soit pas vide
'recherche de la même valeur dans les lignes
'au dessus de la ligne i qu'on traite
doublon = False 'indicateur de doublon à FAUX
For m = 1 To N
'si c'est un doublon, alors on met doublon à VRAI
If t(m, 1) = t(i, 1) Then doublon = True: Exit For
Next m
'si t(i,1) est rencontré pour la première fois (doublon = False) alors
'on incrémente le compteur des valeurs sans doublon N
'et on stocke à la ligne N la nouvelle valeur trouvée en i
If Not doublon Then N = N + 1: t(N, 1) = t(i, 1)
End If
Next i
'on remplit la combobox1 avec les N valeurs sans doublons stockées en haut de t
For i = 1 To N: ComboBox1.AddItem t(i, 1): Next i
End Sub
Private Sub ComboBox1_Change()
Dim t, v, i As Long
TextBox2 = "" 'RAZ de combobox1
'lecture dec colonnes "Id-client" et "Reste Impayé"
With Sheets("Feuil1")
t = .Range("b2:b" & .Cells(.Rows.Count, "b").End(xlUp).Row).Value
v = .Range("k2").Resize(UBound(t)).Value
End With
If ComboBox1.ListIndex > -1 Then
'si la combobox affiche un de ses élément alors on boucle sur la tableau t
'à partir de la fin du tableau à la recherche de l'identité affichée par la combobox1
For i = UBound(t) To 1 Step -1
'quand on trouve cette identité, on renvoie la valeur de l'impayé de la même ligne
If CStr(t(i, 1)) = CStr(ComboBox1.Value) Then TextBox2 = v(i, 1): Exit For
Next i
End If
End Sub