Salutation !
Private Sub UserForm_initialize()
Dim dl&, i%
( déclaration des variables ) Déclaration de variable
dl = Feuil1.Range("a" & Rows.Count).End(xlUp).Row
( dl représente l'ensemble de la colonne a )
(dl c'est une variable qui va contenir le numéro de ligne de la dernière cellule non vide
Rows.count trouve la dernière cellule de la feuille ou de la colonne
Rows.count).end(xlup) trouve la dernière cellule non vide en partant du bas de la feuille vers le haut
Rows.count).end(xlup).row ne retient que le numéro de la ligne de la derniere cellule non vide (fais abastraction de la colonne
For i = 8 To dl
Commencement d'une boucle allant du chiffre 8 à la dernière ligne non vide et qui ne s'arretera que quand la valeur de I sera = à la valeur de dl. Tant que ce n'est pas le cas, j'applique ce qu'il y a en dessous de for jusqu'à "next"
With Feuil1
If .Range("b" & i) <> "" Then ComboBox1.AddItem .Range("b" & i)
( Si L'ensemble de la colonne b se modifie Alors la combobox reprend la valeur de la colonne b )
Si la cellule b8 (i= 8 lors de la première itération de la boucle) est différent de rien alors j'ajoute à mon combobox la cellule b8
End With
Next Next signifie le prochain i. Next incrémente de 1 la valeur de i. Au début de la boucle, on donne 8 comme valeur à I. Vu qu'avec next on augmente i de 1, désormais i = 9 et la macro se replace juste en dessous " For i =..." puis elle recommence sont traitement "si la cellule b & i donc (B9 car i = 9) est different de rien alors je l'ajoute à mon combobox sinon si c'est égale à rien je ne fais rien...
End Sub
En espérant avoir pu éclaircir vos interrogations