Sub Affectation()
Dim feuille$, form$, tablo, d As Object, i&
feuille = "Nouveau Cas emploi" 'modifiable
form = "='" & ThisWorkbook.Path & "\[Nouvelle_Gamme.xlsx]" & feuille & "'!"
Application.ScreenUpdating = False
[P4:P11834].FormulaArray = form & "I4:I11834" 'formule de liaison matricielle
[Q4:Q11834].FormulaArray = form & "D4:D11834" 'formule de liaison matricielle
[R4:R11834].FormulaArray = form & "J4:J11834" 'formule de liaison matricielle
tablo = [P4:R11834] 'matrice, plus rapide
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
d(tablo(i, 2) & tablo(i, 3)) = tablo(i, 1) 'mémorise la 1ère colonne
Next
[P4:R11834].ClearContents 'RAZ
With ActiveSheet.UsedRange: End With 'actualise la barre de défilement verticale
With [A1].CurrentRegion.Resize(, 15)
tablo = .Value 'matrice, plus rapide
For i = 2 To UBound(tablo)
tablo(i, 15) = d(tablo(i, 3) & tablo(i, 12)) 'récupération
Next
.Columns(15) = Application.Index(tablo, , 15) 'restitution
End With
End Sub