Nouveau

Dix astuces pour coder des macros Excel VBA

Dix astuces pour coder des macros Excel VBA

Dix suggestions de bon sens pour coder Excel VBA plus rapidement et plus facilement. 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 - Le manuel manquant" de Matthew MacDonald.

1 - Testez toujours vos macros dans un tableur de test jetable, généralement une copie de celui avec lequel il est conçu. L'annulation ne fonctionne pas avec les macros. Par conséquent, si vous codez une macro qui se plie, se faufile et mutile votre feuille de calcul, vous aurez de la chance si vous n'avez pas suivi ce conseil.

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

Matthew MacDonald fait cette suggestion dans "Excel 2010 - Le manuel manquant".

Voici quelques combinaisons de touches courantes que vous ne devez jamais attribuer à des raccourcis de macros car les utilisateurs les utilisent trop souvent:

  • Ctrl + S (Enregistrer)
  • Ctrl + P (Imprimer)
  • Ctrl + O (Ouvrir)
  • Ctrl + N (Nouveau)
  • Ctrl + X (sortie)
  • 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 macro Ctrl + Maj + lettre, car ces combinaisons sont beaucoup moins courantes que les touches de raccourci Ctrl + lettre. Et si vous avez un doute, n'attribuez pas de raccourci clavier lorsque vous créez une nouvelle macro non testée.

3 - Vous ne vous souvenez plus de Alt-F8 (le raccourci de macro par défaut)? Les noms ne signifient rien pour vous? Dans la mesure où 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 séparé. Ouvrez ce classeur avec vos autres feuilles de calcul. Comme Matthew le dit: "Imaginez que vous modifiez un classeur nommé SalesReport.xlsx et 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 explique que cette conception facilite le partage et la réutilisation de macros entre plusieurs classeurs (et entre différentes personnes).

4 - Et envisagez d'ajouter des boutons pour créer un lien vers les macros de la feuille de calcul contenant votre bibliothèque de macros. Vous pouvez organiser les boutons dans tout groupe fonctionnel qui vous convient et ajouter du texte à la feuille de calcul pour expliquer leur travail. Vous ne vous demanderez jamais ce qu'une macro nommée de manière cryptique fait réellement à 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 d'indiquer à Excel de faire confiance aux fichiers de certains dossiers de votre ordinateur (ou d'autres ordinateurs). Choisissez un dossier spécifique sur votre disque dur en tant qu'emplacement approuvé. 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 cellule 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 souple pour faire la même chose sera probablement plein de bogues et difficile à programmer. Si vous souhaitez programmer quelque chose, 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.

7 - Vous pourriez penser qu'Excel exécute une macro sur le classeur contenant le code de la macro, mais ce n'est pas toujours vrai. Excel exécute la macro dans le classeur actif. C'est le cahier que vous avez examiné le plus récemment. Comme l'explique Matthew: "Si vous avez deux classeurs ouverts et que vous utilisez la barre des tâches Windows pour basculer vers le deuxième classeur, puis de nouveau dans 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 (Excel dans le menu Affichage organise uniquement les classeurs. Excel est considéré comme une fenêtre d'application différente.) Mais Windows le fera. Sous Vista, fermez tous les éléments que vous souhaitez organiser, à l’exception des deux, puis cliquez avec le bouton droit de la souris sur la barre des tâches. sélectionnez "Afficher Windows côte à côte". Sous Windows 7, utilisez la fonction "Aligner". (Recherchez en ligne "Windows 7 features Snap" pour obtenir des instructions.)

9 - Le conseil de Matthew: "De nombreux programmeurs trouvent que les longues promenades sur la plage ou les gobelets de Mountain Dew sont un moyen utile de se vider la tête."

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

10 - La première chose à faire lorsque vous ne pouvez pas penser aux déclarations 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 ensemble d’opérations qui semblent similaires. Ensuite, examinez 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.