Re,
Range(Cells(ligne, 12), Cells(ligne, 12))
est inutile et ce n'est pas ça qui fait planter votre macro.
Cells(ligne,12)
est suffisant.
Pour le numéro de ligne, essayez : & Cstr(Ligne) &
Et croyez moi lorsque je vous dis que Formula et FormulaLocal, ne s'écrivent pas de la même façon.
Dans formulaLocal, pour nous, français il faut utiliser les termes français et le ; (point-virgule) comme séparateur alors que dans Formula, il faut utiliser les noms anglais, et la virgule comme séparateur.
C'est excel qui traduit de Formula à FormulaLocal (et Lycée de Versailles).
En lui parlant en anglais, excel saura traduire dans toutes les locales qui lui sont accessibles.
Par contre si vous utiliser FormulaLocal en Hindi dans votre VBA, il y a fort à parier que ce ne sera pas reconnu sur un pc 'français'.
Votre macro cherchera toujours à écrire en hindi une formule qu'un Formulocal Français ne peut reconnaître.
Sur un PC anglais, excel attend un formulaLocal anglais. Sur un hindi, du hindi.
Seul
.Formula en anglais est compris sur toutes les machines.
Votre première formule, mélangeait les deux , nom anglais et séparateur local (
"=IFNA(VLOOKUP(E" & ligne & ";Sheet2!A:B;2;);)"
Si vous rencontrez de nouveaux problèmes, revenez avec un classeur et vos modifications.
Cordialement