Macros-commandes VBA/Les Macros Excel

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Les Macros Excel
Icône de la faculté
Chapitre no 1
Leçon : Macros-commandes VBA
Retour auSommaire
Chap. suiv. :Pour démarrer
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Macros-commandes VBA : Les Macros Excel
Macros-commandes VBA/Les Macros Excel
 », n'a pu être restituée correctement ci-dessus.


Introduction[modifier | modifier le wikicode]

La Macro-commande, le langage VBA, ces termes vous font peur ? Oui ? Et bien… Cette leçon est faite pour vous !!! Nous allons vous porter et vous encourager à vous servir de l’un des outils les plus intéressants développés depuis bien longtemps par Microsoft : la programmation VBA.


Les lignes de texte contenant des ensembles cohérents d’instructions VBA (Visual Basic Application) sont appelées code du programme. Le codage (ou la programmation) désigne le fait de fabriquer ces lignes de texte de 2 manières complètement différentes :

  • L’utilisateur béotien (en général non informaticien enregistre les lignes de code voulues via un système de magnétophone qui traduit en lignes d'instructions (plus exactement en code VBA) toutes ses interactions avec le logiciel grâce à un outil unique et magique : l’enregistreur de macros. En effet, la majorité des utilisateurs du tableur EXCEL redoute la complexité relative du langage VBA et tarde à se lancer dans la programmation, pensant devoir apprendre au préalable les fondamentaux prérequis pour le développement de logiciel.
  • Le concepteur (en général programmeur confirmé VBA) crée et édite directement les lignes de code voulues à l'aide d'un outil de traitement de texte spécialisé


Historique[modifier | modifier le wikicode]

La Macro-commande pour tableur, exploitant le langage VBA a été créé en 1995 par Microsoft sous la version Excel 5, sa finalité : transformer les actions effectuées par l’utilisateur ou le logiciel en instructions informatiques VISUAL BASIC.

Exemple :

  • Phase 1 : l'utilisateur démarre un enregistrement de la macro nommée macroQuiSouligne puis sélectionne des cellules, les souligne, arrête l'enregistrement
  • Phase 2 : l'utilisateur sélectionne d'autres cellules puis appelle la macro nommée macroQuiSouligne, puis l'exécute, les nouvelles cellules sélectionnées seront alors soulignées

Utilité des macros VBA[modifier | modifier le wikicode]


Un heureux mariage[modifier | modifier le wikicode]

Un Langage VISUAL BASIC[modifier | modifier le wikicode]

Visual Basic est le langage informatique développé dans les années 1980 par Microsoft pour banaliser la programmation. Les informaticiens puristes trouvent à VB un défaut majeur, il n’est pas un langage de programmation orienté objet. Cette affirmation est fausse, VBA comme la plupart des langages modernes ou WEB (PHP, RUBY, PHP, …) permet de créer ses propres objets (données, méthodes et instances) et donc de programmer des actions sur tout objet informatique accessible. Il permet aussi de manipuler des variables programmes non objets, ce qui en fait un langage de programmation à la fois procédural et à la fois orienté objet. L'intérêt majeur de la programmation Objet est qu’il n’est pas utile de connaître la composition et le fonctionnement d'un objet pour l’utiliser, seul son interface utilisateur (en général ses propriétés modifiables via VBA) doit être maîtrisée. Par analogie, lors de l’utilisation d'un téléviseur, il n’est pas nécessaire d’en connaître les composants et leur fonctionnement, seule son interface utilisateur (en général la télécommande) doit pouvoir être maniée.

Un Logiciel EXCEL[modifier | modifier le wikicode]

Excel est le logiciel tableur développé dans les années 1980 par Microsoft pour effectuer tout type de calcul et afficher tout type de graphique. Ce logiciel, à ses débuts, était souvent cité comme le plus mauvais des logiciels de type Tableurs ; après quelques années seulement et un travail d'amélioration gigantesque, il est devenu le logiciel de référence des tableurs. Tant et si bien que l’on peut parler de situation de monopole, vu son taux de couverture de marché avoisinant les 100%. Le logiciel Excel est également l'hôte dont le VBA a besoin pour pouvoir être embarqué.

Un Langage VB + Un Logiciel Excel = Une Visual Basic Application[modifier | modifier le wikicode]

Si vous utilisez le VBA, vous travaillez avec des objets. Le modèle Excel (comme le modèle Word ainsi que tous les autres modèles des logiciels MICROSOFT) possède des collections, des objets, des méthodes, des propriétés et réagit aux événements déclenchés par l'utilisateur.

Si vous vous servez directement d’Excel comme application hôte, vous ne devez pas déclarer d'objet Application dans le code VBA, vous ne devrez le faire que si vous utilisez une autre application hôte que Excel.

Certaines instructions VBA sont donc spécifiques à Excel, celles qui manipulent des objets EXCEL telles que l’affectation de formule à une cellule, l’ouverture de classeur, …

Le développeur communique avec Excel via la bibliothèque d'objets[modifier | modifier le wikicode]

La bibliothèque d'objet contient tous les objets utilisés par le tableur : classeur, feuille, colonne, cellule … ainsi que toutes les opérations possibles sur ces objets. Par exemple : Application, Worksheets, Workbooks, Selection, Range, …

 SUB activerFeuille()
  Worksheets(1).Activate
 END SUB

Le développeur communique avec Excel via les macros[modifier | modifier le wikicode]

Les modules de code contiennent toutes les macros utilisés par le tableur : déclarations, procédures et fonctions

 SUB enregistrerComme()
  DIM fichier as String
  fichier = "C:\excel\MonDouble.xls"
  ActiveWorkbook.SaveCopyAs fichier
 END SUB

Présentation du langage[modifier | modifier le wikicode]

Un exemple de fenêtre de programme réalisé en VB.

L'objectif de ce cours est d'enseigner la programmation d’applications en Visual Basic (alias "la suite VB"), en réalisant des programmes qui fonctionnent sous Microsoft Windows.

En effet ce langage est considéré comme simple et rapide[1], avec un débogueur pas à pas (F8) permettant de suivre le programme au plus près pendant son exécution.

Certains autres langages s'en sont d'ailleurs inspirés et assurent dans la plupart des cas une compatibilité minimum avec VBA, comme OOo basic et Gambas. Les macros de chacun de ces langages sont stockées dans le document et peuvent être copiées dans d'autres, et même parfois converties en OpenOffice basic[2].

Visual Basic for Applications (VBA) est une implémentation de Microsoft Visual Basic qui est intégrée dans toutes les applications de Microsoft Office (ex : Microsoft Word, Microsoft Excel, ...), dans quelques autres applications Microsoft comme Visio et au moins partiellement dans quelques autres applications non Microsoft comme AutoCAD et WordPerfect. VBA, de plus, remplace et étend les capacités des langages macro spécifiques aux plus anciennes applications comme le langage WordBasic intégré à une ancienne version du logiciel Word. VBA peut aussi être utilisé pour contrôler la quasi-totalité de l'IHM des applications hôtes, ce qui inclut la possibilité de manipuler les fonctionnalités de l'interface utilisateur comme les menus, les barres d’outils et le fait de pouvoir personnaliser les boîtes de dialogue et les formulaires utilisateurs.

Installation[modifier | modifier le wikicode]

Visual Basic est fourni avec le pack Microsoft Office, ce qui a le mérite de fournir des interfaces graphiques compatibles. Il est alors stocké dans différents types de fichiers .bas, .cls, .xls, .xlsm, .doc, .docm, .ppt, .pptm, .mdb, .mde. Il est recommandé de configurer ces logiciels en y ajoutant l'onglet "Développeur" dans le menu Fichier\Options\Personnaliser le ruban, et d'activer toutes les macros par défaut dans Fichier\Options\Centre de gestion de la confidentialité\Paramètres du Centre de gestion de la confidentialité\Paramètres des macros. Cet onglet permet par exemple d'enregistrer une macro reproduisant les opérations effectuées manuellement.

Il est toutefois également disponible gratuitement avec le compilateur Visual Studio express[3]. Dans ce cas il sera présent dans les fichiers .vb, .sln, .dsw, .vcw, .vbproj. Une fois ce dernier installé il est recommandé d'afficher les numéros de ligne pour pouvoir se repérer plus facilement, dans le menu Tools\Options\Text Editor\All Languages\Line numbers.

Chargement automatique de modules[modifier | modifier le wikicode]

Le format .xlsb sert à stocker des scripts VBA sans afficher de feuilles. Il peut ainsi être chargé silencieusement automatiquement à chaque ouverture de fichiers Excel. Pour ce faire, il suffit de :

  • Enregistrer des macros dans les modules d'un .xlsb.
  • Le placer dans C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Excel\XLSTART\[4].
  • Cliquer dans l'onglet "Affichage" sur "Masquer".

Chargement automatique de bibliothèques[modifier | modifier le wikicode]

Pour charger une bibliothèque de scripts .xla, .xlam ou .xll, il faut :

  • Copier le fichier dans C:\Users\%USERNAME%\AppData\Roaming\Microsoft\AddIns\[5]. Son code peut être protégé par un mot de passe, mais il s'exécutera quand même si on l'appelle.
  • Dans l'éditeur de macros, Outils, Références, cliquer sur Parcourir pour accéder au fichier, et ainsi le faire apparaitre coché en haut de la liste.

Références[modifier | modifier le wikicode]

  1. ((en)) http://college.yukondude.com/2004_09_comp219/html/note.php?note=07^Handout^Project_Estimation.tpl
  2. http://www.business-spreadsheets.com/vba2oo.asp
  3. http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-basic-express
  4. https://support.office.com/fr-fr/article/Créer-et-enregistrer-toutes-vos-macros-dans-un-classeur-unique-aa439b90-f836-4381-97f0-6e4c3f5ee566
  5. http://www.cpearson.com/excel/installinganxla.aspx

Annexes[modifier | modifier le wikicode]

Bibliographie[modifier | modifier le wikicode]

  • Greg Harvey et John Walkenbach, 2013, Excel 2013 et VBA Pour Les Nuls, FIRST, Hoboken
  • Amelot M., 2011, VBA Excel 2010, ENI, St Herblain

Liens internes[modifier | modifier le wikicode]

Liens externes[modifier | modifier le wikicode]