Chez moi la formule suivante en VBA fonctionne
Sheets("DOC").Cells(1, 4).FormulaLocal = "=RECHERCHEV('DOC'!B1;" & nom_histo & "!A:B;2;FAUX)"
En effet, pourquoi utilises-tu
Sheets("DOC").Cells(1, 4).FormulaLocal = "=RECHERCHEV(" & Sheets("DOC").Cells(1, 2) & ";" & nom_histo & "!A:A;2;FAUX)"
et pas directement
Sheets("DOC").Cells(1, 4).FormulaLocal = "=RECHERCHEV('DOC'!B1;" & nom_histo & "!A:A;2;FAUX)"
???
Tu rends tes formules statiques avec ta premiere formule !!!!!
PS: Si c'est le fait de déterminer le "B1" qui te gène, tu peux très bien utiliser une astuce:
Dim maCellule as Range
Set maCellule = Cells(1,2)
' pour obtenir B1, il suffit d'utiliser maCellule.Address qui renverrai B1 ou $B$1 je ne sais plus ^^