Private Sub UserForm_Initialize() 'à l'intialisation d la ComboBox1
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
Me.ComboBox1.List = .Range("D4:D" & .Cells(Application.Rows.Count, 4).End(xlUp).Row).Value 'alimente dynamiquement la Combobox1
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub
Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim r As Range 'déclare la variable r (Recherche)
Dim ld As Integer 'déclare la variable ld (Ligne de Départ)
Dim lf As Integer 'déclare la variable lf (Ligne de Fin)
Dim i As Integer 'déclare la variable i (incrément)
Me.ListBox1.Clear 'vide la ListBox1
ld = 0 'initialise la variable ld
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
lf = .Cells(Application.Rows.Count, 8).End(xlUp).Row 'définit la ligne de fin
Set r = .Columns(8).Find(Me.ComboBox1.Value, , xlValues, xlWhole) 'définit la recherche
If Not r Is Nothing Then 'condition : si il existe au moins une occurrence
ld = r.Row + 1 'définit la ligne de départ
For i = ld To lf 'boucle de la ligne de départ à la ligne de fin
If .Cells(i, 8).Interior.ColorIndex = 36 Then Exit Sub 'si la couleur de la cellule est "jaune clair", sort de la procédure
Me.ListBox1.AddItem .Cells(i, 8) 'ajoute la valeur de la cellule en colonne H à la ListBox1
Next i 'prochaine ligne de la boucle
Else 'sinon
MsgBox "Région non trouvée !" 'message
End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "Feuil1"
End Sub