Bonjour,
J'ai gardé la même syntaxe :
Function RechTous(v, champRech As Range, ChampRetour As Range)
Dim dict, rech, ret
Dim i As Long
rech = champRech.Value
ret = ChampRetour.Value
Set dict = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(rech)
If rech(i, 1) = v Then dict(ret(i, 1)) = dict(ret(i, 1)) + 1
Next i
dict = dict.keys
For i = 0 To UBound(dict)
RechTous = RechTous & ", " & dict(i)
Next i
RechTous = Mid(RechTous, 2)
End Function
Mais ce sont des très gros tableaux un sub sera plus rapide plutôt que d'appeler 1000 fois la fonction qui balaye 1000 fois les 1000 lignes.
eric