Option Explicit
Sub Degoter()
Dim dico As New Dictionary, datader&, data
Dim resultder&, result, i&, clef, deb
deb = Timer: Application.ScreenUpdating = False
Set dico = CreateObject("scripting.dictionary")
dico.CompareMode = 1 'textcompare
If Me.FilterMode Then Me.ShowAllData
datader = Cells(Rows.Count, "a").End(xlUp).Row
data = Cells(1, "a").Resize(datader, 3)
Range("j2:j" & Rows.Count).ClearContents
resultder = Cells(Rows.Count, "i").End(xlUp).Row
result = Cells(1, "i").Resize(resultder, 2)
For i = 2 To UBound(data): dico(data(i, 1)) = dico(data(i, 1)) & " " & data(i, 3): Next
For Each clef In dico: dico(clef) = Trim(dico(clef)): Next
For i = 2 To UBound(result): result(i, 2) = dico(result(i, 1)): Next
Cells(1, "i").Resize(UBound(result), UBound(result, 2)) = result
MsgBox Format(Timer - deb, "0.00"), vbInformation
End Sub