<p><strong>Ce qui s’est passé :</strong> J’ai ouvert une macro ce matin pour travailler à son extension. Je l’ai exécutée pour vérifier qu’elle fonctionnait encore. Elle a lancé une “erreur d’automatisation”.</p>
<p>[note annexe](J’ai toujours été habitué à voir mes variables globales dans ma fenêtre de variables locales. Dans un joli onglet déroulant sous le nom du module. Il s’avère que cela ne se produit que quand vous les déclarez publiquement dans le module que vous consultez. Je ne le savais pas, et ma nouvelle macro a toutes mes variables publiques dans leur propre module séparé)[retour]</p>
<p>Donc, j’ai débogué mon code, j’ai cherché pourquoi cet objet feuille de calcul lançait une erreur et j’ai vu : <code><No Variables></code> dans ma fenêtre de variables locales là où mes variables publiques étaient toujours auparavant. Naturellement, j’ai paniqué. J’ai supposé que le programme avait arrêté de référencer les variables publiques dans d’autres modules. J’ai vérifié tous les autres ordinateurs de mon bureau, même chose. J’ai frénétiquement cherché sur Internet. Rien à ce sujet. En désespoir de cause, je me suis tourné vers Stack Overflow et Server Fault et Super User et le salon de discussion de Code Review. Pas de chance.</p>
<p><strong>Ensuite j’ai vraiment paniqué. J’ai volontairement appelé le support technique Microsoft.</strong></p>
<p>Inutile de dire que cela s’est tellement mal passé que j’ai abandonné. Je suis parti un moment et j’ai évacué mes frustrations sur un étage vide de notre immeuble avec mon katana (sécurisé GN, donc pas de dégâts réels au bâtiment).</p>
<p>Ensuite je suis revenu, je suis retourné sur le chat, j’ai parlé à d’autres personnes, j’ai essayé d’autres choses et j’ai finalement découvert la chose à propos de la fenêtre de variables locales, ce qui m’a permis de trouver le vrai problème dans mon code :</p>
<p>Ma macro fermait un classeur avant un point dans le code où j’essayais de référencer ses feuilles de calcul. C’était tout.</p>
<p><strong>Au total, j’ai gaspillé une journée de travail entière à essayer de corriger un problème qui n’existait pas.</strong></p>
<p><strong>Donc, voici une liste de choses que j’aurais pu faire / que j’aurais dû faire et qui auraient empêché cela :</strong></p>
<p><strong>Contrôle de version :</strong> Plus précisément, pouvoir rétablir le code à un point antérieur dans le temps où il était connu comme fonctionnel. Cela aurait immédiatement démontré que mon code de la veille par exemple fonctionnait encore comme prévu.</p>
<p><strong>La fenêtre de surveillance :</strong> Dans l’IDE VBA, cela vous permet de spécifier des variables et de suivre leur statut tout au long de la macro. Cela m’aurait montré que ma variable existait encore, qu’elle était encore référencée, qu’elle se vidait simplement soudainement à un point du code.</p>
<p><strong>Exécuter réellement les anciennes macros :</strong> Parce que je pensais que la fenêtre de variables locales affichait aussi les variables publiques, et qu’elles n’étaient pas là, tout ce que j’ai fait sur les autres ordinateurs était d’entrer dans une macro, voir qu’elles n’étaient pas là, et supposer le pire. Si j’avais réellement exécuté n’importe laquelle de mes macros même de la veille, ce problème aurait été évité.</p>
<p><strong>TDD / Tests unitaires :</strong> Auraient détecté mon erreur presque au moment où je l’ai introduite, et certainement dans les minutes suivant son écriture, ce qui aurait fourni un gros indice sur ce qui avait mal tourné et aurait empêché tout cela avant même que ça commence.</p>
<p><strong>Ne pas paniquer :</strong> J’ai oublié / n’ai pas essayé beaucoup de choses vraiment évidentes, dont chacune aurait prouvé que ma théorie était fausse. Au lieu de cela, parce que je pensais avoir un problème, j’ai cherché uniquement des preuves qui le confirmeraient, pas des preuves qui l’infirmeraient.</p>
<p>Du côté positif, au moins je suis maintenant bien plus sage que je ne l’étais ce matin.</p>