Mettre mes formules en VBA pour protection

Bonjour à Tous,

J'essai de trouver de mettre mes formules en VBA, pour ne pas que l'utilisateur efface les formules par mégarde.

J'ai essayé avec ce code trouvé sur le Forum:

Private Sub Worksheet_Change(ByVal Target As Range)
Range("AO3").FormulaLocal = "=SIERREUR(INDEX(Codes;EQUIV($W$3;Pièces;0));"")"
Range("AA6").FormulaLocal = "=SIERREUR(INDEX(Ivara;EQUIV($W$3;Pièces;0));"")"
Range("W8").FormulaLocal = "=SIERREUR(INDEX(Descript;EQUIV($W$3;Pièces;0));"")"
Range("W11").FormulaLocal = "=SIERREUR(INDEX(Loca;EQUIV($W$3;Pièces;0));"")"
Range("AC11").FormulaLocal = "=SIERREUR(INDEX(Fab;EQUIV($W$3;Pièces;0));"")"
Range("AK11").FormulaLocal = "=SIERREUR(INDEX(UM;EQUIV($W$3;Pièces;0));"")"
End Sub

Mais ça ne fonctionne pas.

Mais fonctionne dans la cellule directe.

Je joins mon fichier.

Merci

Jean

7formule-vba.xlsm (30.93 Ko)

Bonjour Jean,

il faut doubler les guillemets, et surtout désactiver temporairement les événements pour éviter que le changement d'une cellule active la macro sans fin

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Range("AO3").FormulaLocal = "=SIERREUR(INDEX(Codes;EQUIV($W$3;Pièces;0));"""")"
Range("AA6").FormulaLocal = "=SIERREUR(INDEX(Ivara;EQUIV($W$3;Pièces;0));"""")"
Range("W8").FormulaLocal = "=SIERREUR(INDEX(Descript;EQUIV($W$3;Pièces;0));"""")"
Range("W11").FormulaLocal = "=SIERREUR(INDEX(Loca;EQUIV($W$3;Pièces;0));"""")"
Range("AC11").FormulaLocal = "=SIERREUR(INDEX(Fab;EQUIV($W$3;Pièces;0));"""")"
Range("AK11").FormulaLocal = "=SIERREUR(INDEX(UM;EQUIV($W$3;Pièces;0));"""")"
Application.EnableEvents = True
End Sub

Bonjour sabV,

Ça fonctionne très bien.

Un GROS MERCI, encore une fois.

Jean

Rechercher des sujets similaires à "mettre mes formules vba protection"