Le Coin des Curieux
Excel 5.0 «macros»

par Luc Gilliéron, LCC-Logics

Table des matières

Voir article précédent sur Excel 5.0 paru dans le Flash informatique numéro 3 ainsi que l¹article de François Roulet pour l¹installation d¹Excel 5.0 sur PowerMac.


Avec la version 5.0 d¹Excel PC et Mac est apparu un nouvel outil de création de «macros», ces petits programmes écrits par l¹utilisateur généralement pour automatiser les tâches répétitives. Visual Basic for Applications, puisque c¹est de lui qu¹il s¹agit, après avoir timidement pointé son nez dans Word pour Windows 2.0, puis plus sérieusement dans MS-Access, arrive dans le fameux tableur de Microsoft.

Adaptation de l¹environnement de développement VISUAL BASIC, Visual Basic for Applications remplace officiellement et définitivement l¹ancien jeu d¹instructions assez primitives utilisé jusque là dans Excel. Rappelons que tous ces langages macros sont des langages interprétés, c¹est-à-dire qu¹ils ne permettent pas de développer un programme indépendant (sous forme d¹exécutable et de librairies): le programme doit forcément être lancé à l¹intérieur du logiciel qui a servi à le créer (en l¹occurrence Excel).

Régulièrement, le Coin des Curieux, proposera des astuces et des conseils aux développeurs débutants ou confirmés, sans suivre un ordre particulier. Si vous avez vous-même expérimenté certains problèmes, découvert une fonction intéressante ou écrit une macro d¹intérêt général (ou simplement amusante), n¹hésitez pas à nous en faire part (tél. 021.320 29 66) et nous publierons votre texte avec plaisir dans la mesure du possible.

retour à la table des matières


Avertissement

Dans Excel 5.0, il est toujours possible de créer des macros à l¹aide de l¹ancien langage et il est même possible de lancer une macro écrite avec celui-ci à partir d¹une procédure VBA. Cependant, je conseille à ceux qui débutent, comme aux habitués de l¹ancien langage qui continuent à développer, de passer sans tarder à VBA. En effet, Microsoft a décidé de cesser de supporter et de mettre à jour le jeu d¹instructions originel dès la prochaine version d¹Excel.

retour à la table des matières


Forcer la déclaration des variables

VBA étant un langage dit «structuré», l¹un des changements les plus radicaux avec l¹ancien mode, consiste en l¹utilisation de véritables variables, chargées de conserver une valeur pendant la durée d¹une procédure ou plus. Contrairement à d¹autres langages, VBA ne vous oblige pas à déclarer les variables; tout mot apparaissant dans votre code précédé ou précédant le signe égal («=») et ne faisant pas partie de son jeu d¹instructions est automatiquement considéré comme une nouvelle variable.

Cette facilité se révèle très pratique au début mais devient rapidement une source d¹erreurs difficiles à repérer dans des macros importantes : en effet, il suffit que le nom d¹une variable soit orthographié différemment (un caractère suffit !) à deux endroits d¹une procédure pour que VBA considère qu¹il s¹agit de deux variables distinctes et initialise la deuxième au lieu de conserver la valeur de la première. Ce type d¹erreur ne provoque évidemment pas de réaction de la part du débogueur intégré !

Déclarer explicitement les variables en début de module ou de procédure ne vous protège néanmoins pas de ce genre d¹incidents : en effet, une variable déclarée, par exemple, sous le nom «TotalVentes» dans la section de déclaration ne sera pas reconnue sous le nom «TotalVente» dans votre code ! Pour forcer VBA à vérifier la déclaration préalable de toute variable, insérez l¹instruction «Option ForceDcl» («Option Explicit» en anglais). Dès lors, toute variable non déclarée dans ce module provoquera un message d¹erreur de la part du débogeur à l¹exécution. Si vous désirez étendre cette sécurité à tous vos futurs modules, choisissez la commande «Options» du menu «Outils», activez la page «Module» et cochez la case «Déclaration de variables».

retour à la table des matières


Accélérer l¹exécution d¹une macro

Une fois votre procédure ou votre macro testée et déboguée, placez l¹instruction

«Application.MiseAJourEcran = Faux»

sur la ligne suivant la déclaration de procédure (Proc ...). Si votre macro se compose de plusieurs procédures s¹appelant entre elles, seule la première exécutée nécessite cette instruction. En demandant ainsi à VBA de ne pas s¹occuper du rafraîchissement de l¹écran durant l¹exécution, on obtient un gain de rapidité assez considérable.

Attention : si le déroulement de votre macro nécessite une intervention de l¹utilisateur à un moment donné, par exemple pour introduire des données dans une cellule, réactivez la mise à jour de l¹écran à l¹aide de l¹instruction «Application.MiseAJourEcran = Vrai» juste avant ... puis désactivez-la à nouveau.



article paru dans le Flash informatique, numéro 6 du 27 juin 1995