Le code VBA « derrière » une feuille de calcul ou un classeur ne fonctionne pas dans Excel


Pour obtenir une version 97 de Microsoft Excel, voir 157346 .Pour obtenir une version 98 de Microsoft Excel, voir 182482 .

Symptômes


Dans Microsoft Office Excel, Microsoft Visual Basic pour applications (VBA) le code de macro qui se trouve « derrière » une feuille de calcul ou un classeur ne fonctionne pas correctement.

Cause


Ce problème se produit si les deux conditions suivantes sont vraies :
  • Le code en question est inclus dans une sous-routine à exécution automatique, par exemple une sous-routine de Auto_Open ou AUTO_CLOSE .
  • Le code ne se trouve pas 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 exécutées automatiquement 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 :
  1. Dans l' Explorateur de projets de Visual Basic Editor, activez le classeur contenant le code en question.
  2. Dans le menu Insertion, cliquez sur Module.
Après avoir inséré le nouveau module, coupez-le 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. Pour modifier le code à l’arrière-plan d’une feuille de calcul ou d’un classeur :
  1. Activez Visual Basic Editor (appuyez sur ALT + F11).
  2. Dans la fenêtre Explorateur de projets , des entrées similaires aux éléments suivants s’affichent :
         VBAProject (Book1)         Microsoft Excel Objects            Sheet1 (Sheet1)            Sheet2 (Sheet2)            Sheet3 (Sheet3)            ThisWorkbook                  Modules             Module1 
Si vous double-cliquez sur un nom de feuille de calcul ou sur ThisWorkbook, vous pouvez taper du code dans la fenêtre Code. Ce code qui ne figure pas dans un module Visual Basic est considéré comme « placé derrière » dans la feuille de calcul ouThisWorkbook . Si une Auto_Open, une AUTO_CLOSEou un autre sous -programme exécuté automatiquement est stocké « derrière » une feuille de calcul ou de ThisWorkbook, il est possible 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.