Private Sub UserForm_Activate()
Sheets("Donnees").Range("I2:" & Sheets("Donnees").Range("I" & Rows.Count).End(xlUp).Offset(1, 0).Address).Clear 'effacer les critères en feuil1, colonne I
' La variable chaîne récupère les noms de service, séparés par une virgule
tabl = "" ' Initialise la variable chaîne
With ListBox1 ' Les actions suivantes s'appliquent à la liste déroulante
.Height = 12 ' Initialisation de la hauteur du contrôle ListBox1 à 12
For n = 2 To Feuil1.Range("B" & Rows.Count).End(xlUp).Row ' Boucle qui lit les cellules de la colonne B
If InStr(tabl, Feuil1.Cells(n, 2).Value) = 0 Then ' Si le nom dans la cellule en cours de lecture n'est pas encore stocké dans tabl
tabl = tabl & "," & Feuil1.Cells(n, 2).Value ' Elle s'y inscrit à la suite
.AddItem Feuil1.Cells(n, 2).Value ' et elle s'ajoute dans la liste déroulante
' La condition suivante teste la position en pixels du bas de la liste déroulante
' Si elle est inférieure au bas du formulaire - 40, la hauteur de la liste augmente de 12 points
' (Si le nombre d'éléments de la liste augmente, les flèches de défilement verticales s'affichent)
If .Top + .Height < UserForm1.Height - 40 Then
.Height = .Height + 12 ' augmente la hauteur de la liste de 12 points
End If
End If
Next
End With
End Sub