VBA
De WikiDeveloppez.
(Différences entre les versions)
Version actuelle (25 août 2009 à 19:02) (voir la source) m |
|||
+ | {{Infobox Bleu | ||
+ | | name = Visual Basic pour Applications | ||
+ | | editeur = Microsoft corp. | ||
+ | | version = 6.5 | ||
+ | | image = File_VBA_logo.png | ||
+ | | caption = VBA | ||
+ | | environnements = Microsoft Windows<br/>Mac OS | ||
+ | | langues = Multilingue | ||
+ | | langagesVisual Basic | ||
+ | }} | ||
+ | |||
[[Catégorie:Langages]] | [[Catégorie:Langages]] | ||
[[Catégorie:EDI]] | [[Catégorie:EDI]] | ||
+ | [[Catégorie:Microsoft Office]] | ||
<rubrique id="54" /> | <rubrique id="54" /> | ||
+ | |||
==Présentation== | ==Présentation== | ||
===Définition=== | ===Définition=== | ||
- | VBA vient de '''V'''isual '''B'''asic for ''' | + | VBA vient de '''V'''isual '''B'''asic for '''Applications''' |
- | Le VBA est une version de [[Visual Basic 6|Visual Basic]] présente dans les applications de la suite Office et de certaines [[#applicationstierces|applications partenaires]]. | + | Le VBA est une version de [[Visual Basic 6|Visual Basic 6 (VB6)]] présente dans les applications de la suite Office et de certaines [[#applicationstierces|applications partenaires]]. |
- | Sa syntaxe est identique à celle | + | Sa syntaxe est identique à celle de [[Visual Basic 6|Visual Basic]]. A la différence de [[Visual Basic 6|Visual Basic 6]], VBA ne fonctionne pas seul et est obligatoirement utilisé au sein d'une application hôte. Vous trouverez les différences détaillées entre VB6 et VBA sur [[Visual Basic 6#vb6versusvba|cette page]]. |
===Comment ça marche ?=== | ===Comment ça marche ?=== | ||
- | VBA est un environnement de développement complet destiné à être intégré dans des applications hôtes, afin de procurer des fonctionnalités de programmation à l'utilisateur final.<br/> | + | VBA est un environnement de développement intégré (EDI) complet destiné à être intégré dans des applications hôtes, afin de procurer des fonctionnalités de programmation à l'utilisateur final.<br/> |
<br/> | <br/> | ||
- | L'application doit fournir un '''Modèle Objet''' qui permet de la manipuler par programmation.<br/> | + | Il comprend:<br/> |
- | Par le truchement de ce '''Modèle Objet''' spécifique à l'application, il est possible d'agir sur l'application elle-même (exécution de commandes, gestion de l'affichage, manipulation de fenêtres, adaptation de l'IHM...), et aussi sur ses documents (création, modification).<br/> | + | * des outils de développement, |
- | La racine du '''Modèle Objet''' est toujours l'objet/classe '''<tt>Application</tt>'''. | + | :#un éditeur de code <small>(avec technologie ''IntelliSense'')</small>, |
+ | :#un débogueur, | ||
+ | :#un navigateur/explorateur de classes d'objets, | ||
+ | :#un compilateur incrémental, combiné à une fenêtre d'exécution immédiate (très utile !); | ||
+ | * ''Microsoft Forms'' qui fournit | ||
+ | :#des outils intégrés à l'EDI pour la [[#userforms|conception de fenêtres et de boîtes de dialogues]], | ||
+ | :#un ensemble de composants ActiveX graphiques; | ||
+ | * le moteur d'exécution du langage VBA; | ||
+ | * une bibliothèque de fonctions et de classes, souvent appelée '"bibliothèque VBA"'; | ||
+ | ::<small>(remarque: la bibliothèque VBA donne accès aux ''feuilles'' créées avec ''Microsoft Forms''; cf. la collection '''<tt>UserForms</tt>''')</small><br/> | ||
+ | * des mécanismes de protection du code (mot de passe) et de sécurité (signature numérique du projet). | ||
+ | |||
+ | <br/> | ||
+ | L'application doit fournir un '''Modèle d'Objet''' qui permet de la manipuler par programmation.<br/> | ||
+ | <br/> | ||
+ | Par le truchement de ce '''Modèle d'Objet''' spécifique à l'application, il est possible d'agir sur l'application elle-même (exécution de commandes, gestion de l'affichage, manipulation de fenêtres, adaptation de l'IHM...), et aussi sur ses documents (création, modification).<br/> | ||
+ | La racine du '''Modèle d'Objet''' est toujours l'objet/classe '''<tt>Application</tt>'''.<br/> | ||
+ | <br/> | ||
+ | ::<small>(à faire: Automation)</small> | ||
- | |||
<span id="vbaoutilsnatifs"></span> | <span id="vbaoutilsnatifs"></span> | ||
- | === | + | ==Outils natifs du VBA== |
- | + | ===Outils de développement=== | |
- | ==== | + | VBA hérite de l'éditeur de code, du débogueur et de l'explorateur d'objet de [[Visual Basic 6|VB6]]. |
- | + | <span id="userforms"></span> | |
+ | ===Microsoft Forms=== | ||
+ | Microsoft Forms procure à l'utilisateur des outils pour la conception de fenêtres ou de boîtes de dialogue: on parle de ''feuilles'', ou encore d'objets '''<tt>UserForm</tt>'''.<br/> | ||
+ | Microsoft Forms fournit aussi son propre '''Modèle d'Objet''' nécessaire à la programmation des ''feuilles''.<br/> | ||
+ | ====Conception d'une feuille: objet ''UserForm''==== | ||
+ | Un objet '''<tt>UserForm</tt>''' est créé et modifié directement dans l'EDI.<br/> | ||
+ | Il se comporte comme un conteneur capables d'accueillir: | ||
+ | * des composants graphiques appelés ''contrôles''; | ||
+ | * des informations de paramétrage des contrôles (les valeurs des propriétés); | ||
+ | * un module de code VBA. | ||
+ | Les contrôles sont ajoutés à partir de la boîte à outils de Microsoft Forms.<br/> | ||
+ | Ces contrôles permettront de saisir des données ou d'initier des actions.<br/> | ||
+ | Les actions sont codées dans des procédures écrites en langage VBA. Ces procédures sont enregistrées dans le module de code associé au '''<tt>UserForm</tt>'''. | ||
+ | ====Liste des contrôles natifs d'un UserForm==== | ||
+ | Les contrôles natifs du VBA sont disponibles sans ajout d'une référence quelconque. Ils sont par conséquent utilisables sans autre installation que les produits de la suite Office (ou que l'application tierce). | ||
{| class="wikitable" style="text-align:left; width:80% border="1";" | {| class="wikitable" style="text-align:left; width:80% border="1";" | ||
- | |+ Contrôles natifs disponibles pour un | + | |+ <U>'''Contrôles natifs disponibles pour un UserForm'''</U> |
|- | |- | ||
! scope=col | Nom du contrôle | ! scope=col | Nom du contrôle | ||
! scope=col | Versions | ! scope=col | Versions | ||
|- | |- | ||
- | ! scope=row | | + | ! scope=row | Etiquette<br/>(<tt>Label</tt>) |
|Texte modifiable à la création ou par code | |Texte modifiable à la création ou par code | ||
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Zone de texte | + | ! scope=row | Zone de texte<br/>(<tt>TextBox</tt>) |
|Permet la saisie d'une valeur par l'utilisateur. Cette valeur est considérée comme du texte (variable String) | |Permet la saisie d'une valeur par l'utilisateur. Cette valeur est considérée comme du texte (variable String) | ||
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Zone de liste modifiable | + | ! scope=row | Zone de liste modifiable<br/>(<tt>ComboBox</tt>) |
- | |Liste déroulante permettant la saisie d'une valeur parmi n éléments d'une liste, avec ou sans possibilité de saisir une valeur non présente dans la liste. (Excel: La liste peut être une plage de cellules) | + | |Liste déroulante permettant la saisie d'une valeur parmi n éléments d'une liste, avec ou sans possibilité de saisir une valeur non présente dans la liste.<br/>(Excel: La liste peut être une plage de cellules) |
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Zone de liste | + | ! scope=row | Zone de liste<br/>(<tt>ListBox</tt>) |
- | |Liste permettant la sélection d'une valeur parmi n éléments d'une liste. (Excel: La liste peut être une plage de cellules) | + | |Liste permettant la sélection d'une valeur parmi n éléments d'une liste.<br/>(Excel: La liste peut être une plage de cellules) |
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Case à cocher | + | ! scope=row | Case à cocher<br/>(<tt>CheckBox</tt>) |
- | |Permet de basculer l'état d'une valeur | + | |Permet de basculer l'état d'une valeur booléenne. |
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Bouton d'option | + | ! scope=row | Bouton d'option<br/>(<tt>OptionButton</tt>) |
|Permet de sélectionner une option parmi une liste d'options. Ce contrôle est souvent utilisé au sein d'un contrôle '''Cadre'''. | |Permet de sélectionner une option parmi une liste d'options. Ce contrôle est souvent utilisé au sein d'un contrôle '''Cadre'''. | ||
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Bouton bascule | + | ! scope=row | Bouton bascule<br/>(<tt>ToggleButton</tt>) |
- | |Permet de basculer l'état d'une variable | + | |Permet de basculer l'état d'une variable booléenne. |
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Cadre | + | ! scope=row | Cadre<br/>(<tt>Frame</tt>) |
|Cadre de regroupement des boutons d'option. Lorsqu'une option est cochée dans un cadre, toutes les autres options du cadre sont décochées. | |Cadre de regroupement des boutons d'option. Lorsqu'une option est cochée dans un cadre, toutes les autres options du cadre sont décochées. | ||
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
- | ! scope=row | Bouton de commande | + | ! scope=row | Bouton de commande<br/>(<tt>CommandButton</tt>) |
|Bouton permettant d'initier une action (lancement d'une procédure) lors du clic et/ou du double clic. | |Bouton permettant d'initier une action (lancement d'une procédure) lors du clic et/ou du double clic. | ||
+ | |Tous | ||
+ | |Toutes | ||
+ | |- | ||
+ | ! scope=row | Image<br/>(<tt>Image</tt>) | ||
+ | |Affichage d'une image provenant d'un fichier (formats supportés: BMP, GIF, ICO, JPEG, WMF).<br/>L'image est enregistrée dans l'objet <tt>UserForm</tt>, en tant que valeur de la propriété <tt>Picture</tt> du contrôle <tt>Image</tt>. | ||
|Tous | |Tous | ||
|Toutes | |Toutes | ||
|- | |- | ||
|} | |} | ||
+ | <br/> | ||
<span id="applicationstierces"></span> | <span id="applicationstierces"></span> | ||
==VBA et les applications tierces== | ==VBA et les applications tierces== | ||
En plus des applications de la suite logicielle Microsoft Office, on recense plus de 200 applications qui intègrent VBA.<br/> | En plus des applications de la suite logicielle Microsoft Office, on recense plus de 200 applications qui intègrent VBA.<br/> | ||
+ | ::<small>''(source: [http://msdn.microsoft.com/en-us/isv/bb190544.aspx, Visual Basic for Applications Licensing Partners], Microsoft corporation)''</small><br/> | ||
+ | <br/> | ||
Ces applications sont développées par des entreprises qui établissent un partenariat avec Microsoft, soit pour des développements internes, soit pour intégrer l'environnement VBA dans un autre logiciel commercial.<br/> | Ces applications sont développées par des entreprises qui établissent un partenariat avec Microsoft, soit pour des développements internes, soit pour intégrer l'environnement VBA dans un autre logiciel commercial.<br/> | ||
<br/> | <br/> | ||
* Outils de développement Logiciel. | * Outils de développement Logiciel. | ||
===Exemples d'applications pouvant intégrer VBA=== | ===Exemples d'applications pouvant intégrer VBA=== | ||
- | * Ingénierie/CAO: Dassault Systèmes CATIA; Autodesk AutoCAD; Bentley MicroStation; | + | * Ingénierie/CAO: Dassault Systèmes CATIA, SolidWorks; Autodesk AutoCAD; Bentley MicroStation; |
* Business Intelligence/Modélisation de Processus: BuisinessObjects; Intelior Aeneis; | * Business Intelligence/Modélisation de Processus: BuisinessObjects; Intelior Aeneis; | ||
- | * Système d'Information Géographique: ESRI ArcInfo, ArcMap; | + | * Système d'Information Géographique: ESRI ArcGIS, ArcInfo, ArcMap; |
* ERP: Baan Company iBaan; Agresso AGRESSO 5; Scala 5 Global Series; | * ERP: Baan Company iBaan; Agresso AGRESSO 5; Scala 5 Global Series; | ||
* Média & Publishing: Corel iGrafx FlowCharter 2005, CorelDRAW Graphics Suite 12, WordPerfect Office 12; | * Média & Publishing: Corel iGrafx FlowCharter 2005, CorelDRAW Graphics Suite 12, WordPerfect Office 12; | ||
* Gestion de Production/Productique: Asprova ATS; Siemens Simatic; | * Gestion de Production/Productique: Asprova ATS; Siemens Simatic; | ||
* Services Financiers: Thomson Reuters Kobra. | * Services Financiers: Thomson Reuters Kobra. | ||
- | + | <br/> | |
==Liens sur [http://www.developpez.com www.developpez.com] et [http://www.developpez.net www.developpez.net]== | ==Liens sur [http://www.developpez.com www.developpez.com] et [http://www.developpez.net www.developpez.net]== | ||
[http://office.developpez.com La Suite Office] | [http://office.developpez.com La Suite Office] |