« Macros-commandes VBA/Les Macros Excel » : différence entre les versions

Contenu supprimé Contenu ajouté
correction de plan
réorganisation de contenu
Ligne 14 :
 
Les '''Macro-commandes''', '''le langage {{abréviation|VBA|Visual Basic for Applications|en}}''', 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é depuis bien longtemps par Microsoft : la programmation {{abréviation|VBA|Visual Basic for Applications|en}}.
 
 
L’application {{abréviation|VBA|Visual Basic for Applications|en}} n’est pas encore utilisée par la majorité des utilisateurs du tableur EXCEL. En effet, la complexité relative du langage {{abréviation|VBA|Visual Basic for Applications|en}} freine bon nombre d'entre eux à se lancer dans la programmation VBA, pensant devoir apprendre au préalable les fondamentaux prérequis pour le développement de logiciel (programmation par l'environnement VBE). Il n'en est rien grâce à un outil magique : l’enregistreur de macros.
Ligne 58 ⟶ 56 :
* L’utilisateur béotien (en général non informaticien ou programmeur débutant {{Abréviation|VBA|Visual Basic for Applications|en}}) enregistre les lignes de code voulues via un système de magnétophone qui traduit en lignes de code BASIC (plus exactement en code {{Abréviation|VBA|Visual Basic for Applications|en}}) toutes ses interactions avec le logiciel
 
 
== Liens externes ==
== Utilité du langage VBA ==
<references/>
 
{{Définition
| contenu =
La programmation VBA (Visual Basic Application) permet de compléter des outils bureautiques déjà très performants et puissants (EXCEL, WORD, ACCESS, POWERPOINT, OUTLOOK, PROJECT, VISIO,...). Ci-dessous quelques exemples de ces compléments :
* Automatiser des actions répétitives
* Améliorer ou créer de nouvelles commandes pour l’application hôte
* Améliorer ou créer de nouvelles fonctions inexistantes dans l’application hôte
* Créer des interfaces spécialisées
* Faire interagir plusieurs applications bureautiques entre elles
* Ordonner, organiser les commandes entre elles
}}
 
Ce langage manipule non seulement tous les objets de l'application bureautique avec laquelle il est lié, mais aussi les objets des autres applications.
Si vous utilisez le VBA, vous travaillez avec des objets. Le modèle Excel, le modèle Word ainsi que tous les autres modèles des logiciels MICROSOFT possèdent des collections, des mèthodes, des propriétés et réagissent aux évènements déclenchés par l'utilisateur.
 
L'intérêt majeur de la programmation Objet est qu'il n'est pas utile de connaitre 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 maitrisée. Par analogie, lors de l'utilisation d'une télévision, il n'est pas nécessaire d'en connaitre les composants et leur fonctionnement, seule son interface utilisateur (en général la télécommande) doit pouvoir être maniée.
 
== Langage VBA + Logiciel Excel = Visual Basic Application ==
 
Visual Basic est le langage informatique développé dans les années 80 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 procédural et orienté objet.
 
Excel est le logiciel tableur développé dans les années 80 par Microsoft pour effectuer tout type de calcul et afficher tout type de graphique. L'application Excel est également un Objet que vous allez manipuler, et aussi l’application hôte dont le VBA a besoin pour pouvoir être embarqué.
 
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, …
 
 
'''Affichage de l'onglet développeur'''
 
 
 
 
Cet affichage de ruban va permettre au concepteur de gérer le code VBA par simple action sur les différentes commandes de l’onglet : code, contrôle, xml, …
 
Sans cet affichage de ruban l’accès aux modules et codes Visual Basic n’est pas possible.
 
Par défaut ce ruban n’est pas visible, en effet il est possible de travailler sur EXCEL (ou tout autre produit bureautique) sans créer de macro, il faut donc activer (cocher) cette possibilité.
 
 
'''Activation des macros'''
 
 
 
