Cours VBA les macros, tutoriel & guide de travaux pratiques en pdf.
LES MACROS
A) Notion de macro
Automatisation des opérations sur Excel, en particulier des opérations ne pouvant faire l’objet d’un calcul.
Par exemple, ouvrir un classeur, actualiser un tableau croisé dynamique, trier, etc.
Ecriture de programmes complexes basés sur Excel.
Nécessité de bien connaître le fonctionnement d’Excel pour définir les macros.
Le langage est le même pour Word et PowerPoint. Mais l’utilisation est moins fréquente
B) Le langage macro Visual Basic for Application (VBA) de Excel
Langage structuré (cf. Algorithmique de base infra) orienté objet. Il est conseillé de lire ce chapitre dès maintenant si vous n’avez pas d’expérience de programmation.
L’écriture de la macro s’effectue principalement par répétition d’une série d’actions « apprises » par le logiciel et traduites dans son langage.
Possibilité de correction et d’adaptation. Ecriture de programmes complets.
C) Ecriture automatique de macros simples
Exemple : effacer l’intégralité d’une cellule (contenu et mise en forme)
1. Lancer l’enregistrement de la macro : OUTILS, Macro, Nouvelle macro
2. Définir le nom de la macro (sans espace, ex : Ma_macro) et choisir le raccourci clavier
3. Effectuer manuellement l’opération demandée : EDITION, Effacer, Tout
4. Terminer l’enregistrement de la macro : OUTILS, enregistrer une macro, arrêter l’enregistrement
(Une barre d’outils spéciale, arrêt de l’enregistrement peut apparaître et remplacer utilement cette manœuvre. Si elle n’apparaît pas, la sélectionner dans les barres d’outils. Elle se ferme automatiquement à la fin de l’enregistrement de la macro.)
5. Pour ajouter à une macro existante une autre partie enregistrée automatiquement, la seule solution avec Excel est d’enregistrer une nouvelle macro, puis d’extraire le code (ou programme) intéressant et le réinsérer dans la précédente macro. Il n’est plus possible comme sous Excel 5 de compléter directement la macro par un enregistrement automatique.
VBA a enregistré l’action dans le « projet » qui correspond à la feuille de calcul. La macro enregistrée se trouve dans le dossier Module, généralement sous le nom Module1. Pour retrouver cette macro, OUTILS, Macro, Visual Basic Editor ou ALT F11. Puis choisir : OUTILS, Macro dans le nouveau projet appartenant à votre classeur.
Sub Ma_macro()
‘
‘ Macro1 Macro
‘ Macro enregistrée le date par nom de l’utilisateur
Selection.Clear
End Sub
Les informations se trouvant derrière l’apostrophe (‘) sont des commentaires qui servent uniquement à renseigner le concepteur ou le correcteur sur les contenus de la macro. Ils peuvent êtres supprimés sans dommage. Mais il est pratique de les utiliser pour une correction ultérieure.
D) La structure d’une procédure macro
Sub et End Sub encadrent la macro. Le nom de la macro est suivi d’une parenthèse vide.
(Cette parenthèse sert à transmettre des informations d’une procédure à une autre, cf. Chapitre 4)
Une ligne de programme comprend :
un objet un point de séparation une action
Selection . Clear
ou un objet un point une propriété ou qualité un signe = une valeur
Selection.Police . Name = « Arial »
Cette seconde ligne permet de définir la police utilisée dans les cellules sélectionnées.
End Sub marque la fin de la procédure si une instruction Exit sub n’a pas été rencontrée auparavant.
Les objets
Les actions portent sur des objets manipulables : une plage de cellules, une feuille de calcul, la bordure d’une cellule, un graphique, un bouton, une barre d’outils, un classeur, etc.
Un objet fait partie d’une collection d’objets de même nature. Les collections sont donc toujours au pluriel. Chacun des objets qui la composent est accessible soit par son nom (nom de la feuille par ex.), soit par son indice ou item, (l’énième feuille). Pour désigner un objet, il est souvent nécessaire de donner l’ensemble de sa définition, puisqu’un objet peut être contenu dans un autre objet :
Illustration : M. Pierre Létudiant est… un objet faisant partie de la collection des « Etudiants de l’Université Paris X », partie de la collection des « hommes », sous-partie des « humains », etc. Son nom et son prénom complètent la définition de cet « objet ».
L’écriture d’un objet va de gauche à droite, du général au particulier en séparant les collections par des points.
Pour le désigner parfaitement il faut donc écrire : Humains.Hommes.Etudiants_UPX.Noms(« Létudiant »)
Une cellule est ainsi contenue dans une feuille, elle-même dépendante d’un classeur, etc.…
Par exemple : pour atteindre une plage de cellules (« B33:B34 ») dans une feuille (« Seconde ») du classeur (« Expert.xls ») il faut écrire :
Workbooks(« Expert.xls »).Sheets(« Seconde »).Range(« B33:B34 »).Select
Si la macro est lancée directement dans le classeur, il n’est pas nécessaire de le préciser, il est pris par défaut. De même si l’on se trouve dans la feuille (« Seconde »). Dans ce cas, l’écriture suivante est largement suffisante :
Range(« B33:B34 »).Select
Néanmoins, l’indication de la totalité de la définition de l’objet permet de s’assurer que l’action se déroulera bien là où elle est prévue.
Programmer en langage objet consiste donc à appliquer des méthodes sur des objets pour modifier
leurs propriétés de manière à les rendre conformes aux souhaits du programmeur.
Dans la première macro ci-dessus, Selection désigne l’objet et Clear est la méthode utilisée sur lui.
Selection simplifie avantageusement la désignation complète de la plage sélectionnée.
Les objets, leurs méthodes et leurs propriétés peuvent être consultés sur l’aide en ligne (F1). Elle permet surtout de vérifier l’exactitude d’un couplage entre l’objet et sa propriété ou d’ajouter de certaines lignes qui ne peuvent être apprises par le logiciel lui-même.
Les fonctions de VBA peuvent également être obtenues par ce biais.