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 cliquer sur l’outil Annuler en haut à gauche de la fenêtre du programme. 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. Ceci, en fait, vous donne 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, par 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 consulte la liste d’annulation, il voit 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 (12513) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

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