Re,
Une porposition de code pour l'UserForm :
Private TC As Variant 'déclare la variable TC (Tableau de Cellules)
Private NL As Integer 'déclare la variable NL (Nombre de Lignes)
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Feuil2") 'définit l'onglet O2
DL = O2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O2
TC = O1.Range("A1").CurrentRegion 'définit le tableau de cellules TC
NL = UBound(TC, 1) 'définit le nombre de ligne NL du tableau de cellule TC
Me.ComboBox1.List = O2.Range("A2:A" & DL).Value 'alimente dynamiquement la ComboBox1
End Sub
Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim I As Integer 'déclare la variable I (Incrément)
Dim D As Date 'déclare la variable D (Date)
Dim DM As Date 'déclare la variable DM (Date Max)
For I = 2 To NL 'boucle sur toutes les ligne I du tableau de cellule TC (en partant de la seconde)
'condition : si la valeur (convertie en texte) ligne I colonne 1 de TC est égale à la valeur de la ComboBox1
If CStr(TC(I, 1)) = Me.ComboBox1.Value Then
D = DateSerial(Year(TC(I, 2)), Month(TC(I, 2)), Day(TC(I, 2))) 'définit la date D de la valeur ligne I colonne 2 de TC
If D > DM Then DM = D 'si D est supérieur à DM alors Dm devient D
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Me.TextBox1.Value = IIf(D = 0, "Pas de date", DM) 'définit la valeur de la TetxBox1
End Sub