1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
Function RechvMult2(clé As Range, champ As Range, colResult)
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))
x = Split(tmp, ":")
For k = LBound(x) To UBound(x)
temp(i, k + 1) = x(k)
Next k
Next i
If ncol > 1 Then RechvMult2 = temp Else RechvMult2 = Application.Transpose(temp)
End Function |
Partager