Visual Basic for Applications
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, dans quelques autres applications Microsoft comme Visio et au moins partiellement dans quelques autres applications comme AutoCAD, WordPerfect, MicroStation, Solidworks ou encore ArcGIS. Il 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, et peut ê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, et de personnaliser les boîtes de dialogue et les formulaires utilisateurs. Comme son nom l'indique, VBA est très lié à Visual Basic (les syntaxes et concepts des deux langages se ressemblent), mais ne peut normalement qu'exécuter du code dans une application hôte Microsoft Office (et non pas d'une application autonome, il requiert donc une licence de la suite bureautique Microsoft). Il peut cependant être utilisé pour contrôler une application à partir d'une autre (par exemple, créer automatiquement un document Word à partir de données Excel). Le code ainsi exécuté est stocké dans des instances de documents, on l'appelle également macro. VBA est fonctionnellement riche et extrêmement flexible, mais il possède d'importantes limitations, comme son support limité des fonctions de rappel (callbacks), ainsi qu'une gestion des erreurs archaïque, utilisation de handlers d'erreurs en lieu et place d'un mécanisme d'exceptions. Même si ces limitations rendent ce langage très peu utilisé par les développeurs informaticiens soucieux d'utiliser des outils avant tout performants, sa simplicité et sa facilité d'accès ont séduit certaines professions, notamment dans la finance. ObsolescenceDepuis le , Microsoft ne distribue plus de licences VBA à ses nouveaux clients[1] car ils essayent de les remplacer par Visual Studio Tools for Applications[2] (VSTA), une boîte à outils de customisation d'application basé sur la plateforme Framework .NET. De l'article de Dr eX[3] :
Office 2007 continue à utiliser l'ancien moteur VBA ; cependant, Visual Studio Tools for Office (en) (VSTO) est disponible. La prise en charge de VBA dans Microsoft Office pour Mac a été abandonnée avec la distribution de la version 12, en 2008[4] puis réintroduit dans la version 2011[5]. Voir aussi VB.NET. Toutefois, en raison de la dépendance de certaines entreprises à VBA, VBA est encore disponible dans Office 2007, 2010, 2013 et 2016[6],[7] et 2019. La dernière version 7.1 est incluse dans Office 2013. Le langage de macro Excel 4, antérieur à VBA, est lui aussi pris en charge, même par les dernières version d'Excel[8]. HistoriqueLa popularité incroyable de Visual Basic après son lancement amena Microsoft à inclure une version simplifiée dans ses applications de bureautique afin de remplacer les différents langages de macro. Cependant, comme le démontre la chronologie, ce changement s’est fait sur une longue période[9].
InteropérabilitéUne prise en charge minimale de VBA est également disponible dans OpenOffice.org, à partir de la version 3.0[10]. ApplicationsDans ExcelL'enregistreur de macros sous Microsoft Excel (Onglet Développeur / Enregistrer une Macro) permet de générer facilement du code VBA dans une procédure. Toute la séquence d'action effectuée entre le début et la fin de l'enregistrement est enregistrée dans une procédure VBA, qui pourra être réexécutée à l'identique. Il est possible de modifier ce code ou de programmer directement dans la VBE (Onglet Développeur / Visual Basic). Les principales collections d'objets du tableur Excel sont WorkBook (classeur), Sheets (feuille de calcul) et Range (plage de cellules). Elles sont utilisables selon une hiérarchie descendante :
Une fois un objet désigné :
Les références aux cellules peuvent être :
Microsoft Excel permet de créer des fonctions personnalisées programmées en code VBA et placées dans un module. Elles sont ensuite accessibles dans la bibliothèque de fonction (Insertion / Fonction / Personnalisée) : Function NomFonction (Argument1, Argument2 As TypeDonnées, Optional Argument3=valeur_defaut)
…(actions programmées)
NomFonction = valeur renvoyée
End Function
Ces fonctions peuvent recevoir des arguments en entrée, dont le type peut être spécifié (Argument2 ci-dessus) ou qui peuvent être optionnels, avec une valeur par défaut (Argument3 ci-dessus). Là encore, la procédure VBA permet d'automatiser tout type de tâche sous Microsoft Excel, avec comme conséquence un gain de temps et de confort d'utilisation[11]. Dans WordComme pour Excel, l'enregistreur de macro sous Microsoft Word (Onglet Développement / Nouvelle Macro) permet de générer facilement du code VBA dans une procédure. Toute la séquence d'action effectuée entre le début et la fin de l'enregistrement est enregistrée dans une procédure VBA, qui pourra être réexécutée à l'identique. Il est possible de modifier ce code ou de programmer directement dans la VBE (Onglet Développement / Visual Basic Editor). L'enregistreur de macro est la meilleure méthode pour l'apprentissage VBA pour les programmeurs néophytes. Tout d'abord on enregistre une séquence en appuyant sur le bouton d'enregistrement, et ensuite on peut l'exécuter pas à pas (touche F8) dans l'outil VBA afin de vérifier les actions effectués par chaque ligne de code. Les principales collections d'objets du traitement de texte Word sont Documents (les documents), BookMarks (les signets du document), Range (le contenu des signets). Elles sont utilisables selon une hiérarchie descendante :
Une fois un objet désigné :
SyntaxeConditionIf i = 5 Then
MsgBox "Hello World!"
End If
Si i = 5 alors
Afficher "Hello World!"
Fin Si
BouclesForFor i = 1 To 5
j = 2 * j + 1-2*3
Next
Pour i allant de 1 à 5 avec un pas de 1
Multiplier j par 2 puis lui additionner 1 et enfin lui soustraire 2 multiplié par 3
Fin pour
Do UntilDo Until i = 5
i = i + 1
Loop
Jusqu'à ce que i = 5
Augmenter i de 1
Fin jusqu'à ce que
Do WhileDo While i < 5
i = 2 * i + 1
Loop
Tant que i est inférieur à 5
Multiplier i par 2 et lui additionner 1
Fin tant que
Couleurs (sur Excel)Range("A1").Interior.Color = RGB(255,0,0)
Colorer le fond de la cellule A1 en rouge
Range("A1").Font.Color = RGB(255,0,0)
Colorer le texte de la cellule A1 en rouge
Liens externes
Références
|