Développez des macros compatibles avec toutes les versions d’Excel
(de 1997 à 2010)
Excel et VBA
Microsoft
®®
Mikaël Bidault
odes sources sur www.pearson.frCCCCCC su
s rrwwww
Mikaël Bidault
Microsoft
®Excel ® & VBA
L E P R O G R A M M E U R
Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson Education France n’assume de responsa- bilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation.
Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descrip- tions théoriques. Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle.
Pearson Education France ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l’utilisation de ces exemples ou programmes.
Tous les noms de produits ou marques cités dans ce livre sont des marques déposées par leurs propriétaires respectifs.
Publié par Pearson Education France 47 bis, rue des Vinaigriers
75010 PARIS Tél. : 01 72 74 90 00 www.pearson.fr Mise en pages : TyPAO
Collaboration éditoriale : Hervé Guyader ISBN : 978-2-7440-4158-7
Copyright © 2010 Pearson Education France Tous droits réservés
Aucune représentation ou reproduction, même partielle, autre que celles prévues à l’article L. 122-5 2˚ et 3˚ a) du code de la propriété intellectuelle ne peut être faite sans l’autorisation expresse de Pearson Education France ou, le cas échéant, sans le respect des modalités prévues à l’article L. 122-10 dudit code.
Sommaire
Introduction ... 1
Partie I – Découvrir la programmation Excel ... 11
1. Notions fondamentales de la programmation orientée objet ... 13
2. Premières macros ... 35
3. Déplacement et sélection dans une macro Excel ... 63
4. Découvrir Visual Basic Editor ... 85
Partie II – Programmeren Visual Basic ... 127
5. Développer dans Visual Basic Editor... 129
6. Variables et constantes ... 173
7. Contrôler les programmes VBA ... 209
8. Fonctions Excel et VBA ... 257
9. Manipulation des chaînes de caractères ... 275
10. Débogage et gestion des erreurs ... 293
11. Intégrer des applications VBA dans l’interface d’Excel ... 317
Partie III – Développer des interfaces utilisateur ... 327
12. Créer des interfaces utilisateur... 329
13. Exploiter les propriétés des contrôles ActiveX ... 359
14. Maîtriser le comportement des contrôles ... 401
Partie IV – Notions avancées de la programmation Excel ... 437
15. Programmer des événements Excel ... 439
16. Protéger et authentifier des projets VBA ... 451
17. Exemple complet d’application Excel ... 475
Annexe Mots clés pour la manipulation de fichiers et de dossiers ... 535
Index ... 539
Introduction ... 1
VBA 7 : 64 bits vs 32 bits ... 2
VBA, pour quoi faire ? ... 3
Des programmes ... 5
Une application hôte et des projets ... 5
Un langage de programmation ... 6
Un environnement de travail ... 8
Conventions typographiques ... 9
Codes sources en ligne ... 10
I – Découvrir la programmation Excel 11 1. Notions fondamentales de la programmation orientée objet ... 13
Comprendre le concept d’objet ... 14
Objets et collections d’objets ... 14
Application hôte et modèles d’objets ... 16
Accéder aux objets ... 19
Les propriétés ... 21
Les méthodes ... 27
Les événements ... 28
Les fonctions ... 29
Le modèle d’objets d’Excel ... 29
2. Premières macros ... 35
Créer une macro GrasItalique ... 36
Afficher l’onglet Développeur ... 37
Démarrer l’enregistrement ... 38
Enregistrer les commandes de la macro ... 40
Exécuter la macro ... 40
Structure de la macro ... 42
Améliorer la macro ... 47
Une autre méthode d’enregistrement ... 49
Enregistrement ... 50
Structure de la macro ... 50
Écrire la macro ... 51
Exécution de la macro ... 53
Choisir l’accessibilité des macros ... 53
Accessibilité globale ou limitée... 53
Classeurs et modèles ... 54
Le classeur de macros personnel ... 55
Les macros complémentaires ... 56
Définir le classeur de stockage lors de l’enregistrement d’une macro... 60
Accéder aux macros d’un classeur spécifique.. 60
Table des matières
VI Excel et VBA
3. Déplacement et sélection
dans une macro Excel ... 63
Méthodes de sélection dans une feuille Excel ... 64
Clavier ... 64
Souris ... 66
Notion de cellule active ... 66
Références relatives et références absolues ... 67
Coder les déplacements effectués lors de l’enregistrement d’une macro ... 69
Référence absolue aux cellules ... 69
Référence relative aux cellules ... 78
Référence aux cellules fonction de leur contenu ... 80
Référence aux plages de cellules nommées ... 83
4. Découvrir Visual Basic Editor ... 85
Accéder à Visual Basic Editor... 86
Les outils et les fenêtres de Visual Basic Editor ... 88
L’Explorateur de projet ... 89
L’Explorateur d’objets ... 92
La fenêtre UserForm ... 100
La fenêtre Code ... 102
La fenêtre Propriétés ... 116
Les barres d’outils ... 121
Paramétrer Visual Basic Editor ... 124
II – Programmer en Visual Basic 127 5. Développer dans Visual Basic Editor ... 129
Structure des programmes Visual Basic ... 130
Les modules ... 130
Les procédures ... 131
Les instructions ... 133
Les différents types de procédures ... 136
Procédures Sub ... 136
Procédures Function ... 141
Procédures Property ... 143
Des projets bien structurés ... 149
Ajouter un module ... 149
Supprimer un module ... 151
Créer une procédure ... 152
Écrire l’instruction de déclaration ... 152
La boîte de dialogue Ajouter une procédure .... 153
La notion de portée ... 154
Écriture et mise en forme du code ... 155
Déplacer une procédure ... 161
Appel et sortie d’une procédure ... 162
Appel d’une procédure Sub ... 162
Appels de procédures Function et Property ... 163
Passage d’arguments ... 164
Sortie d’une procédure ... 166
Sortie d’un programme ... 167
Exécuter du code ... 168
Aide à l’écriture de code ... 169
Vérification automatique de la syntaxe ... 169
Complément automatique des instructions ... 170
Info express automatique ... 171
6. Variables et constantes ... 173
Déclarer une variable ... 174
Déclaration implicite ... 174
Déclaration explicite ... 175
Types de données des variables ... 178
Chaînes de caractères ... 178
Valeurs numériques ... 180
Valeurs booléennes ... 183
Dates ... 184
Type Variant ... 185
Variables de matrice... 185
Variables objet... 190
Types de données personnalisés ... 195
Table des matières VII
Constantes ... 197
Validation et conversion des types de données 198 Portée et durée de vie des variables ... 201
Portée de niveau procédure ... 201
Portée de niveau module privée ... 201
Portée de niveau module publique ... 202
Variables statiques ... 203
Traitement interapplications à l’aide de variables objet ... 203
7. Contrôler les programmes VBA ... 209
Répéter une série d’instructions : les boucles 210 La boucle While...Wend ... 210
La boucle Do...Loop ... 215
La boucle For...Next ... 218
La boucle For Each...Next ... 224
Utiliser des instructions conditionnelles ... 228
La structure de contrôle If...Then...Else ... 228
La structure de contrôle Select Case ... 233
Définir l’instruction suivante avec GoTo ... 234
Interagir avec l’utilisateur via des boîtes de dialogue ... 235
La fonction InputBox ... 235
La méthode InputBox ... 239
La fonction MsgBox... 241
Affichage de boîtes de dialogue Excel ... 246
Utiliser les opérateurs logiques ... 252
Trier des données ... 253
8. Fonctions Excel et VBA ... 257
Utiliser les fonctions Excel dans VBA ... 258
Créer des fonctions Excel personnalisées ... 258
Intégrer une fonction via l’Explorateur d’objets ... 260
Insérer une fonction VBA dans votre code ... 260
Insérer une fonction Excel dans votre code ... 261
Recommandations pour l’écriture de fonctions Excel ... 263
Les limites de la cellule ... 263
Principales fonctions VBA ... 264
9. Manipulation des chaînes de caractères .... 275
Modifier des chaînes de caractères ... 276
Concaténer des chaînes ... 276
Insérer des caractères non accessibles au clavier 278 Répéter une série de caractères ... 280
Supprimer les espaces superflus d’une chaîne . 280 Extraire une partie d’une chaîne ... 281
Effectuer des remplacements au sein d’une chaîne ... 282
Modifier la casse des chaînes de caractères .... 283
Comparer des chaînes de caractères ... 283
Rechercher dans les chaînes de caractères ... 286
Rechercher une chaîne dans une chaîne ... 286
Rechercher une chaîne dans une variable de matrice ... 289
10. Débogage et gestion des erreurs ... 293
Les étapes et les outils du débogage ... 294
Test du projet ... 295
Exécuter pas à pas ... 297
La fenêtre Variables locales ... 298
Les points d’arrêt ... 300
Modifier l’ordre d’exécution des instructions .. 301
La fenêtre Exécution ... 301
Les espions ... 302
La pile des appels ... 304
Exemple de débogage ... 305
Recherche du bogue ... 307
Résolution du bogue ... 308
Gestion des erreurs et des exceptions ... 312
Exemple de gestion d’erreur ... 313
VIII Excel et VBA
11. Intégrer des applications VBA dans l’interface
d’Excel ... 317
Affecter une macro à un raccourci clavier ... 318
Personnaliser le ruban et la barre d’outils Accès rapide ... 319
Personnaliser les barres d’outils dans les versions antérieures à Excel 2007 .... 321
Personnaliser les menus dans les versions antérieures à Excel 2007 ... 323
Affecter une macro à un objet ... 325
III – Développer des interfaces utilisateur 327 12. Créer des interfaces utilisateur ... 329
Les phases de développement de feuilles ... 331
Créer une feuille ... 331
Les contrôles de la boîte à outils ... 333
Outil Sélection ... 334
Contrôle Label ... 334
Contrôle TextBox ... 334
Contrôle ComboBox ... 335
Contrôle Frame ... 335
Contrôle ListBox ... 336
Contrôle CheckBox ... 336
Contrôle OptionButton ... 337
Contrôle ToggleButton ... 338
Contrôle CommandButton ... 338
Contrôle TabStrip ... 338
Contrôle MultiPage ... 339
Contrôle ScrollBar ... 340
Contrôle SpinButton ... 340
Placer des contrôles sur une feuille ... 341
Copier-coller des contrôles ... 344
Sélectionner plusieurs contrôles ... 345
Supprimer des contrôles ... 345
Mise en forme des contrôles ... 346
La grille ... 346
Aligner les contrôles ... 347
Uniformiser la taille des contrôles ... 348
Uniformiser l’espace entre les contrôles... 349
Centrer les contrôles ... 350
Réorganiser les boutons ... 351
Grouper ou séparer des contrôles ... 351
Personnaliser la boîte à outils ... 352
Ajouter/supprimer un contrôle ... 353
Ajouter/supprimer une page ... 355
Afficher/masquer une feuille... 357
13. Exploiter les propriétés des contrôles ActiveX ... 359
Propriété Name ... 361
Apparence ... 362
Alignment... 362
BackColor ... 363
BackStyle ... 363
BorderColor ... 363
BorderStyle ... 364
Caption ... 364
ControlTipText ... 365
ForeColor ... 365
SpecialEffect ... 366
Style ... 366
Value... 367
Visible ... 369
Comportement... 372
AutoSize ... 372
AutoTab ... 373
AutoWordSelect ... 374
Cancel... 374
Default ... 375
Enabled... 375
EnterKeyBehavior ... 377
Table des matières IX
HideSelection ... 377
Locked ... 378
MaxLenght ... 378
MultiLine ... 379
SelectionMargin ... 379
Style ... 380
TabKeyBehavior ... 380
TextAlign... 381
TripleState ... 381
WordWrap ... 382
Défilement ... 382
ScrollBars ... 382
KeepScrollsVisible ... 384
Delay ... 384
Max et Min ... 385
SmallChange ... 386
LargeChange ... 386
Divers ... 387
Accelerator ... 387
GroupName ... 388
HelpContextID ... 388
MouseIcon ... 388
MousePointer ... 389
TabIndex ... 391
TabStop ... 392
Tag ... 393
Emplacement... 393
Height et Width ... 393
Left et Top ... 393
StartUpPosition ... 394
Image... 395
Picture ... 395
PictureAlignment ... 396
PictureSizeMode ... 397
PicturePosition ... 398
PictureTiling ... 398
Police... 399
Font ... 399
1 14 14. Maîtriser le comportement des contrôles 401 Créer des procédures événementielles ... 402
Créer une procédure ... 402
Les événements ... 408
Exemples d’exploitation des contrôles ... 415
Contrôle Label ... 415
Contrôle TextBox ... 418
Contrôle ComboBox ... 421
Contrôle ListBox ... 426
Contrôles CheckBox et OptionButton ... 429
Contrôle ScrollBar ... 430
Contrôle SpinButton ... 432
Exploiter les informations d’une feuille VBA ... 435
IV – Notions avancées de la programmation Excel 437 15. Programmer des événements Excel ... 439
L’objet Application ... 440
Déclaration et instanciation de l’objet Application ... 440
Création de procédures événementielles de niveau application ... 441
Propriétés de l’objet Application ... 443
Méthodes de l’objet Application ... 445
L’objet ThisWorkbook ... 445
L’objet Worksheet ... 448
16. Protéger et authentifier des projets VBA .. 451
Les virus macro ... 452
Se protéger des virus macros ... 452
Définir un niveau de sécurité dans Excel 2010 et Excel 2007 ... 452
X Excel et VBA
Définir un niveau de sécurité
avec Excel 2000, XP et 2003 ... 455
Les signatures numériques ... 456
Effectuer des sauvegardes des macros ... 457
Protéger l’accès aux macros ... 459
Verrouiller un projet ... 459
Limiter les droits d’exécution d’une macro... 460
Authentifier ses macros ... 472
Obtenir une authentification ... 472
Authentifier une macro ... 473
17. Exemple complet d’application Excel ... 475
Présenter un projet d’application Excel ... 476
Avant de commencer ... 477
Identification des informations à recueillir ... 477
Définition de la structure du programme ... 479
Créer un modèle Excel ... 485
Définir et créer des interfaces ... 486
Feuille fmContratAuteur ... 487
Feuille fmContratConditions ... 500
Feuille fmContratDates ... 514
Feuille fmContratImpression ... 520
Feuille fmContratFin ... 527
Écrire des procédures d’édition de documents ... 528
Édition des feuilles de paie ... 529
Mise à jour du Tableau Word ... 531
Annexe. Mots clés pour la manipulation de fichiers et de dossiers ... 535
Index ... 539
Introduction
Visual Basic pour Applications, VBA, est la solution de programmation proposée avec les applications de la suite Office. La connaissance de VBA permet à l’utilisateur d’Excel de tirer pleinement profit du tableur de Microsoft en en développant les capacités et les fonc- tionnalités pour ses besoins spécifiques. Maîtriser Visual Basic pour Applications, c’est à coup sûr améliorer grandement sa productivité et celle de son entreprise.
L’intégration dans Excel de Visual Basic pour Applications, un environnement de développe- ment intégré complet et professionnel, remonte à sa version 97. Depuis, Microsoft a confirmé sa volonté de faire de VBA un élément à part entière des applications Office et l’a progressi- vement proposé avec l’ensemble des applications de sa suite bureautique. Visual Basic pour Applications constitue aujourd’hui un langage et un environnement stables et pérennes.
Bien que certains développeurs demandaient le remplacement de VBA par VB.net, Micro- soft confirme, avec Office 2010, sa volonté de maintenir VBA comme solution de program- mation des applications Office, puisque la nouvelle suite Office intègre la version 7 de Visual Basic (les versions XP, 2003 et 2007 d’Office intégraient Visual Basic 6.3). Égale- ment confirmé dans cette version, le nouvel environnement apparu avec Office 2007 et le remplacement des menus "classiques" des versions précédentes par un système de "ruban"
et d’"onglets".
Cet ouvrage traite de la programmation VBA d’Excel 2010, mais, sauf exception signalée, les explications et les exemples proposés sont aussi valides pour les versions 97, 2000, XP, 2003 et 2007 d’Excel. En effet, d’une version à l’autre, il n’y a pas eu de révolution.
Le modèle d’objets s’est affiné et les nouvelles fonctions d’Excel, apparues au cours des différentes versions du logiciel, peuvent également être manipulées via la programmation VBA. Cependant, le langage, la gestion des programmes, l’environnement et les outils au
2 Excel et VBA
service du développeur – bref, tout ce que vous devez savoir pour programmer Excel et que cet ouvrage se propose de vous apprendre – restent inchangés d’une version à l’autre.
Donc, que vous utilisiez encore Excel 2003 ou que vous soyez passé à la version 2010, sachez que vous pourrez appliquer les connaissances que vous aurez acquises lors de la lecture de ce livre quand vous migrerez d’une version à l’autre d’Excel. Mieux, les programmes développés pour Excel 97 fonctionnent avec toutes les versions ultérieures du tableur et, sauf exception, les programmes développés dans Excel 2010 devraient fonctionner avec les versions antérieures.
Dans cet ouvrage, vous découvrirez les différentes méthodes de création de projets VBA pour Excel, Visual Basic (le langage de programmation proprement dit) et les outils de développement et de gestion intégrés de Visual Basic pour Applications. Votre initia- tion à la programmation VBA se fera au moyen d’exemples de programmes détaillés et commentés.
Vous rencontrerez le terme projet tout au long de cet ouvrage. C’est ainsi que l’on nomme un ensemble de programmes développés avec Visual Basic pour Applications.
VBA 7 : 64 bits vs 32 bits
Pour la première fois de son histoire, Office est proposée en deux versions : 32 bits et 64 bits. Ces deux versions sont pour ainsi dire indifférenciables : seule la gestion de la mémoire varie d’une version à l’autre, autorisant la manipulation de fichiers nettement plus volumineux avec la version 64 bits. Cependant, Microsoft recommande l’installation de la version 32 bits, y compris sur un système d’exploitation 64 bits, notamment pour des raisons de compatibilité des compléments (comme les macros VBA) avec les versions précédentes. C’est d’aillleurs la version 32 bits qui est installée par défaut, et les utilisa- teurs souhaitant installer la version 64 bits doivent parcourir le CD afin d’exécuter le fichier d’installation correspondant.
Conséquence pour le développement de macros Excel : la version 7 de VBA est maintenant une version 64 bits, qui intègre le support d’un nouveau type de données permettant la manipulation des pointeurs (les pointeurs permettent la manipulation des API Windows).
Cet ouvrage n’abordant pas la manipulation des API – notions réservées aux programmeurs chevronnés – cette nouveauté n’a aucune incidence sur la validité de ce que vous explique ce livre. Les concepts et techniques de programmation que vous apprendrez ici sont donc compatibles avec la version 64 bits d’Office comme avec les versions 32 bits d’Office, sans qu’il soit nécessaire d’adapter le code.
Définition
Introduction 3
VBA, pour quoi faire ?
Excel offre des possibilités très étendues. Pourtant, quelle que soit la puissance des fonc- tions d’Excel, elles ne peuvent répondre à toutes les situations. La programmation VBA est la solution de personnalisation offerte par Excel, afin d’ajouter des caractéristiques, des fonctions et des commandes qui répondent précisément à vos besoins.
La programmation VBA peut être définie comme la personnalisation d’un logiciel afin de s’assurer gain de temps, qualité des documents et simplification des tâches complexes ou fastidieuses. Voici quelques exemples de ce que permettent les programmes VBA :
∑
Combiner un nombre indéterminé de commandes. Nous sommes souvent amenés à répéter ou à associer certaines commandes plutôt que d’autres et à ignorer certaines fonctionnalités en fonction de l’usage personnel que nous avons d’un logiciel. VBA permet d’associer un nombre illimité de commandes à une seule. Vous pouvez ainsi ouvrir simultanément plusieurs documents Excel stockés dans des dossiers ou sur des serveurs différents, y insérer des données spécifiques et leur appliquer des mises en forme adaptées, en exécutant une seule commande créée en VBA.∑
Ajouter de nouvelles commandes et de nouvelles fonctions à Excel. VBA permet de créer de nouvelles commandes et d’ajouter des fonctions au tableur – par exemple une fonction personnalisée qui permet de calculer les taxes à retenir sur un salaire (ou, mieux, les primes à y ajouter), etc. Vous pouvez, en outre, attacher vos programmes VBA à des raccourcis clavier, à des icônes et à des commandes de menu afin d’en améliorer l’accessibilité.Figure I.1
VBA permet de personnaliser l’interface des applications Office en y ajoutant icônes et commandes de menus.
4 Excel et VBA
∑
Automatiser des actions répétitives. Nous sommes parfois amenés à répéter certaines opérations plusieurs fois sur un même document ou à réitérer des traitements spéci- fiques. Un programme VBA peut, par exemple, mettre en forme des cellules dans un classeur Excel, effectuer des séries de calculs, etc.∑
Modifier et améliorer les commandes d’une application. Les commandes Excel ne sont pas toujours adaptées à nos besoins ou présentent parfois des limitations gênantes.Un programme VBA peut modifier, brider ou compléter les commandes d’une applica- tion. Vous pouvez ainsi intégrer dans un tableau le nom de l’utilisateur, le nombre de pages imprimées et l’imprimante utilisée chaque fois qu’une impression est lancée à partir d’Excel.
∑
Faire interagir les différentes applications Office. Un programme VBA peut exploiter des données issues de fichiers générés par d’autres programmes et interagir avec ceux-ci de façon transparente pour l’utilisateur. Vous pouvez ainsi créer une commande qui envoie automatiquement le classeur Excel ouvert en fichier joint dans un mail Outlook à des destinataires définis ou qui génère un rapport Word à partir de données Excel et l’imprime.∑
Créer des interfaces personnalisées. Les programmes VBA peuvent ramener des tâches complexes à la simple information de champs dans des boîtes de dialogue person- nalisées pour l’utilisateur final, simplifiant ainsi considérablement le travail de celui-ci, tout en vous assurant qu’aucun oubli ou fausse manipulation n’aura lieu.Figure I.2 Visual Basic pour Applications vous permet de développer des interfaces utili - sateur évoluées.
Introduction 5
Visual Basic pour Applications permet le développement de solutions adaptées à vos besoins.
Les outils que vous apprendrez à manier vous permettront de développer des programmes simples, sans écrire la moindre ligne de code, comme des programmes complets intégrant une interface utilisateur adaptée.
La fonction d’un programme VBA peut être d’automatiser une tâche répétitive. Mais vous pouvez aussi créer très vite un petit programme VBA pour faire face à une nécessité immédiate ; par exemple, afin de généraliser un traitement exceptionnel à l’ensemble d’un document.
Des programmes
Les projets VBA sont des programmes ou macros écrits dans le langage Visual Basic. Si vous ne possédez aucune expérience préalable de programmation, ne vous inquiétez pas : cet ouvrage aborde le développement de projets VBA à travers l’enregistrement de macros.
Lorsque vous l’activez, l’Enregistreur de macro mémorise chacune de vos actions. C’est votre programmeur personnel : vous utilisez simplement les commandes d’Excel et il se charge de traduire les actions exécutées en instructions Visual Basic. Il vous suffit ensuite d’exécuter la macro pour répéter l’ensemble des commandes enregistrées.
Le terme macro désigne le regroupement d’un ensemble de commandes en une seule. On parle parfois de macrocommandes pour désigner un programme qui se résume à l’exécution d’une série de commandes, sans égard pour le contexte.
Des macros plus évoluées peuvent répéter des opérations en boucle, afficher des boîtes de dialogue qui autorisent une interaction avec l’utilisateur. Ces pro- grammes se comporteront différemment en fonction des informations entrées ou de l’état du document sur lequel elles s’exécutent.
Le terme projet est plus large. Il désigne l’ensemble des éléments constituant vos programmes VBA. Il s’agit toujours de macros, mais à celles-ci peuvent s’ajou- ter des feuilles – qui constituent une interface utilisateur permettant de récolter des informations de tout type –, des modules de classe, et autres friandises que vous découvrirez tout au long de cet ouvrage.
L’enregistrement de macros constitue sans aucun doute le meilleur moyen de se familiari- ser avec la programmation en Visual Basic. Ainsi, sans connaître le langage – les instruc- tions qui le composent et la façon dont elles sont structurées –, vous pouvez créer des programmes VBA et en visualiser ensuite le code.
Une application hôte et des projets
Visual Basic pour Applications est un environnement de développement calqué sur Visual Basic, un outil de développement d’applications Windows. Les structures de contrôle du
Définition
6 Excel et VBA
langage sont les mêmes et l’environnement proprement dit (Visual Basic Editor) est pour ainsi dire identique à celui de Visual Basic. Mais, contrairement à Visual Basic, Visual Basic pour Applications est conçu… pour des applications. Cela signifie que, tandis que les programmes Visual Basic sont autonomes, les programmes VBA ne peuvent être exécutés qu’à partir d’une application intégrant cet environnement de développement – Excel ou une autre application.
Lorsque vous développez un programme VBA, vous l’attachez à une application. Il s’agit de l’application hôte du programme. Plus précisément, vos programmes VBA sont attachés à un document (un fichier ou un modèle Word, une feuille de calcul Excel, une présentation PowerPoint…) spécifique à l’application hôte. L’ensemble des programmes VBA attachés à un document constitue un projet. Un projet regroupe des macros, mais peut également intégrer des interfaces utilisateur, des déclarations système, etc. Un projet constitue en fait la partie VBA d’un document. Si cet ouvrage ne traite que de la programmation pour Excel, sachez qu’un programme VBA peut être attaché à une autre application. Les concepts et les outils que vous découvrirez au long de cet ouvrage sont valides pour toutes les applications de la suite Office. Pour exécuter une macro VBA, vous devez avoir accès au document auquel elle est attachée. Vous pouvez choisir de rendre certaines macros disponibles à partir de n’importe quel document Excel ou en limiter l’accessibilité à un classeur Excel spéci- fique. La disponibilité des programmes VBA est abordée au Chapitre 2.
Un langage de programmation
Les projets VBA sont développés dans le langage de programmation Visual Basic. Vous découvrirez par la pratique la structure de ce langage et apprendrez rapidement à en discer- ner les composants et les relations qu’ils entretiennent. Comme nous l’avons dit précédem- ment, l’enregistrement de macros constitue une excellente initiation à Visual Basic. C’est sous cet angle que nous vous ferons découvrir ce langage.
Visual Basic est un langage de programmation orienté objet. Nous présenterons donc les concepts de la programmation orientée objet (POO). Vous apprendrez ce qu’est un objet, une propriété, une méthode ou un module de classe, etc. Vous verrez comment conjuguer ces éléments pour créer des applications Excel souples et puissantes. Visual Basic pour Applications constitue une bonne approche de la programmation pour le néophyte.
Visual Basic pour Applications intègre un grand nombre d’instructions. Cela permet de développer des macros susceptibles d’identifier très précisément l’état de l’application et des documents et reproduire l’exécution de la plupart des commandes disponibles dans l’application hôte.
Vous verrez que certaines instructions sont spécifiques à Excel. C’est, par exemple, le cas des instructions permettant d’affecter une formule à une cellule. Vous n’utiliserez probable- ment qu’un nombre limité de ces instructions, en fonction de votre usage personnel d’Excel
Introduction 7
ou des besoins de votre entreprise. Par ailleurs, certaines instructions spécifiques à Excel apparaîtront presque toujours dans vos macros. C’est, par exemple, le cas de la propriété Range qui renvoie un objet Excel tel qu’une cellule ou une plage de cellules.
D’autres instructions sont communes à l’ensemble des applications Office. C’est le cas de celles qui permettent de régler le comportement d’une macro : réaliser des opérations en boucle, induire des réactions face à certains paramètres, afficher des boîtes de dialo- gue simples (voir Figures I.3 et I.4) ou développer des interfaces utilisateur évoluées (voir Figure I.1), etc. Ce sont ces instructions qui constituent véritablement ce qu’il est convenu d’appeler le langage Visual Basic. Vous aurez besoin d’y faire appel dès que vous voudrez créer un programme interactif, capable de se comporter différemment selon le contexte.
La plupart de ces instructions ne peuvent être générées par enregistrement de macros, et doivent donc être éditées manuellement dans Visual Basic Editor.
Figure I.3
La fonction VBA MsgBox permet d’afficher une boîte de dialogue.
Figure I.4
Il existe une version VBA et une version Excel de la fonction InputBox.
Cet ouvrage ne se veut pas un dictionnaire du langage, mais un guide qui vous enseignera le développement de projets VBA de qualité. Vous apprendrez à enregistrer, modifier, exécuter et déboguer des macros, à créer des interfaces utilisateur ainsi qu’à gérer vos projets VBA.
Vous découvrirez, à travers les nombreux exemples de projets VBA de cet ouvrage, un certain nombre d’instructions spécifiques à la hiérarchie d’objets d’Excel, qui vous fami- liariseront avec la logique de ce langage.
La hiérarchie d’objets d’une application, encore appelée modèle d’objets, est le rapport qu’entretiennent entre eux les différents objets d’une application.
Ce concept ainsi que les notions spécifiques aux langages orientés objet seront développés au Chapitre 1, "Notions fondamentales de la programmation orien- tée objet".
Définition
8 Excel et VBA
En revanche, ce livre présente et illustre d’exemples commentés l’ensemble des structures de contrôle qui permettront de créer très simplement des macros évoluées. Nous vous four- nirons les bases du langage Visual Basic. Elles suffisent pour créer une infinité de macros et répondre à vos besoins spécifiques.
Lorsque les principes du développement de projets VBA vous seront acquis et que vous créerez vos propres macros, il vous arrivera sûrement d’avoir besoin d’instructions que vous n’aurez pas rencontrées lors de la lecture de cet ouvrage ; vous pourrez alors utiliser l’Enregistreur de macro ou encore les rechercher dans l’aide de Visual Basic pour Applica- tions ou dans l’Explorateur d’objets – étudié au Chapitre 4. Vous verrez que l’aide de Visual Basic pour Applications fournit une référence complète du langage, facilement accessible et consultable.
Si vous n’avez aucune expérience de programmation, peut-être ce Visual Basic vous appa- raît-il comme un langage barbare ou inaccessible. Ne vous inquiétez pas : le développement de projets VBA ne requiert ni expérience préalable de la programmation, ni connaissance globale du langage. Contentez-vous, au cours de votre lecture, d’utiliser les fonctions nécessaires aux exercices et que nous vous détaillerons. Cet ouvrage propose un apprentis- sage progressif et concret : vous développerez vos premiers projets VBA dès les premiers chapitres.
Un environnement de travail
Visual Basic pour Applications dispose d’un environnement de développement à part entière : Visual Basic Editor.
Visual Basic Editor est l’environnement de développement intégré des applications Office.
Il permet de visualiser et de gérer les projets VBA, d’écrire, de modifier et de déboguer les macros existantes, de visualiser comment les commandes propres à une application Office sont traduites en langage Visual Basic, et inversement. C’est aussi un outil de débogage de vos projets VBA d’une grande efficacité. Visual Basic Editor propose nombre d’outils permettant de tester les macros et d’en étudier le comportement. Vous pouvez ainsi exécuter les commandes de la macro pas à pas, en suivre le déroulement, insérer des commentaires dans le texte de la macro, etc. Enfin, Visual Basic Editor intègre des outils très intuitifs, dédiés au développement d’interfaces graphiques.
Vous apprendrez dans cet ouvrage à utiliser les nombreux outils de Visual Basic Editor à toutes les phases de développement d’un projet VBA.
Introduction 9
Figure I.5
Visual Basic Editor est l’environnement de développement de Visual Basic pour Applications.
Boîte à outils
Fenêtre Propriétés Fenêtre
Explorateur Code de projet
Explorateur
d'objets Fenêtre
UserForm
Conventions typographiques
Afin d’en faciliter la lecture, nous avons adopté dans cet ouvrage un certain nombre de conventions typographiques. Lorsqu’un mot apparaît pour la première fois, il est composé en italique. Les programmes et les mots clés du langage Visual Basic apparaissent dans une police à chasse fixe. Lorsque, dans un programme, un mot signale une information attendue dans le code, celui-ci apparaît en italique.
Lorsqu’une ligne de code ne peut être inscrite sur une seule ligne de l’ouvrage, cette flèche (➥) en début de ligne indique que le texte est la poursuite de ligne précédente.
Par ailleurs, vous rencontrerez au long de cet ouvrage différents types de notes, signalées dans la marge par des pictogrammes.
Ces rubriques apportent un complément d’information en rapport avec le sujet traité. Leur lecture n’est pas indispensable. Mais elles peuvent vous aider à mieux cerner le sujet.
Info
10 Excel et VBA
Vous trouverez sous ces rubriques la définition de termes techniques spécifiques à la programmation VBA.
Ces rubriques vous mettent en garde contre les risques inhérents à telle ou telle commande ou manipulation.
Il est parfois nécessaire de se rafraîchir la mémoire. Lorsqu’un sujet fait appel à des connaissances acquises plusieurs chapitres auparavant, cette rubrique vous les remémore brièvement.
Sous cette rubrique, vous trouverez des trucs pour aller plus vite et travailler plus efficacement.
Nous vous faisons ici part de notre expérience, en vous prodiguant des conseils qui vous aideront à développer des projets VBA de qualité.
Ces notes prodiguent des informations spécifiques aux versions antérieures à Office 2010.
Codes sources en ligne
Vous trouverez sur le site Pearson (www.pearson.fr), à la page consacrée à cet ouvrage, les codes sources des applications VBA développées dans ce livre.
Définition
Attention
Rappel
Astuce
Conseil
Compatibilité
I
Découvrir
la programmation Excel
Chapitre 1. Notions fondamentales de la programmation orientée objet Chapitre 2. Premières macros
Chapitre 3. Déplacement et sélection dans une macro Excel Chapitre 4. Découvrir Visual Basic Editor
1
Notions fondamentales de la programmation orientée objet
Au sommaire de ce chapitre
∑
Comprendre le concept d’objet∑
Le modèle d’objets Excel14 Excel et VBA
Visual Basic est un langage de programmation orienté objet. En tant que tel, il repose sur des concepts communs à tous les langages de programmation orientés objet. Avant de vous lancer dans la programmation pour Excel, il est important de vous familiariser avec ces concepts et le vocabulaire qui les décrit. Plus concrètement, ce chapitre vous fera décou- vrir les différents composants du langage Visual Basic en tant que langage orienté objet et comment ils s’articulent pour créer des programmes VBA puissants.
Vous ne trouverez pas dans ce chapitre de programmes VBA. Il est destiné à vous faire acquérir les bases et la terminologie sur lesquelles nous nous appuierons tout au long de cet ouvrage. Alors, patience ! Les connaissances qu’il vous apportera permettront d’appréhender vos premiers programmes dès le Chapitre 2.
Comprendre le concept d’objet
Comme pour tous les langages de programmation objet, les objets sont le fondement de Visual Basic. Quelle que soit la fonction d’un programme VBA, presque toutes les actions qu’il exécute s’apparentent à la modification d’objets.
Les ouvrages présentant la programmation orientée objet (POO) le font presque toujours par analogie avec les objets de la vie réelle. Nous ne dérogerons pas à cette règle. La program- mation orientée objet repose en effet sur une structure qui rappelle, par de nombreux points, les objets de la vie courante et les rapports qu’ils entretiennent. L’analogie avec les objets de la vie réelle rend simples et faciles d’accès des concepts qui, abordés de façon abstraite, vous apparaîtraient probablement obscurs.
Objets et collections d’objets
Dans la vie, un objet peut être tout et n’importe quoi. Ce qui caractérise un objet, c’est son existence physique, ses propriétés spécifiques, son comportement et les actions que l’on peut exécuter sur celui-ci. Une voiture est un objet. Lorsque vous parlez de l’objet Voiture, vous pouvez faire référence à un objet abstrait ("Je vais acheter une voiture") comme à une voiture bien concrète ("Mate un peu ma belle 2CV rouge"). Les objets que vous utiliserez dans vos programmes VBA répondent à une même définition.
Dans le premier cas, vous évoquez un objet Voiture imprécis, et pourtant tout le monde comprend de quoi vous parlez. Il vous suffit de prononcer le mot "voiture" pour que chacun imagine et visualise une voiture bien spécifique, en fonction de ses goûts, de ses aspi rations, de ses souvenirs, etc. Cependant, quelle que soit la voiture imaginée, en tant qu’objet Voiture, elle possède un certain nombre de propriétés (une carrosserie, des roues, un moteur, etc.) et autorise un certain nombre de méthodes (démarrer, freiner, tourner, etc.) qui permettent d’en maîtriser le comportement.
Chapitre 1 Notions fondamentales de la programmation orientée objet 15
Ce sont ces propriétés et ces méthodes, communes à toutes les voitures, qui définissent l’objet Voiture. Elles sont sous-entendues, évidentes et essentielles. Il existe donc des milliers de voitures différentes, toutes reconnaissables par un certain nombre de caractéris- tiques communes définies dans le concept (l’objet) Voiture. En POO, cet objet abstrait est appelé la classe Voitures. La classe Voitures est la définition formelle des objets Voiture (leurs propriétés et leurs méthodes). Il s’agit du modèle à partir duquel vous pouvez imagi- ner et créer des milliers de voitures différentes. L’ensemble des véhicules appartenant à la classe Voitures (parce qu’ils possèdent les propriétés et les méthodes définies dans cette classe) est appelé la collection d’objets Voitures.
Une collection porte le nom pluriel des objets qu’elle rassemble.
Ainsi, la collection WorkBooks renvoie tous les objets Workbook, soit tous les classeurs ouverts, la collection Sheets, toutes les feuilles d’un objet WorkBook, la propriété Work
sheets, toutes les feuilles de calcul d’un objet Workbook, etc. La section "Le modèle d’objets d’Excel" située en fin de chapitre vous permettra de découvrir les objets Excel les plus importants.
Le terme Classe désigne la définition commune d’un ensemble d’objets (qu’est- ce qu’une voiture ?), tandis qu’une Collection désigne l’ensemble des objets appartenant à une classe (toutes les voitures en circulation).
Lorsque vous parlez d’acheter la 2CV rouge de vos rêves, vous évoquez une voiture concrète, bien spécifique. Vous créez une instance – on parle aussi d’une occurrence – de l’objet Voiture. Elle possède toutes les propriétés de la classe Voitures, mais ces proprié- tés sont attachées à des valeurs précises. La carrosserie est rouge, la vitesse maximale est de x km/h, etc. Vous pouvez maîtriser le comportement de votre voiture à l’aide des méthodes définies dans la classe Voitures (Accélérer, Freiner), mais l’effet précis de ces méthodes est étroitement lié aux propriétés de votre voiture. La puissance du moteur ne permet pas d’atteindre 200 km/h (mais vous pouvez décapoter !) ; les freins ne sont pas équipés du système ABS, il faut donc telle distance pour freiner, etc.
Un programme VBA peut ainsi créer une feuille de calcul Excel en appliquant la méthode Add (ajouter) à la collection WorkBooks et déterminer les propriétés de ce classeur (son nom, ses options de protection, le nombre de feuilles qui le composent, etc.)
Info
Définition
16 Excel et VBA
Lorsque vous créez une instance d’objet, cet objet possède toutes les proprié- tés et méthodes définies dans la classe de l’objet. Ce principe essentiel de la programmation orientée objet est appelé instanciation.
Le grand intérêt de la programmation orientée objet est qu’il n’est pas utile de savoir comment fonctionne un objet pour l’utiliser. Lorsque vous achetez une voiture, vous n’avez pas besoin de savoir comment la carrosserie et le moteur ont été fabriqués, ni comment les différents composants sont assemblés, vous vous contentez de choisir un modèle, une couleur, etc. Il vous suffit de connaître les méthodes propres à la classe Voitures pour l’uti- liser. Avec VBA, lorsque vous créez une instance d’un objet, vous en définissez les proprié- tés sans vous préoccuper de la façon dont celles-ci seront appliquées. Il en va de même pour les méthodes que vous utilisez pour maîtriser le comportement d’un objet. Lorsque vous tournez la clé de contact, le moteur de la voiture démarre, sans que vous ayez à vous soucier du détail des événements et des technologies mises en œuvre.
VBA permet, par exemple, de créer des interfaces graphiques pour vos programmes, en déposant simplement les objets dont vous avez besoin (cases à cocher, zones de texte, boutons de commandes, etc.), sur une feuille. Ces objets ont des comportements spéci- fiques que votre programme exploitera, sans que vous ayez besoin de vous soucier de leur mécanisme interne.
Application hôte et modèles d’objets
Lorsque vous développerez des programmes VBA, vous agirez sur des objets qui varieront en fonction des actions que vous souhaitez que votre programme exécute. Vous définirez et associerez ces objets de façon à créer une application complète. Là encore, l’analogie avec les objets de la vie courante est révélatrice. Les objets que nous utilisons sont généralement ordonnés selon leur fonction. Lorsque vous souhaitez vous laver, vous vous dirigez vers la salle de Bains ; il s’agit du lieu consacré à la toilette. Vous y trouvez un certain nombre d’objets tels que Savon, Gant de toilette, Dentifrice, Brosse à dents, etc. Vous utilisez le savon avec le gant de toilette, le dentifrice avec la brosse à dents, et vous pouvez faire une toilette complète.
Si vous souhaitez manger, c’est dans la cuisine que vous vous orienterez. Vous y trouverez quelques objets communs à ceux de la salle de bains (Lavabo, Robinet, Placard, etc.). Vous ne devriez cependant pas y trouver de brosse à dents, ni aucun des objets spécifiques à la toilette. Par contre, vous pourrez utiliser le four, ouvrir le frigo et utiliser tous les objets spécifiques de la cuisine.
Les applications du Pack Office sont comparables aux pièces de votre maison. Lorsque vous choisissez de développer un projet VBA, vous choisissez une application hôte. Il s’agit de l’application Office qui contient les objets sur lesquels vous souhaitez agir. C’est dans
Info
Chapitre 1 Notions fondamentales de la programmation orientée objet 17
cette application que vous développerez vos programmes, et c’est uniquement à partir de cette application qu’ils pourront être exécutés. Si vous souhaitez travailler sur des textes, vous choisirez d’entrer dans Word ; pour faire des calculs, vous savez que c’est dans Excel que vous trouverez les objets dont vous avez besoin ; Access sert au développement et au maniement des bases de données et PowerPoint, à la création de présentations.
Cependant, à l’image des pièces de votre maison, les applications Office ne sont pas hermé- tiques. Vous pouvez parfaitement vous préparer un plateau repas dans la cuisine et choisir de manger au lit. De façon semblable, des projets VBA évolués peuvent utiliser des objets de différentes applications Office. Un programme développé dans Excel peut utiliser des données stockées dans une base de données Access ou des objets Word pour imprimer un courrier qui accompagnera une facture, et envoyer un message Outlook de confirmation.
Vous devez alors choisir une application hôte pour votre projet. Deux critères doivent la déterminer :
∑
Votre programme sera plus performant et plus simple à développer si l’application hôte est celle dans laquelle s’exécute l’essentiel des instructions du programme.∑
La présence du programme dans l’application hôte doit être logique, et l’utilisateur final doit y avoir un accès facile puisque le programme ne pourra être exécuté qu’à partir de celle-ci.Tous les projets développés dans cet ouvrage seront hébergés dans Excel. Pour accéder aux objets d’une application autre que l’application hôte, vous utilise- rez la technologie Automation. L’accès aux objets d’une autre application est traité au Chapitre 6.
L’application est donc la pièce dans laquelle votre programme s’exécutera. Celle-ci est composée d’un certain nombre d’objets – constituant une bibliothèque d’objets – dont les rapports sont précisément définis. Les objets d’une application et les rapports qu’ils entretiennent sont représentés sous la forme d’un organigramme. Tout en haut de l’or- ganigramme se trouve l’application (la pièce dans laquelle sont rangés tous les objets).
Viennent ensuite les classes d’objets de premier niveau de l’application, auxquelles sont liés d’autres objets ou classes, et ainsi de suite. On appelle cette structure le modèle d’objets ou la hiérarchie de classes de l’application. La Figure 1.1 représente ce qui pourrait être un modèle d’objets sommaire de l’application Salle de bains.
La plupart des éléments d’Excel peuvent être manipulés dans Visual Basic pour Applications en tant qu’objets. Un classeur Excel, une feuille de ce classeur, une cellule ou une boîte de dialogue Rechercher sont des objets qui peuvent être manipulés dans un programme Visual Basic.
Info
Info
18 Excel et VBA
Figure 1.1 L’ensemble des objets d’une appli- cation est structuré selon un modèle d’objets qui en définit les rapports et la hiérarchie.
Pièce (Salle de bain)
Rangements
Placard Armoire Etagères
Conteneurs
Baignoire Lavabo Bidet
Produits de nettoyage
Savons Shampooings Dentifrices
Savon
Surgras Savon de Marseille Savon
Monjoli
Au sommet du modèle se trouve la pièce – l’application. Tous les objets auxquels vous pouvez accéder y sont contenus. Si l’on établit un modèle d’objets pour l’ensemble des pièces de la maison, on retrouvera toujours l’objet Pièce au sommet du modèle. De la même façon, au sommet des modèles d’objets des applications Office, se trouve l’objet Application.
Viennent ensuite les classes situées immédiatement sous l’objet Pièce. Plus on progresse dans le modèle d’objets, plus les objets sont précis et donc spécifiques de la pièce ou de l’application. Par exemple, dans Excel, sous l’objet Application se trouve la collection (ou classe) Workbooks qui englobe tous les objets Workbook, c’est-à-dire tous les classeurs Excel ouverts. Sous l’objet Workbook se trouve la classe Worksheets qui englobe tous les objets Worksheet (toutes les feuilles de calcul) de l’objet Workbook désigné.
Pour accéder à l’aide en ligne des objets Excel, affichez l’Aide de Microsoft Visual Basic pour Applications à partir du menu "?", puis sélectionnez la com- mande Référence du modèle d’objets Excel (Objets Microsoft Excel si vous utilisez une version antérieure). Vous apprendrez à accéder à Visual Basic Editor au prochain chapitre.
Notez que le fait que des objets appartiennent à des branches distinctes du modèle d’objets ne signifie pas qu’ils ne peuvent pas interagir. L’objet Savon de Marseille peut se trou- ver sur l’étagère, et vous pouvez utiliser la méthode Déplacer pour le mettre dans l’objet Baignoire, comme dans l’objet Lavabo.
Un objet peut englober d’autres objets. Un objet intégrant d’autres objets est qualifié de conteneur. C’est le cas de l’objet Application, mais c’est aussi vrai pour beaucoup d’autres objets du modèle d’objets d’Excel. Par exemple, un objet Workbook contient des
Astuce
Chapitre 1 Notions fondamentales de la programmation orientée objet 19
objets Worksheet (feuilles de calcul), contenant eux-mêmes des objets Range (cellules et plages de cellules).
Figure 1.2
Le modèle d’objets d’Excel.
Accéder aux objets
Le modèle d’objets détermine le chemin à emprunter pour accéder à un objet. Pour vous laver les dents, vous devez d’abord accéder à votre brosse à dents. Même si le processus est inconscient, vous identifiez l’objet Brosse à dents par son emplacement : il est situé dans la salle de bains, parmi les objets et produits de toilette. De la même façon, en Visual Basic, vous devez identifier un objet avant de pouvoir agir dessus (appliquer l’une de ses méthodes ou modifier la valeur de l’une de ses propriétés). Lorsque vous souhaitez vous laver les dents, vous pensez et suivez inconsciemment les étapes suivantes :
∑
aller à la Salle de bains ;∑
se diriger vers les Produits de toilette ;∑
choisir parmi ceux-ci le dentifrice et s’en saisir.20 Excel et VBA
Pour accéder à un objet Excel, vous opérerez selon le même mode, c’est-à-dire en partant de l’objet situé le plus haut dans la hiérarchie d’objets et en progressant dans celle-ci jusqu’à atteindre l’objet voulu.
Le point est utilisé comme séparateur entre les différentes collections et objets que l’on rencontre avant d’atteindre l’objet voulu. La référence à un objet précis d’une collection se fait selon la syntaxe suivante :
Nom_Collection("Nom_Objet")
ou
Le code VBA permettant d’accéder à l’objet Dentifrice serait :
Piece.ProduitsNettoyants("Dentifrice").Prendre
La première partie du code permet d’accéder à l’objet Dentifrice ; l’expression identifiant un objet est appelée référentiel d’objet. La méthode Prendre est ensuite appliquée à cet objet afin de s’en saisir.
Le code Visual Basic permettant d’appeler la feuille de classeur Excel nommée "MaFeuille", et située dans le classeur "MonClasseur.xlsm" (à condition que celui-ci soit ouvert), serait :
Application.Workbooks("MonClasseur.xlsm").Sheets("MaFeuille").Activate
On accède à l’objet Workbook MonClasseur de la collection Workbooks (tous les classeurs ouverts), puis à la feuille nommée "MaFeuille" de la collection Sheets (toutes les feuilles de l’objet MonClasseur). Une fois le chemin d’accès à l’objet indiqué, on lui applique la méthode Activate pour l’activer.
Outre leur nom, les objets d’une collection sont identifiés au sein de la col- lection par une valeur d’indice représentant leur position dans la collection.
Cette valeur peut être utilisée pour renvoyer un objet d’une collection, selon la syntaxe suivante :
Nom_Collection(IndexObjet)
où IndexObjet représente la position de l’objet dans la collection. L’instruction suivante :
Workbooks(2).Activate
active le classeur Excel apparaissant en deuxième position dans le menu Fenêtre.
Poursuivons l’analogie. Si vous vous trouvez déjà dans la salle de bains au moment où vous décidez de vous laver les dents, vous n’avez pas besoin d’y accéder. Si vous avez déjà le nez parmi les produits de toilette, il est inutile d’y faire référence.
Info
Chapitre 1 Notions fondamentales de la programmation orientée objet 21
De façon semblable, dans le code VBA, les objets de niveau hiérarchique supérieur à celui de l’objet que vous souhaitez atteindre peuvent parfois être ignorés. C’est toujours le cas pour l’objet Application. En effet, votre projet VBA étant stocké et donc exécuté à partir d’une application hôte, il est inutile de rappeler que vous êtes dans cette application.
L’expression :
Workbooks("MonClasseur.xlsm").Sheets("MaFeuille").Activate
suffit donc à activer la feuille intitulée "MaFeuille" du classeur nommé "MonClasseur.
xlsm".
Selon le même principe, en cas d’absence de référentiel d’objets, la collection Sheets concerne le classeur actif. Si MonClasseur est le classeur actif, on peut donc se dispenser de toute référence à cet objet. On obtient alors l’instruction suivante :
Sheets("MaFeuille").Activate
Une petite finesse terminologique : les objets à proprement parler n’apparais- sent jamais dans le code. Pour faire référence à un objet, on utilise une propriété qui appelle ou renvoie l’objet voulu. Dans les exemples précédents, Workbooks est une propriété de l’objet Application, qui renvoie tous les classeurs ouverts (la classe Workbooks). Sheets est une propriété de l’objet Workbook, qui renvoie toutes les feuilles de classeur (la classe Sheets) de cet objet.
Les propriétés
Revenons à l’analogie avec l’automobile et prenons la classe Voitures. Toutes les proprié- tés propres aux objets Voitures y sont définies. Les objets ou classes situés immédiatement sous Voitures dans le modèle d’objets appartiennent à la collection d’objets Voitures. En tant que tels, ils héritent de toutes les propriétés définies dans la classe Voitures.
Les propriétés peuvent être un attribut de l’objet ou un aspect de son comportement. Par exemple, les propriétés d’une voiture sont, notamment, sa marque, son modèle, l’état des pneus, l’activation ou non du moteur, etc. Les propriétés d’un document Word sont son modèle, son nom, sa taille, etc.
Les propriétés prennent des valeurs spécifiques qui distinguent les différents objets de la collection. La propriété Couleur d’un objet Voiture peut prendre la valeur Rouge, tandis que la même propriété d’un objet de la collection est attachée à la valeur Bleu.
Lorsque vous développerez des programmes VBA, vous exploiterez les propriétés d’un objet de deux façons :
Info