Les macros

Les macros d’Excel sont pour beaucoup d’utilisateurs une promesse d’efficacité, un sésame permettant de surmonter des problèmes que les fonctions usuelles d’Excel seraient impuissantes à résoudre. Cette vision est s’approche de la réalité mais mérite d’être un peu complétée.

Qu’est-ce qu’une macro ?

Une macro est une suite d’actions qui peuvent être exécutées sans intervention de l’utilisateur, de manière automatique. Une macro Excel permet donc d’exécuter très rapidement des actions qui devraient être sinon exécutées manuellement (donc lentement) par l’utilisateur.

Excel dispose d’une fonction d’enregistrement qui permet de mémoriser les actions effectuées par l’utilisateur afin de pouvoir les reproduire ensuite. Par exemple, chaque semaine on vous livre un fichier que vous transformez toujours de la même manière, pour en faire une impression ou pour le charger dans un logiciel. Une macro pourrait réaliser cette tâche. Le bénéfice étant d’autant plus important que la tâche est longue et délicate.

Les limites de l’enregistrement des macros

Même si d’intéressants automatismes peuvent être produits ainsi, l’enregistrement simple s’avère rapidement limité. Une des raisons en est que l’enregistrement des actions mémorise précisément le contexte d’exécution. A titre d’exemple, lorsque vous enregistrez un tri sur un tableau, Excel mémorise la taille du tableau trié. Que la taille du tableau augmente et les lignes situées au-delà de la taille enregistrée seront ignorées par le tri lors de l’exécution de la macro.

Il devient nécessaire un moment ou l’autre de procéder à certaines modifications de la macro enregistrée et d’accéder pour ce faire au code VBA.

VBA comme Visual Basic for Application

VBA est un langage qui permet d’écrire des programmes basées sur la suite bureautique Microsoft Office. On peut ainsi grâce à VBA écrire tout type de traitement sur des objets d’Excel, classeurs, feuilles, graphiques, etc …

Dans Excel, les macros étaient codées anciennement dans des cellules de feuilles. Elles sont aujourd’hui écrites en VBA.

Améliorer les macros enregistrées

Comme il a été dit plus haut, un premier niveau de modification va permettre d’affranchir les macros de certaines limites liées au contexte de l’enregistrement en apportant des modifications simples au code. Un exemple pour comprendre, dans l’exemple du tri envisagé plus haut, la référence du tableau, par exemple « A1:P237″ va être remplacé par la description « plage courante de la cellule A1″, la plage courante étant celle qui est sélectionnée quand vous faites Ctrl * sur un tableau.

Dans cette même logique de libérer le code de ses constantes (taille, valeurs saisies, …) on pourra faire des demandes à l’utilisateur via des boîtes de dialogue.

Vers la programmation

Même considérant un code affranchi des éléments statiques, il reste que de nombreux processus font intervenir des choix ou des répétitions, par exemple actions réalisées sur toutes les lignes d’un tableau.

Ces adaptations nécessitent de maîtriser certaines syntaxes (les si et les boucles) et de réfléchir à la succession des actions (l’algorithme).

Cela constitue un pas de plus où de nouvelles notions de données, de gestion d’erreur doivent être introduites.

En conclusion

L’enregistrement et la modification de macro permettent de faciliter de nombreuses actions que l’on est amené à répéter plus ou moins fréquemment. L’automatisation d’une simple séquence de 4 ou 5 actions peut représenter un gain de temps non négligeable, sans compter la réduction à néant des erreurs de manipulation.

Une remarque importante doit être faite à ce stade, les macros ne sont pas faites pour pallier les problème d’organisation des données. A l’instar des automatismes industriels, les programmes sont faits pour fonctionner dans des contextes automatisables c’est à dire possédant une certaine régularité. Avant de coder quoi que ce soit vérifions que nos données sont au cordeau …

En savoir plus sur la formation Excel-VBA d’ERGOLOGIC.

Posted in:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *