Symptômes
Dans Microsoft Office Excel, le code de macro Microsoft Visual Basic pour Application (VBA) qui se trouve « derrière » une feuille de calcul ou un classeur peut ne pas fonctionner correctement.
Cause
Cela se produit si les deux conditions suivantes sont remplies :
-
Le code en question est contenu dans une sous-routine en cours d’exécution automatique, telle qu’une Auto_Open ou Auto_Close sous-routine.
-
Le code n’est pas contenu dans un module Visual Basic, mais « derrière » une feuille de calcul ou le classeur lui-même.
Solution de contournement
Pour que les sous-routines en cours d’exécution automatique fonctionnent correctement dans Microsoft Excel, elles doivent être contenues dans un module Visual Basic.
Vous devez insérer un module Visual Basic dans le classeur, puis placer le code dans le nouveau module.
Pour insérer un module Visual Basic :
-
Dans le Explorer project dans Visual Basic Editor, activez le classeur qui contient le code en question.
-
Dans le menu Insertion, cliquez sur Module.
Une fois le nouveau module inséré, coupez le code de son emplacement d’origine et collez-le dans le module Visual Basic. Ensuite, enregistrez le classeur.
Informations supplémentaires
Dans Excel, le code VBA peut être stocké à trois emplacements différents : dans un module Visual Basic, dans un module de classe Visual Basic et dans des feuilles de calcul et des classeurs « derrière ».
Pour modifier le code « derrière » une feuille de calcul ou un classeur :
-
Activez Visual Basic Editor (appuyez sur Alt+F11).
-
Dans la fenêtre Project Explorer, des entrées similaires à celles-ci s’affichent :
VBAProject (Book1)
Microsoft Excel Objects
Sheet1 (Sheet1)
Sheet2 (Sheet2)
Sheet3 (Sheet3)
ThisWorkbook
Modules
Module1
Si vous double-cliquez sur l’un des noms de feuille de calcul ou ThisWorkbook, vous pouvez taper du code dans la fenêtre de code. Ce code non contenu dans un module Visual Basic est considéré comme « derrière » la feuille de calcul ou
Thisworkbook.
Si une Auto_Open, une Auto_Close ou une autre sous-routine en cours d’exécution automatique est stockée « derrière » une feuille de calcul ou ThisWorkbook, il se peut qu’elle ne fonctionne pas correctement lorsque vous ouvrez ou fermez votre classeur, ou lorsque vous effectuez une action qui doit entraîner l’exécution de la sous-routine.