Sub NewID()
Dim chemin$, fichier$, d As Object, tablo, i&, x$
chemin = ThisWorkbook.Path & "\" 'dossier à adapter éventuellement
fichier = Dir(chemin & "*.xlsx") '1er fichier .xlsx du dossier
'---liste concaténée sans doublon---
Set d = CreateObject("Scripting.Dictionary")
tablo = [A1].CurrentRegion.Resize(, 4) 'matrice, plus rapide
For i = 2 To UBound(tablo)
d(tablo(i, 2) & Chr(1) & tablo(i, 3)) = tablo(i, 4) 'mémorise le dernier NewId trouvé
Next i
'---traitement des fichiers---
Application.ScreenUpdating = False
While fichier <> ""
With Workbooks.Open(chemin & fichier).Sheets(1) 'ouvre le fichier
tablo = .Cells(1).CurrentRegion.Resize(, 3) 'matrice, plus rapide
For i = 2 To UBound(tablo)
x = tablo(i, 2) & Chr(1) & tablo(i, 3)
If d.exists(x) Then tablo(i, 3) = d(x) 'NewID quand il existe
Next i
.Cells(1, 3).Resize(UBound(tablo)) = Application.Index(tablo, , 3) 'restitue la 3ème colonne
.Parent.Close True 'enregistre et ferme le fichier
End With
fichier = Dir 'fichier suivant du dossier
Wend
End Sub