Les macros fonctionnent bien individuellement, mais pas collectivement (Microsoft Excel)
Guillermo a une série de macros qu’il exécute régulièrement, et quand il exécute chacune d’elles manuellement, elles fonctionnent bien. Il a essayé de placer toutes les macros dans une macro « RunAll » (il n’a donc qu’à exécuter une macro au lieu de six macros individuelles) et maintenant l’une d’elles ne fonctionne pas correctement. Lorsqu’il exécute la macro RunAll, il obtient une erreur indiquant qu’une cellule est protégée et en lecture seule. Cependant, il n’y a aucune protection sur la feuille, et s’il exécute les macros individuellement, il n’obtient pas l’erreur.
Il va sans dire que la macro qui s’exécute correctement individuellement mais pas en conjonction avec les autres rencontre quelque chose qui l’empêche de fonctionner correctement. Cela signifie probablement qu’une macro s’exécute avant de quitter le classeur dans un état différent de celui dans lequel elle serait si vous exécutiez les macros individuellement.
Par exemple, si la macro qui se comporte mal est la troisième de la série à exécuter, vérifiez les deux premières macros pour voir ce qu’elles font. Modifient-ils les cellules sélectionnées? Modifient-ils la feuille de calcul active? Modifient-ils les conditions attendues par la troisième macro? Chacun de ces éléments pourrait empêcher la troisième macro de fonctionner correctement.
C’est la deuxième suggestion – concernant la feuille de calcul active – qui est le scénario le plus probable. Lorsque vous exécutez la macro individuellement, il y a de bonnes chances que vous l’exécutiez avec une feuille de calcul particulière active. Les autres macros, cependant, peuvent modifier la feuille de calcul active en une autre et cette feuille de calcul différente peut être celle à laquelle la protection est appliquée.
La solution est de vérifier chaque macro pour s’assurer qu’elle enregistre les informations de localisation (feuille de calcul, cellule active, cellules sélectionnées, etc.)
avant d’apporter des modifications à l’un de ceux-ci. Une fois enregistrés, il est facile de les restaurer à la fin de la macro.
Si cela ne le fait toujours pas, vous devrez peut-être effectuer un débogage. Dans la macro «RunAll», utilisez l’éditeur VBA pour établir un point d’arrêt sur la ligne qui appelle la macro en échec. Vous pouvez ensuite utiliser le « Step Into »
pour entrer dans la macro et examiner où l’échec se produit. Portez une attention particulière à la feuille de calcul et aux cellules que la macro tente de modifier, puis voyez si vous pouvez comprendre ce qui se passe avec les macros précédentes pour mener à cette feuille de calcul et à ces cellules. Vous pouvez utiliser l’une des lignes suivantes dans la fenêtre Exécution pour voir où vous vous trouvez:
? ActiveSheet.Name ? ActiveCell.Address
Bien que la recherche de ces types d’erreurs puisse être un défi, la lumière au bout du tunnel est que vous vous retrouverez avec une macro « RunAll » parfaitement fonctionnelle qui peut vous faire gagner beaucoup de temps.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (12710) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.