Monsieur Excel
Pour tout savoir faire sur Excel !

20 février 2016

Un bug de macro enregistrée...

Nous l’avons déjà dit à plusieurs reprises dans ce blog, il y a depuis toujours dans Excel des bugs liés aux macros enregistrées. Mais la situation empire version après version, car de nombreuses nouvelles ou récentes fonctionnalités d’Excel ne sont pas intégrées aux macros enregistrées.

Un très bel exemple de dysfonctionnement de l’enregistrement de macro vous a déjà été fourni dans l’article « ″Convertir en plage″ en VBA » du 26 octobre 2009. Dans ce cas, on voit que la macro enregistrée a totalement ignoré une commande pourtant enregistrée apparemment sans problème.

Par ailleurs, le code des macros enregistrées est très souvent abusivement verbeux. Nous en avons vu un exemple notable dans l’article du 12 juillet 2013 où la macro enregistrée faisait 53 lignes (et en plus ne marchait pas quand on la rejouait !) là où deux lignes auraient suffi.

En conclusion, il y a trois types de problèmes : certaines commandes ne s’enregistrent pas, le code est très verbeux, et enfin la macro – quand on l’exécute – ne fait pas la même chose que lors de son enregistrement…

Voici une série d’articles illustrant chacun les deux derniers problèmes :

7 juillet 2013 – Bug de la validation par liste : une validation par liste avec une liste d’options proposée en direct ne fonctionne plus quand on exécute la macro.

12 et 17 juillet 2013 – Bug dans la mise en page : la définition d’un pied de page ne marche plus quand on exécute la macro enregistrée.

27 juillet 2013 – Un bug dans la MAJ de dates : la conversion de dates ne fonctionne plus quand on exécute la macro enregistrée.

Vous trouverez une récapitualition d’un certain nombre de problèmes dans :
Les divers bugs des macros enregistrées – 2 août 2013

Je suis tombé récemment sur un nouveau bug de macro enregistrée. On enregistre une macro pour donner à une cellule un format conditionnel. Vous trouverez ci-dessous la macro enregistrée, ainsi la macro écrite à la main qui – elle – fonctionne parfaitement bien.


Quand on exécute la macro enregistrée, elle bloque sur l’instruction ExecuteExcel4Macro. On a bien du mal à comprendre ce que cette instruction vient faire ici, d’autant plus qu’elle « plante » la macro lors de l’exécution.