Microsoft 365 Espace pile insuffisant

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonjour le forum,

La macro ci dessous plante mon PC elle génère l'erreur suivante " Espace de pile insuffisant",
auriez vous une idée, peut être une question de variables, mais je ne sais pas l'écrire différemment, pourriez vous m'aider svp

merci beaucoup

sur la feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Feuil2").Range("C31").Value = Worksheets("Feuil1").Range("G13").Value
If Worksheets("Feuil1").Range("G10").Value = "LMNP" Then
Worksheets("Feuil1").Range("G14").Value = "non"
Else
Worksheets("Feuil1").Range("G14").Value = "oui"
End If
End Sub
 
Solution
Bonjour,
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents=False 'Inhibe les événements Excel pour éviter de boucler indéfiniment sur  Worksheet_Change 
Worksheets("Feuil2").Range("C31").Value = Worksheets("Feuil1").Range("G13").Value
If Worksheets("Feuil1").Range("G10").Value = "LMNP" Then
Worksheets("Feuil1").Range("G14").Value = "non"
Else
Worksheets("Feuil1").Range("G14").Value = "oui"
End If
Application.EnableEvents = True
End Sub
Bonjour,
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents=False 'Inhibe les événements Excel pour éviter de boucler indéfiniment sur  Worksheet_Change 
Worksheets("Feuil2").Range("C31").Value = Worksheets("Feuil1").Range("G13").Value
If Worksheets("Feuil1").Range("G10").Value = "LMNP" Then
Worksheets("Feuil1").Range("G14").Value = "non"
Else
Worksheets("Feuil1").Range("G14").Value = "oui"
End If
Application.EnableEvents = True
End Sub
 
Bonjour @pat66 🙂 ,

Une fois que la procédure évènementielle est lancée, dans le code la procédure :
  • on modifie des cellules de la feuille (C31,G14)
  • donc la modification entraine un nouvel appel de la même procédure (sans que l'exécution du premier appel soit terminée) et un empilement (stockage temporaire) des variables de l'ancien appel pour y revenir ensuite et pouvoir la terminer
  • dans le nouvel appel, on modifie encore une fois la feuille
  • donc la modification implique un nouvel appel de la la procédure et un empilement des variables de l'appel précédent
  • et ainsi de suite jusqu'à l'infini

Comme la mémoire de la machine n'est pas infinie (hé non), on aboutit à une erreur.

Il faut entourer le code des instructions qui modifient la feuille par :
  • Application.EnableEvents = False (avant) pour "arrêter" le traitement des erreurs
  • Application.EnableEvents = True (après) pour "ré-enclencher" le traitement des erreurs

edit : bonjour @dysorthographie 😉,
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
2
Affichages
406
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Réponses
3
Affichages
599
Réponses
13
Affichages
491
Retour