• Aucun résultat trouvé

VBA et Excel

N/A
N/A
Protected

Academic year: 2022

Partager "VBA et Excel"

Copied!
568
0
0

Texte intégral

(1)

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

(2)

Mikaël Bidault

Microsoft

®

Excel ® & VBA

L E P R O G R A M M E U R

(3)

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.

(4)

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

(5)
(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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.

(15)

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.

(16)

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

(17)

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

(18)

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

(19)

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.

(20)

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

(21)

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é

(22)

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

(23)
(24)

1

Notions fondamentales de la programmation orientée objet

Au sommaire de ce chapitre

Comprendre le concept d’objet

Le modèle d’objets Excel

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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.

(31)

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)

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

(32)

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

Références

Documents relatifs

Une autre propri´et´e tr`es importante de l’objet Range est la plage entourant la cellule consid´er´ee : CurrentRegion. Ainsi, pour acc´eder ` a la plage entourant la cellule

Cette liste n’est plus fournie avec les versions suivantes (me la demander en cas de besoin). Il n'est pas possible de donner la correspondance entre tous les objets et

Le VBA (Visual Basic pour Application) est u la gage de p og a atio pe etta t d’utilise du code dont la syntaxe est proche du langage Visual Basic pour

Propriétés de l'objet Workbook renvoyant une collection

Ce sont des variables « structurelles » comme la période d’étude, le fait d’avoir effectué une réponse groupée à l’enquête Acemo, la taille de l’entreprise, le

C'est encore la pensée pensante que fonne l'université en diffusant "des savoirs en train de se faire" (p. 13), comme en témoigne un groupe de professeurs et d'étudiants

La contribution originale de ce projet était donc d'étudier plus spécifiquement et plus finement les perturbations de différentes dimensions de la cognition sociale (perception

L’axe principal de mon travail : la honte comme concept dans la théorie psychanalytique, constitue la feuille de route à laquelle je me réfère pour rendre