Cette activation va permettre à l’utilisateur d’exécuter le code VBA contenu par les macros par simple appel ou action sur les différentes commandes EXCEL (ou tout autre produit bureautique) : code, contrôle, xml, …
 
Sans cette activation de ruban l’accès aux modules et codes Visual Basic n’est pas possible.
 
Par défaut les macros ne sont pas activées, en effet il est possible de travailler sur EXCEL (ou tout autre produit bureautique) sans vouloir exécuter de macro. On désactive par exemple les macros quand un fichier bureautique est soupçonné de dysfonctionnement ou porteur de virus.
 
== VBA communique avec Excel ==
 
=== La bibliothèque d'objet ===
 
 
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, …
 
 
=== Le code VBA ou macros ===
 
- La déclaration de données est la description des données utilisées.
 
- Les procédures générales sont déclenchées en les appelant dans le code ou en les référençant dans une expression d’un formulaire ou d’un onglet EXCEL. Elles permettent de réaliser des opérations complexes n’entrant pas dans le cadre d’expression.
 
- Les procédures événementielles sont des opérations déclenchées sur des évènements propres aux objets d’un formulaire ou d’un état ou d’un onglet EXCEL. Par exemple : sur clic de bouton, sur ouverture de formulaire, sur changement d’un champ…
 
 
=== L'interaction entre objet et code ===
 
Sub EnregistrerComme()
Dim fichier as String
fichier = "C:\excel\MonDouble.xls"
ActiveWorkbook.SaveCopyAs fichier
End Sub
 
== Les contenants Excel VBA ==
 
* Feuille
 
Objet EXCEL accueillant les procédures particulières à une feuille de calcul EXCEL, cet objet contient le plus souvent des procédures et fonctions concernant des objets s’appliquant à lui-même.
 
* Modules de code standard
 
Objet VBA accueillant les procédures générales, le plus souvent contiennent des fonctions dites "utilitaires".
 
* Modules formulaire
 
Objet VBA contenant les procédures événementielles propres au formulaire traité. Il peut également contenir des procédures générales (à éviter). Ex : une procédure de traitement de date serait stockée dans un module standard pour pouvoir être utilisée dans tous les formulaires concernés.
 
* Modules de classe
 
Objet VBA contenant les données et procédures pour un objet (on parle alors de propriétés et de méthodes). Ex : un objet compte en banque qui décrit ses données (mouvement, solde, …) et les opérations sur ses données (retrait, dépôt, virement, …).
 
== Les avantages ==
 
* Simplicité d'utilisation (principe de magnétophone)
* Apprentissage rapide des manipulations des objets (grâce au codage VBA automatique du magnétophone)
* Méthode simple ne nécessitant pas une connaissance parfaite de la syntaxe du VBA
* Apprentissage de la programmation cohérente et utilisable sur toutes les applications d'office
 
== Les inconvénients ==
 
* Les programmes VBA ne peuvent être utilisés sans l'application sous laquelle ils sont développés
* Les programmes VBA sont sujets comme tout logiciel aux erreurs (bogues) qui peuvent entrainer des dysfonctionnements de l'application hôte
* L'enregistreur de macro-commandes ne résout pas lui-même tous les besoins de programmation (boucles, conditions, ...) ceci implique des actions complémentaires à coder en VBA
 
== Voir aussi ==
 
=== Liens externes ===
* [http://dj.joss.free.fr/faq.htm Microsoft.public.excel.fr (FAQ MPFE)]
* [http://vb.developpez.com/faqvba/ FAQ VBA]
* [http://www.apprentissage-virtuel.com/ Apprentissage virtuel]
 
=== Liens internes ===
* [[Visual Basic]]
* [[w:fr:Microsoft_Excel|Microsoft Excel]]
 
=== Bibliographie ===
* Jensen O.G., 2003, Initiation à la programmation VBA Word, KNOWWARE, Ecuelles
* Amelot M., 2011, VBA Excel 2010, ENI, St Herblain
* Bidault M., 2000, Excel et VBA, CAMPUS, Paris