Dix conseils pour coder des macros VBA Excel

Dix suggestions de bon sens pour rendre le codage Excel VBA plus rapide et plus facile. Ces conseils sont basés sur Excel 2010 (mais ils fonctionnent dans presque toutes les versions) et beaucoup ont été inspirés par le livre O'Reilly "Excel 2010 - The Missing Manual" de Matthew MacDonald.

1 - Testez toujours vos macros dans une feuille de calcul de test jetable, généralement une copie de celle avec laquelle elle est conçue pour fonctionner. L'annulation ne fonctionne pas avec les macros, donc si vous codez une macro qui plie, broches et mutile votre feuille de calcul, vous avez de la chance à moins d'avoir suivi cette astuce.

2 - L'utilisation de touches de raccourci peut être dangereuse car Excel ne vous avertit pas si vous choisissez une touche de raccourci qu'Excel utilise déjà. Si cela se produit, Excel utilise la touche de raccourci pour la macro, pas la touche de raccourci intégrée. Pensez à la surprise de votre patron lorsqu'il chargera votre macro, puis Ctrl-C ajoute un nombre aléatoire à la moitié des cellules de sa feuille de calcul.

Matthew MacDonald fait cette suggestion dans «Excel 2010 - The Missing Manual».

Voici quelques combinaisons de touches courantes que vous ne devez jamais attribuer à des raccourcis de macro car les utilisateurs les utilisent trop fréquemment:

  • Ctrl + S (Enregistrer)
  • Ctrl + P (Imprimer)
  • Ctrl + O (Ouvrir)
  • Ctrl + N (Nouveau)
  • Ctrl + X (Quitter)
  • Ctrl + Z (Annuler)
  • Ctrl + Y (Refaire / Répéter)
  • Ctrl + C (Copier)
  • Ctrl + X (Couper)
  • Ctrl + V (Coller)

Pour éviter les problèmes, utilisez toujours les combinaisons de touches de macro Ctrl + Maj + lettre, car ces combinaisons sont beaucoup moins courantes que les touches de raccourci Ctrl + lettre. Et en cas de doute, n'attribuez pas de touche de raccourci lorsque vous créez une nouvelle macro non testée.

3 - Vous ne vous souvenez pas de Alt-F8 (le raccourci de macro par défaut)? Les noms ne vous disent rien? Étant donné qu'Excel rendra les macros de tout classeur ouvert disponibles pour tous les autres classeurs actuellement ouverts, le moyen le plus simple consiste à créer votre propre bibliothèque de macros avec toutes vos macros dans un classeur distinct. Ouvrez ce classeur avec vos autres feuilles de calcul. Comme le dit Matthew, «Imaginez que vous modifiez un classeur nommé SalesReport.xlsx et que vous ouvrez un autre classeur nommé MyMacroCollection.xlsm, qui contient quelques macros utiles. Vous pouvez utiliser les macros contenues dans MyMacroCollection.xlsm avec SalesReport.xlsx sans un accroc. " Matthew dit que cette conception facilite le partage et la réutilisation des macros entre les classeurs (et entre différentes personnes).

4 - Et pensez à ajouter des boutons pour créer un lien vers les macros dans la feuille de calcul qui contient votre bibliothèque de macros. Vous pouvez organiser les boutons dans tous les groupes fonctionnels qui vous conviennent et ajouter du texte à la feuille de calcul pour expliquer ce qu'ils font. Vous ne vous demanderez jamais ce qu'une macro nommée de manière cryptique fait à nouveau.

5 - La nouvelle architecture de sécurité des macros de Microsoft a été considérablement améliorée, mais il est encore plus pratique de dire à Excel de faire confiance aux fichiers de certains dossiers sur votre ordinateur (ou sur d'autres ordinateurs). Choisissez un dossier spécifique sur votre disque dur comme emplacement de confiance. Si vous ouvrez un classeur stocké à cet emplacement, il est automatiquement approuvé.

6 - Lorsque vous codez une macro, n'essayez pas de créer une sélection de cellules dans la macro. Supposez plutôt que les cellules que la macro utilisera ont été présélectionnées. Il vous est facile de faire glisser la souris sur les cellules pour les sélectionner. Le codage d'une macro suffisamment flexible pour faire la même chose risque d'être plein de bugs et difficile à programmer. Si vous souhaitez programmer quoi que ce soit, essayez de comprendre comment écrire du code de validation pour vérifier si une sélection appropriée a été effectuée dans la macro à la place.

sept - Vous pourriez penser qu'Excel exécute une macro sur le classeur qui contient le code de macro, mais ce n'est pas toujours vrai. Excel exécute la macro dans le classeur actif. C'est le classeur que vous avez consulté le plus récemment. Comme Matthew l'explique, «Si vous avez deux classeurs ouverts et que vous utilisez la barre des tâches Windows pour basculer vers le deuxième classeur, puis revenir à l'éditeur Visual Basic, Excel exécute la macro sur le deuxième classeur.»

8 - Matthew suggère que «pour faciliter le codage des macros, essayez d'organiser vos fenêtres afin que vous puissiez voir la fenêtre Excel et la fenêtre de l'éditeur Visual Basic en même temps, côte à côte». Mais Excel ne le fera pas ((Tout organiser dans le menu Affichage organise uniquement les classeurs. Visual Basic est considéré comme une fenêtre d'application différente par Excel.) Mais Windows le fera. Sous Vista, fermez tout sauf les deux que vous souhaitez organiser et cliquez avec le bouton droit sur la barre des tâches; sélectionnez "Afficher Windows côte à côte". Sous Windows 7, utilisez la fonction "Snap". (Recherchez en ligne "Windows 7 features Snap" pour obtenir des instructions.)

9 - Le meilleur conseil de Matthew: "De nombreux programmeurs trouvent de longues promenades sur la plage ou gober une cruche de Mountain Dew un moyen utile de se vider la tête."

Et bien sûr, la mère de tous les conseils VBA:

dix - La première chose à essayer lorsque vous ne pouvez pas penser aux instructions ou aux mots clés dont vous avez besoin dans votre code de programme est d'allumer l'enregistreur de macros et d'effectuer un tas d'opérations qui semblent similaires. Examinez ensuite le code généré. Cela ne vous indiquera pas toujours la bonne chose, mais c'est souvent le cas. Au minimum, cela vous donnera un endroit pour commencer à chercher.

La source

MacDonald, Matthew. «Excel 2010: le manuel manquant». 1 édition, O'Reilly Media, 4 juillet 2010.