Function F(ref As Range, plage As Range)
Dim x$, tablo, d As Object, i&, y$
x = LCase(ref) 'minuscules, pour ignorer la casse
tablo = Intersect(plage, plage.Parent.UsedRange) 'matrice, plus rapide
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(tablo)
y = LCase(tablo(i, 1))
If y = x Then d(y & Chr(1) & tablo(i, 2)) = ""
Next
F = d.Count
End Function