Comme vous travaillez dans Excel, il y a un peu de «filet de sécurité» en place en ce qui concerne les changements que vous apportez. La plupart des gens savent que s’ils gâchent les choses, ils peuvent rapidement appuyer sur Ctrl + Z ou choisir la commande Annuler dans le menu Edition ou en utilisant l’outil Annuler de la barre d’outils. Si vous n’aimez pas ce que vous venez de faire, vous pouvez facilement l’annuler et revenir à la façon dont les choses étaient avant.

Lorsque vous exécutez une macro, cependant, la macro ne «joue pas bien» avec la liste Annuler. En fait, l’exécution d’une macro efface complètement la liste Annuler et vous ne pouvez donc pas annuler automatiquement les effets de l’exécution de la macro. Il n’y a pas de commande intrinsèque – dans Excel ou dans VBA – pour conserver la liste Annuler. Cependant, il existe plusieurs façons d’aborder le problème.

Si vous pensez vouloir annuler les effets d’une macro, la première chose que vous pouvez faire est d’enregistrer votre classeur avant d’exécuter la macro. Cela vous donne en effet une version « pré-macro » du classeur.

Si vous souhaitez revenir ultérieurement à cette version, fermez simplement le classeur sans enregistrer, puis rechargez-le à partir du disque.

Une autre option consiste à repenser la façon dont vous faites vos macros. Si vous avez une macro qui traite beaucoup d’informations dans votre feuille de calcul, codez la macro afin qu’elle conserve, en mémoire, l’état de tout ce qu’elle change. Vous pouvez ensuite créer une macro distincte qui lit ces informations et annule efficacement les effets de la première macro.

Pour rendre cette approche vraiment pratique, la dernière étape de votre macro principale peut être de « bourrer » les informations sur la pile d’annulation. Cette information peut ensuite être utilisée, mais l’utilisateur, pour « annuler » la macro que vous avez créée. Par exemple, la macro-commande suivante pourrait être la dernière de votre macro principale:

Application.OnUndo "Primary Macro", "UndoPrimary"

Après cette commande, lorsque l’utilisateur regarde la liste d’annulation, il ou elle verra le texte «Macro primaire». S’ils choisissent cette option dans la liste Annuler, alors votre macro « Annuler » (UndoPrimary) est exécutée.

Vous devez noter que cette approche n’enregistre pas ce qui était sur la liste Annuler avant d’exécuter la macro – il ne semble pas possible de le faire. Lorsque votre macro principale est en cours d’exécution, il n’y aura qu’une seule option disponible dans la liste Annuler: Macro principale.

_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 (2060) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Preserving_the_Undo_List [Préservation de la liste d’annulation].