Sub test()
T1 = Timer
Dim Dico As Object
Set Dico = CreateObject("Scripting.Dictionary")
Dim t() As Variant
t = Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 3))
ReDim Preserve t(LBound(t, 1) To UBound(t, 1), LBound(t, 1) To 4)
Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 3)).Interior.ColorIndex = xlNone
Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 3)).Offset(, 3).Resize(, 1).ClearContents
Dim i As Long
For i = LBound(t, 1) To UBound(t, 1)
Dico(CDbl(t(i, 1))) = t(i, 2)
Next i
i = Empty
For i = LBound(t, 1) To UBound(t, 1)
If Dico.exists(t(i, 3)) Then
t(i, 4) = Dico.Item(CDbl(t(i, 3)))
End If
Next i
Cells(2, 5).Resize(UBound(t, 1), 1).Value = Application.Index(t, , 4)
MsgBox "Terminé en " & Round(Timer - T1, 2) & " sec."
End Sub