Visual Basic for Applications — Wikipédia

Wiki Loves Monuments : photographiez un monument historique, aidez Wikipédia et gagnez !

# Visual Basic for Applications

Un article de Wikipédia, l'encyclopédie libre.
Pour les articles homonymes, voir VBA.

Visual Basic for Applications

Apparu en | 1993
Développeur | Microsoft
Dernière version stable | 7.1 (Office 2013)
Paradigme | Impératif, événementiel
Typage | Hybride statique/dynamique
Influencé par | Visual Basic
Licence | Logiciel propriétaire

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.

## Obsolescence[ modifier | modifier le code]

Depuis le 1er juillet 2007, Microsoft ne distribue plus de licences VBA à ses nouveaux clients[1] car ils essayent de les remplacer par Visual Studio Tools for Applications (VSTA), un toolkit de customisation d'application basé sur la plateforme Framework .NET. De l'article de Dr eX[2] :

> « Les éditeurs de logiciel utiliseront à présent VSTA en remplacement de VSA [Visual Studio for Applications], pour fournir des fonctionnalités de personnalisation dans leurs applications. […] VSA était un client léger, alternative de VBA gérée par un serveur, basé sur Visual Studio. L'approche serveur a été vue par les éditeurs comme moins utile qu'un modèle de client riche, donc, en se basant sur ce retour, Microsoft a commencé le développement de VSTA. Certains éditeurs utilisent toujours VSA aujourd'hui, mais nous trouvons son intérêt limité. Certaines des technologies développées pour VSA sont reprises dans VSTA. La personnalisation des applications à l'aide de VSTA tire un meilleur profit des fonctionnalités du client riche que VSA, offrant un environnement hautement optimisé pour la personnalisation d'applications à la fois côté client et côté serveur. »

> « (en) VSTA now replaces VSA [Visual Studio for Applications] as the technology ISVs will use to provide customization capabilities in their applications. […] VSA was a thin-client, server-driven alternative to VBA built on Visual Studio. The server approach was viewed by ISVs as less useful than a rich-client model, so based on their feedback, Microsoft began development of VSTA. There are ISVs successfully using VSA today, but we found that its applicability was limited. Some of the technology developed for VSA is incorporated within VSTA. VSTA application customization takes better advantage of rich client functionality than VSA, offering a highly optimized environment for application customization on both the client and the server. »

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[3] puis réintroduit dans la version 2011[4]. Voir aussi VB.NET.
La première version de VSTA a été fournie en avril 2006 et a été intégrée dans différents ISV, y compris InfoPath 2007 et ABB Robotics. La prochaine version de VSTA (basée sur Visual Studio 2008 connu sous le nom de « Orcas ») sera distribuée vers février 2008. La seconde version de VSTA est très différente de la première, avec des fonctionnalités comme la programmation dynamique et la compatibilité WPF, WCF, WF, LINQ, et .NET 3.5.

Toutefois, en raison de la dépendance de certaines entreprises à VBA, VBA est encore disponible dans Office 2007, 2010 et 2013[5]. 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[6].

## Historique[ modifier | modifier le code]

La 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[7].

- 1993 - Lancement de VBA avec Microsoft Excel (version 5)
- 1994 - Inclusion de VBA avec Microsoft Project
- 1995 - Inclusion de VBA avec Microsoft Access, remplaçant Access Basic
- 1996 - Inclusion de VBA dans Microsoft Word, remplaçant Word Basic
- 1997 - Lancement de VBA 5.0, couvrant la suite Microsoft Office 97
- 1997 - Microsoft permet l'utilisation de VBA pour d'autres applications
- 1998 - Lancement de VBA 6.0
- 2010 - Lancement de VBA 7.0 (pour garantir la compatibilité des versions 32-bit et 64-bit de Microsoft Office)

## Interopérabilité[ modifier | modifier le code]

Une prise en charge minimale de VBA est également disponible dans OpenOffice.org, à partir de la version 3.0[8].

## Applications[ modifier | modifier le code]

### Dans Excel[ modifier | modifier le code]

L'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).
C'est la meilleure méthode pour apprendre à se servir de 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 savoir les actions effectués par chaque ligne de code.

Les principales collections d'objets du tableur Excel sont WorkBook (classeur), Sheets (feuille de calcul) et Range (cellules). Elles sont utilisables selon une hiérarchie descendante :

- Workbooks("Année 2012").Sheets("Mars").Range("B2") désigne la cellule B2 de la feuille Mars du classeur Année 2012 ;
- Sheets("Mars").Range("B2") du classeur actif (ouvert et affiché) ;
- Range("B2") de la feuille active.

Une fois un objet désigné :

