VBA Novice-code simple-Erreur 28

Bonjour,

Je suis grande débutante en VBA et je cherchais à reproduire la fonction « si » dans une MACRO. Dans mon exemple : « si la cellule A1 =« Patate », alors la valeur de la cellule A2 est égale à 0. »
J’ai ainsi rentré le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

If Range(« A1 ») = « Patate » Then
Range(« A2 »).Value = 0
End If

End Sub

La Macro me renvoie une erreur 28 « espace pile insuffisant ». Je suppose que c’est parce que j’ai une exécution en boucle ? Est-ce que quelqu’un pourrait m’éclairer pour que j’apprenne à me sortir de ce type d’erreur ?

Merci :blush:

Bonjour
Rajoute en début cette ligne de code :

Application.EnableEvents = False

Puis en fin cette ligne de code :

Application.EnableEvents = True

Cela devrait mieux fonctionner

Dis moi

1 « J'aime »

Super merci beaucoup, ça marche. Si je comprends bien, c’est ce qui va éviter à VBA de boucler : il va ainsi exécuter la macro une seule fois.
Merci encore !

Tu utilises une procédure événementielle basée sur la modification d une cellule pour se déclencher
Or la procédure qu elle exécute modifie une cellule donc provoque automatiquement une nouvelle fois son déclenchement qui exécute celle-ci modifiant encore la cellule ainsi de suite sans fin d où le message d erreur

Il faut dans son code mettre cette ligne code qui inhibe son déclenchement lorsque celui-ci est amené à mettre à jour des cellules afin lors de cette opération qu un nouveau déclenchement ne se produise à nouveau
Une ligne de code pour remettre en service ce déclenchement doit être intégrée pour permettre le fonctionnement des procédures evennementielles et ce en fin du code de cette procédure

Voilà pour les explications

N oublies de valider ma réponse un plus sympathique

1 « J'aime »

Merci, C’est très clair :blush:

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.