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 ?
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