Sub TestMAJ()
Dim dlig As Object, dcol As Object, liste$, tablo, i&, x$, L%, y$, formule$
Set dlig = CreateObject("Scripting.Dictionary")
Set dcol = CreateObject("Scripting.Dictionary")
liste = "Tab_ListeOrigine"
tablo = Evaluate(liste).Resize(, 2) 'matrice, plus rapide
For i = 1 To UBound(tablo)
x = tablo(i, 1)
If x <> "" Then
L = Len(CStr(Val(x)))
y = Mid(x, L + 2, 2)
dlig(Left(x, L) & "#" & Mid(x, L + 4)) = ""
dcol(y) = ""
End If
Next
'---restitution---
Application.ScreenUpdating = False
With [Tab_Result].ListObject 'tableau structuré
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete xlUp 'RAZ
If .ListColumns.Count > 1 Then .Range.Columns(2).Resize(, .ListColumns.Count - 1).Delete xlToLeft
If dcol.Count Then .Range(1, 2).Resize(, dcol.Count) = dcol.keys 'en-têtes
If dlig.Count Then .Range(2, 1).Resize(dlig.Count) = Application.Transpose(dlig.keys) 'Transpose est limitée à 65536 lignes
formule = "=IFERROR(VLOOKUP(SUBSTITUTE([@CODE],""#"",""-""&" & .Range(1, 2).Address(1, 0) & ")," & liste & ",2,0),"""")"
If dlig.Count * dcol.Count Then .Range(2, 2).Resize(dlig.Count, dcol.Count) = formule
End With
End Sub