Re,
Cela prend du temps pour plusieurs raisons:
1 - le remplacement se fait cellule par cellule,
2 - à chaque fois la feuille (et/ou le classeur suivant le cas) est recalculée.
Avant ré-écriture de la formule ou remplacement, mettre
Application.Calculation = xlCalculationManual
et à la fin, son petit suivant:
Application.Calculation = xlCalculationAutomatic
Pour ré-écrire la formule en une fois:
Cells.FormulaLocal = "=SI(C5099<>"";INDEX('L:\Chiffrages\[Code profilés.xls]Accessoires'!$A:$IV;EQUIV(C5099;'L:\Chiffrages\[Code profilés.xls]Accessoires'!$A:$A;0);2);"") "
Si ça ne fonctionne pas, sélectionnez la première cellule qui contient la formule( sans erreur ou corrigez là manuellement),
Dans l'éditeur VBA, ouvrez la fenêtre d'éxécution (CTRL+G) si ce n'est déjà fait
tapez: ?Activecell.FormulaR1C1 puis validez
la fenêtre d'éxécution vous affichera une ligne du style (ce n'est qu'un exemple):
=VLOOKUP("M307_10 - Total",R[2]C[-1]:R[496]C[8],9,FALSE)
Copiez la ligne et vous n'aurez plus qu'à faire:
Cells.FormulaR1C1 = "=....."
Où .... est la ligne de formule que vous aura donné la fenêtre exécution.
PS: si la formule contient des apostrophes, doublez-les. Par ex pour la formule ci-dessus:
Cells.FormulaR1C1 = "=VLOOKUP(""M307_10 - Total"",R[2]C[-1]:R[496]C[8],9,FALSE)"
cordialement