Const xlFunction = "=IFERROR(VLOOKUP(A2,Feuil2!Adr1,2,FALSE), IFERROR(VLOOKUP(Feuil1!A2,Feuil3!Adr2,2,FALSE),""""))"
Sub Recup()
Dim adr1 As String, adr2 As String
'Récupérer les adresses de plage sur feuil2 et feuil3
adr1 = Feuil2.Range("A2:B" & Feuil2.Cells(Rows.Count, 1).End(xlUp).Row).Address
adr2 = Feuil3.Range("A2:B" & Feuil3.Cells(Rows.Count, 1).End(xlUp).Row).Address
'Mettre la formule dans Feuil1
With Feuil1.Range("B2:B" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row)
.Formula = Replace(Replace(xlFunction, "Adr1", adr1), "Adr2", adr2)
'Boucler le temps de recalcul de la feuille
'(pas forcément necessaire si peu de données ou pas d'autre longs calculs dans le classeur)
Do
Loop Until Application.CalculationState = xlDone
.Value = .Value 'Ne laisser que les valeurs
End With
End Sub