- une méthode peut lui être appliquée (NomObjet.NomMéthode) : Range("B2").Select sélectionne la cellule B2…
- ses propriétés (NomObjet.Propriété) peuvent être consultées ou modifiées (affection NomObjet.Propriété=valeur) ; des propriétés courantes sont Visible (à utiliser avec True et False pour afficher ou masquer), Value (valeur d'une cellule), Count (nombre de cellules d'une page, de feuilles de classeur…).

Les références aux cellules peuvent être :

- absolues : Range("B2") ou Cells(2,2) désignent la cellule B2 de la feuille active ;
- relatives à la cellule d'origine : ActiveCell.Offset (2,-1) désigne la cellule située 2 lignes plus bas (- pour plus haut) et une colonne à gauche (+ pour à droite) de la cellule active.

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).

### Dans Word[ modifier | modifier le code]

Comme 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 d'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 :

- Documents("monDocument") le document choisi de l'ensemble des documents ouverts
- BookMarks("monSignet") un signet du document actif
- BookMarks("monSignet").Range.Text le texte attaché au signet du document actif

Une fois un objet désigné :

- une méthode peut lui être appliquée (NomObjet.NomMéthode) : ActiveDocument.SaveAs "monfichier.docx" enregistre le fichier WORD sous WINDOWS sous le nom monfichier.docx…
- ses propriétés (NomObjet.Propriété) peuvent être consultées ou modifiées (affection NomObjet.Propriété=valeur) ; des propriétés courantes sont Visible (à utiliser avec True et False pour afficher ou masquer), Text(contenu de paragraphe, de signet ou de sélection), Count (nombre d'objets d'une collection…).

## Syntaxe[ modifier | modifier le code]

### Condition[ modifier | modifier le code]

    If i = 5 Then
       MsgBox "Hello World!"
    End If

    Si i = 5 alors
       Afficher "Hello World!"
    Fin Si

### Boucles[ modifier | modifier le code]

#### For[ modifier | modifier le code]

    For i = 1 To 5 Step 1
       j = 2 * j + 1
    Next

    Pour i allant de 1 à 5 avec un pas de 1
       Multiplier j par 2 et lui additionner 1
    Fin pour

#### Do Until[ modifier | modifier le code]

    Do Until i = 5
       i = i + 1
    Loop

    Jusqu'à ce que i = 5
       Augmenter i de 1
    Fin jusqu'à ce que

#### Do While[ modifier | modifier le code]

    Do While i < 5
       j = 2 * j + 1
    Loop

    Tant que i est inférieur à 5
       Multiplier j par 2 et lui additionner 1
    Fin tant que

### Couleurs (sur Excel)[ modifier | modifier le code]

    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[ modifier | modifier le code]

Sur les autres projets Wikimedia :

- Visual Basic for Applications, sur Wikiversity
- Visual Basic for Applications, sur Wikibooks

- (en) VBA Language Specification
- Référence du langage Visual Basic pour Applications pour Office 2013
- VBA sur Developpez.com

## Références[ modifier | modifier le code]

1. ↑ « http://msdn.microsoft.com/vba/default.asp » (Archive • Wikiwix • Archive.is • Google • Que faire ?).
2. ↑ (en) « Howdy! What's up with VSA? » [archive], Dr. eX's Blog, 3 octobre 2005.
3. ↑ (en) « WWDC: Microsoft updates Universal status of Mac apps » [archive], Macworld [archive],‎ 7 août 2006 (consulté le 25 mai 2007).
4. ↑ Pierre Dandumont, « Office 2011 : le 26 octobre, avec le VBA et Outlook » [archive], Tom's Hardware FR, 29 septembre 2010.
5. ↑ Michel Dumais, « Antidote, Office 2008, le «SP1» et le retour de «VBA» » (Archive • Wikiwix • Archive.is • Google • Que faire ?), 14 mai 2008, sur mac.branchez-vous.com.
6. ↑ Working with Excel 4.0 macros [archive]
7. ↑ Paul Lomax, VB & VBA in a Nutshell, O'Reilly & Associates Inc, 1998, p. 635 (ISBN 1-56592-358-8), p. 6.
8. ↑ « OpenOffice.org 3.0 disponible en version Beta » [archive], generation-nt.com, 17 mai 2008.

- Portail de Microsoft
- Portail de la programmation informatique

Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Visual_Basic_for_Applications&oldid=117704091 ».
Catégories :

- Langage de programmation
- Microsoft Office
- Logiciel Microsoft

| [+]
Catégories cachées :

- Article contenant un lien mort
- Article contenant un appel à traduction en anglais
- Portail:Microsoft/Articles liés
- Portail:Informatique/Articles liés
- Portail:Programmation informatique/Articles liés