Private Sub ComboBox1_Change()
Dim P As Range, x$, tablo, d As Object, i&, a, b()
Set P = Intersect(Range("A9:A" & Rows.Count), UsedRange)
If P Is Nothing Then ComboBox1.Clear: ComboBox1 = "": Exit Sub
If ComboBox1.ListIndex > -1 Then Union(P(0), P).AutoFilter 1, ComboBox1: Exit Sub 'filtre automatique
'---recherche intuitive---
x = ComboBox1 & "*"
tablo = P.Resize(P.Count + 1) 'matrice, plus rapide, au moins 2 éléments
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
If tablo(i, 1) <> "" And tablo(i, 1) Like x Then d(tablo(i, 1)) = ""
Next
If d.Count = 0 Then ComboBox1.Clear: ComboBox1 = "": Exit Sub
ComboBox1.List = d.keys
If FilterMode Then ShowAllData 'si la feuille est filtrée
ComboBox1.DropDown 'déroule la liste
End Sub