Function Concatene(critere, colrecherche As Range, colconcat As Range, separ As String) As String
Dim R As Range, tablo1, tablo2, d As Object, i&, x$
Set R = colrecherche.Parent.UsedRange.EntireRow
tablo1 = Intersect(colrecherche.EntireColumn, R).Resize(, 2)
tablo2 = Intersect(colconcat.EntireColumn, R).Resize(, 2)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo1)
If tablo1(i, 1) = critere Then
x = tablo2(i, 1)
If x <> "" And Not d.exists(x) Then
d(x) = ""
Concatene = Concatene & separ & x
End If
End If
Next
Concatene = Mid(Concatene, Len(separ) + 1)
End Function