Function RechvMult2(clé As Range, champ As Range, colResult)
'---- retour des occurences dans plusieurs colonnes
Application.Volatile
ncol = Application.Caller.Columns.Count
Set d = CreateObject("Scripting.Dictionary")
a = champ.Value
b = clé.Value
For i = LBound(a) To UBound(a)
If d.exists(a(i, 1)) Then
d(a(i, 1)) = d(a(i, 1)) & " : " & a(i, colResult)
Else
d(a(i, 1)) = a(i, colResult)
End If
Next i
Dim temp()
ReDim temp(LBound(b) To UBound(b), 1 To ncol)
For i = LBound(b) To UBound(b)
tmp = d(b(i, 1))
tbl = Split(tmp, ":")
For k = LBound(tbl) To UBound(tbl)
If k <= ncol - 1 Then temp(i, k + 1) = tbl(k)
Next k
Next i
If ncol > 1 Then RechvMult2 = temp Else RechvMult2 = Application.Transpose(temp)
End Function