Espace pile insuffisant (Erreur 28)
La pile est une zone de travail en mémoire qui croît et diminue de manière dynamique en fonction des demandes de votre programme en cours d’exécution. Causes et solutions pour cette erreur :
Vous avez trop d’appels de procédure Function, Sub ou Property actifs. Vérifiez que les procédures ne sont pas imbriquées trop profondément. Ceci est particulièrement valable pour les procédures récursives, c'est-à-dire les procédures qui s'appellent elles-mêmes. Assurez-vous que les procédures récursives se terminent correctement. Utilisez la boîte de dialogue Appels pour afficher les procédures actives (sur la pile).
Vos variables locales nécessitent davantage d’espace de variables locales que ce qui est disponible.
Essayez plutôt de déclarer des variables au niveau de module. Vous pouvez également déclarer toutes les variables dans la procédure comme étant statiques en faisant précéder le mot clé Property, Sub ou Function du mot Static. Ou vous pouvez utiliser l'instruction Static pour déclarer certaines variables Static dans des procédures.
Vous avez trop de chaînes de longueur fixe. Les chaînes de longueur fixe dans une procédure sont accessibles plus rapidement, mais elles utilisent davantage d'espace de pile que les chaînes de longueur variable car les données de chaîne proprement dites sont placées sur la pile. Essayez de redéfinir certaines de vos chaînes de longueur fixe en tant que chaînes de longueur variable. Lorsque vous déclarez des chaînes de longueur variable dans une procédure, seul le descripteur de chaîne (et non les données elles-mêmes) est placé sur la pile. Vous pouvez également déclarer la chaîne au niveau module, où elle ne requiert aucun espace de pile. Les variables déclarées au niveau module étant Public par défaut, la chaîne est visible par toutes les procédures du module.
Vous avez trop d’appels de fonction DoEvents imbriqués. Utilisez la boîte de dialogue Appels pour afficher les procédures actives sur la pile.
Votre code a déclenché une cascade d'événements. Une cascade d'événements est due au déclenchement d'un événement qui appelle une procédure événementielle qui se trouve déjà sur la pile. Cette cascade s’apparente à un appel de procédure récursive inachevé, mais elle est moins évidente car l’appel est effectué par Visual Basic plutôt que par un appel explicite dans votre code. Utilisez la boîte de dialogue Appels pour afficher les procédures actives (sur la pile).
Pour afficher la boîte de dialogue Appels , sélectionnez le bouton Appels à droite de la zone Procédure dans la fenêtre Déboguer ou choisissez la commande Appels . Pour plus d’informations, sélectionnez l’élément en question et appuyez sur F1 (sur Windows) ou AIDE (sur Macintosh).
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.