Excel Et VBA

download Excel Et VBA

of 551

Transcript of Excel Et VBA

Microsoft

Excel et VBA

Dveloppez des macros compatibles avec toutes les versions dExcel (de 1997 2007)

Mikal Bidault

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

Microsoft

Excel & VBAVersion 97, 2000, XP, 2003 et 2007Mikal Bidault

Pearson Education France a apport le plus grand soin la ralisation de ce li vre afin de ous fournir une information complte et fiable. Cependant, Pearson Education France nassume de respon sabilits, ni pour son utilisation, ni pour les contrefaons de brevets ou atteintes aux droits de tierces personnes qui pourraient rsulter de cette utilisation. Les exemples ou les programmes prsents dans cet ouvrage sont fournis pour illustrer les descriptions thoriques. Ils ne sont en aucun cas destins une utilisation commerciale ou professionnelle. Pearson Education France ne pourra en aucun cas tre tenu pour responsable des prjudices ou dommages de quelque nature que ce soit pouv ant rsulter de lutilisation de ces e xemples ou programmes. Tous les noms de produits ou marques cits dans ce li propritaires respectifs.Publi par Pearson Education France 47 bis, rue des Vinaigriers 75010 PARIS Tl. : 01 72 74 90 00 www.pearson.fr Mise en pages : TyPAO ISBN : 978-2-7440-4108-2 Copyright 2009 Pearson Education France Tous droits rservs

vre sont des marques dposes par leurs

Aucune reprsentation ou reproduction, mme partielle, autre que celles prvues larticle L. 122-5 2 et 3 a) du code de la proprit intellectuelle ne peut tre faite sans lautorisation expresse de Pearson Education France ou, le cas chant, sans le respect des modalits prvues larticle L. 122-10 dudit code.

Sommaire

Introduction ................................................. Partie I Dcouvrir la programmation Excel ..........................

1 11

11. Intgrer des applications VBA dans linterface dExcel ......................... 305 Partie III Dvelopper des interfaces utilisateur........................... 317 12. Crer des interfaces utilisateur .............. 319 13. Exploiter les proprits des contrles ActiveX ........................... 347 14. Programmer les interfaces utilisateur .... 387 Partie IV Notions avances de la programmation Excel ..................... 423 15. Programmer des vnements utilisateur 425 16. Protger et authentifier des projets VBA 437 17. Bonus : exemple complet dapplication Excel ............................... 461 Annexe ........................................................ 517 Index ............................................................ 521

1. Notions fondamentales de la programmation oriente objet ........ 13 2. Premires macros .................................... 35 3. Dplacement et slection dans une macro Excel ............................. 63 4. Dcouvrir Visual Basic Editor ................ 85 Partie II Programmer en Visual Basic. 127 5. Dvelopper dans Visual Basic Editor ..... 129 6. Variables et constantes ............................ 171 7. Contrler les programmes VBA ............. 205 8. Fonctions Excel et VBA ......................... 251 9. Manipulation des chanes de caractres .. 267 10. Dbogage et gestion des erreurs ............ 283

Table des matires

Introduction ............................................ VBA, cest quoi ? ................................Des programmes .............................. Une application hte et des projets ... Un langage de programmation ......... Un environnement de travail ............

1 2 4 5 6 8 9

CHAPITRE 2. Premires macros ............. Crer une macro GrasItalique .............Dmarrer lenregistrement ............... Enregistrer les commandes de la macro ...................................... Excuter la macro ............................ Structure de la macro ....................... Amliorer la macro ..........................

35 36 37 39 40 42 47 50 50 51 51 53 54 54 55 55 56

Conventions typographiques ...............

I Dcouvrir la programmation Excel 11CHAPITRE 1. Notions fondamentales de la programmation oriente objet 13 Comprendre le concept dobjet ...........Objets et collections dobjets ........... Application hte et modles dobjets 16 Accder aux objets ........................... Les proprits .................................. Les mthodes ................................... Les vnements ................................ Les fonctions ...................................

Une autre mthode denregistrement ....Enregistrement ................................. Structure de la macro .......................

Ecrire la macro .................................... 14 14 19 21 26 28 28 29Excution de la macro ......................

Choisir laccessibilit des macros .......Accessibilit globale ou limite ........ Classeurs et modles ........................ Le classeur de macros personnel ...... Les macros complmentaires ............ Dfinir le classeur de stock ge lors de lenregistrement dune macro 61 Accder aux macros dun classeur spcif que ........................................

Le modle dobjets dExcel ................

61

VI

Excel et VBA

CHAPITRE 3. Dplacement et slection dans une macro Excel .............................. Mthodes de slection dans une feuille Excel ..........................................................Clavier ....................................................... Souris ..................................................... Notion de cellule active ........................... Rfrences relatives et rfrences absolues

Ajouter un module ..................................

148 150 151 151 152 154 155 160 161 161 162 163 165 166 167 167 168 170 171 172 172 173 176 176 178 181 181 182 183 187 192 194 195 198

63 6464

Supprimer un module .............................

Crer une procdure ................................... Ecrire linstruction de dclaration ..........La bote de dialogue Ajouter une procdure ......................................... La notion de porte ................................ Ecriture et mise en forme du code ........... Dplacer une procdure .........................

66 66 . 76 69 69 77 80

Coder les dplacements effectus lors de lenregistrement dune macro ........ Rfrence absolue aux cellules ................ Rfrence relative aux cellules ................Rfrence aux cellules fonction de leur contenu ....................................... Rfrence aux plages de cellules nommes 83

Appel et sortie dune procdure ................. Appel dune procdure Sub .....................Appels de procdures Function et Property ............................................. Passage darguments .............................. Sortie dune procdure ........................... Sortie dun programme ...........................

CHAPITRE 4. Dcouvrir Visual Basic Editor 85 Accder Visual Basic Editor .................... Les outils et les fentres de Visual Basic Editor LExplorateur de projet ........................... LExplorateur dobjets ............................ La fentre UserForm ............................... La fentre Code ...................................... La fentre Proprits .............................. Les barres doutils .................................. Paramtrer Visual Basic Editor .................. 86 88 89 93 100 103 115 119 123

Excuter du code ....................................... Aide lcriture de code ............................ Vrification automatique de la syntax ....Info express automatique ........................

Complment automatique des instructions 169

CHAPITRE 6. Variables et constantes ............ Dclarer une variable ................................. Dclaration implicite ..............................Dclaration explicite ..............................

II Programmer en Visual BasicCHAPITRE 5. Dvelopper dans Visual Basic Editor ...................................

127129

Types de donnes des variables ................. Chanes de caractres .............................Valeurs numriques ................................ Valeurs boolennes ................................. Dates ..................................................... Type Variant ........................................... Variables de matrice ............................... Variables objet ....................................... Types de donnes personnaliss .............. Constantes ............................................. Validation et conversion des types de donnes .............................................

Structure des programmes Visual Basic ..... 130 Les modules ............................................ 130 Les procdures ........................................ 131 Les instructions ...................................... 133 Les diffrents types de procdures ............. 135 Procdures Sub ....................................... 136 Procdures Function ............................... 140 Procdures Property ............................... 143 Des projets bien structurs ......................... 148

Porte et dure de vie des variables ...........

Table des matires

VII

Porte de niveau procdure ..................... Porte de niveau module prive .............. Porte de niveau module publique ........... Variables statiques .................................

198 198 199 199 200 205 206 206 210 214 219 223 223 227 229 229 230 234 236 241 246 247 251 252 252 254

CHAPITRE 9. Manipulation des chanes de caractres ............................................ Modifier des chanes de caractres ............ Concatner des chanes ..........................Insrer des caractres non accessibles au clavier ............................................... Rpter une srie de caractres .............. Supprimer les espaces superf us dune chane .......................................... Extraire une partie dune chane ............. Effectuer des remplacements au sein dune chane ..........................................

267 268 268 270 271 272 272 274 275 277 277 280 283 284 285 287 288 290 291 291 292 294 295 297 298 301 303 305 306 307

Traitement interapplications laide de variables objet ....................................... CHAPITRE 7. Contrler les programmes VBA ............................... Rpter une srie dinstructions : les boucles .................................................. La boucle While...Wend .......................... La boucle Do...Loop ............................... La boucle For...Next ................................ La boucle For Each...Next ....................... Utiliser des instructions conditionnelles .... La structure de contrle If...Then...Else ... La structure de contrle Select Case ....... Dfinir linstruction su vante avec GoTo ... Interagir avec lutilisateur via des botes de dialogue ................................................. La fonction InputBox .............................. La mthode InputBox .............................. La fonction MsgBox ............................... Affi hage de botes de dialogue Excel ...... Utiliser les oprateurs logiques .................. Trier des donnes ....................................... CHAPITRE 8. Fonctions Excel et VBA ........... Utiliser les fonctions Excel dans VBA ...... Crer des fonctions Excel personnalises .... Intgrer une fonction via lExplorateur dobjets ......................................................

Modif er la casse des chanes de caractres 275

Comparer des chanes de caractres .......... Rechercher dans les chanes de caractres Rechercher une chane dans une chane ...Rechercher une chane dans une variable de matrice ..............................................

CHAPITRE 10. Dbogage et gestion des erreurs ................................................ Les tapes et les outils du dbogage .......... Test du projet ......................................... Excuter pas pas ................................. La fentre Variables locales .................... Les points darrt ...................................Modif er lordre dexcution des instructions ...................................... La fentre Excution ............................... Les espions ............................................ La pile des appels ..................................

Exemple de dbogage ................................ Recherche du bogue ............................... Rsolution du bogue ............................... Gestion des erreurs et des exceptions ........ Exemple de gestion derreur ...................... CHAPITRE 11. Intgrer des applications VBA dans linterface dExcel ................. Affecter une macro un raccourci clavier . Personnaliser la barre doutils Accs rapide dExcel 2007 ........................

Insrer une fonction VBA dans votre code 254 Insrer une fonction Excel dans votre code 255

Recommandations pour lcriture de fonctions Excel .....................................Les limites de la cellule ............................ Des fonctions toujours jour ..................

256256

257 257

Principales fonctions VBA ........................

VIII

Excel et VBA

Affecter une macro un bouton ................. Affecter une macro une commande de menu ...................................................... Supprimer une commande de menu ........... Modifier limage et/ou le nom dune commande ........................................ Affecter une macro un objet ....................

309 310 312 313 315

Uniformiser lespace entre les contrles . Centrer les contrles .............................. Rorganiser les boutons .......................... Grouper ou sparer des contrles ...........

337 338 339 340 341 341 343 345 347 349 350350

Personnaliser la bote outils .................... Ajouter/supprimer un contrle ................ Ajouter/supprimer une page .................... Afficher/masquer une feuille ..................... CHAPITRE 13. Exploiter les proprits des contrles ActiveX ............................... Proprit Name .......................................... Apparence ..................................................Alignment ................................................. BackColor .............................................. BackStyle ............................................... BorderColor ........................................... BorderStyle ............................................ Caption .................................................. ControlTipText ........................................ ForeColor ............................................... SpecialEffect .......................................... Style ....................................................... Value ...................................................... Visible ....................................................

III Dvelopper des interfaces utilisateurCHAPITRE 12. . Crer des interfaces utilisateur .................................................. Les phases de dveloppement de feuilles .. Crer une feuille .........................................

317319 320 321

Les contrles de la bote outils ................ 323 Outil Slection ........................................ 323Contrle Label ....................................... Contrle TextBox .................................... Contrle ComboBox ............................... Contrle Frame ...................................... Contrle ListBox .................................... Contrle CheckBox ................................. Contrle OptionButton ........................... Contrle ToggleButton ............................ Contrle CommandButton ...................... Contrle TabStrip ................................... Contrle MultiPage ................................ Contrle ScrollBar ................................. Contrle SpinButton ...............................

323 324 325 325 325 326 327 327 327 328 328 329 330

350 351 351 351 352 353 353 353 354 354 356 359359

Comportement ...........................................AutoSize .................................................... AutoTab .................................................. AutoWordSelect ...................................... Cancel ................................................... Default ................................................... Enabled .................................................. EnterKeyBehavior .................................. HideSelection ......................................... Locked ................................................... MaxLenght ............................................. MultiLine ............................................... SelectionMargin ..................................... Style ....................................................... TabKeyBehavior .....................................

Placer des contrles sur une feuille ............ 330 Copier-coller des contrles ..................... 332Slectionner plusieurs contrles .............. Supprimer des contrles .........................

333 334

Mise en forme des contrles ...................... 334 La grille ................................................. 335Aligner les contrles ............................... Uniformiser la taille des contrles ..........

336 337

360 360 361 362 362 364 364 364 365 365 365 366 367

Table des matires

IX406 411 414 415 417 420

TextAlign ................................................ TripleState .............................................. WordWrap ..............................................

367 367 368 369369

Contrle ComboBox ............................... Contrle ListBox .................................... Contrles CheckBox et OptionButton ...... Contrle ScrollBar ................................. Contrle SpinButton ...............................

Dfilement ................................................ScrollBars ................................................ . KeepScrollsVisible .................................. Delay ..................................................... Max et Min ............................................. SmallChange .......................................... LargeChange ..........................................

370 370 371 372 372 373373

Exploiter les informations dune feuille VBA ......................................

Divers .........................................................Accelerator ............................................... GroupName ............................................ HelpContextID ....................................... MouseIcon ............................................. MousePointer ......................................... TabIndex ................................................ TabStop .................................................. Tag .........................................................

IV Notions avances de la programmation ExcelCHAPITRE 15. Programmer des vnements utilisateur ................................................. Lobjet Application ....................................Dclaration et instanciation de lobjet Application ............................. Cration de procdures vnementielles de niveau application ............................. Proprits de lobjet Application ............ Mthodes de lobjet Application .............

423

374 375 375 376 377 379 379 379379

425 426 426 427 429 431 431 433 437 438 438 438 440 444 445 445 457 458 459

Emplacement .............................................Height et Width ......................................... Left et Top .............................................. StartUpPosition ......................................

379 380 381381

Lobjet ThisWorkbook ............................... Lobjet Worksheet ...................................... CHAPITRE 16. Protger et authentifier des projets VBA ....................................... Les virus macro ......................................... Se protger des virus macros .....................Dfinir un niveau de scurit dans Excel 2007 .................................... Dfinir un niveau de scurit avec Excel 2000, XP et 2003 .................... Effectuer des sauvegardes des macros .....

Image .........................................................Picture ...................................................... PictureAlignment .................................... PictureSizeMode .................................... PicturePosition ....................................... PictureTiling ..........................................

382 383 384 384 385385

Police .........................................................Font ...........................................................

CHAPITRE 14. Programmer les interfaces utilisateur ........................... Crer des procdures vnementielles ....... Crer une procdure ............................... Les vnements ....................................... Exemples dexploitation des contrles ...... Contrle Label ....................................... Contrle TextBox ....................................

387 388 388 394 400 401 403

Protger laccs aux macros ......................Verrouiller un projet ...............................

Limiter les droits dexcution dune macro 447

Authentifier ses macros .............................Obtenir une authentif cation ................... Authentif er une macro ...........................

X

Excel et VBA

CHAPITRE 17. Bonus : exemple complet dapplication Excel .................................. Prsentation dun projet dapplication Excel .........................................................

Feuille fmContratDates ..........................

498 504 510 511 511 514 517 521

461

Feuille fmContratImpression ................... Feuille fmContratFin ..............................

462 Identif cation des informations recueillir 463 Dfinition de la structu e du programme . 464 470 472 472 484

Cration du modle Excel .......................... Cration des interfaces ...............................Feuille fmContratAuteur ......................... Feuille fmContratConditions ...................

Ecriture des procdures ddition de documents ............................................. Edition des feuilles de paie ..................... Mise jour du Tableau Word .................. ANNEXE . Manipulation des fichiers et des dossiers ........................................... Index ..............................................................

Introduction

Visual Basic pour Applications, VBA, est la solution de programmation propose avec les applications de la suite Of fice. La connaissance de VBA permet lutilisateur dExcel de tirer pleinement profit du tableur de Microsoft en en d eloppant les capacits et les fonctionnalits pour ses besoins spcifiques. Matriser Visual Basic pour Applications, cest coup sr amliorer grandement sa productivit et celle de son entreprise. Lintgration dans Excel de Visual Basic pour Applications, un environnement de dveloppement intgr complet et professionnel, remonte sa v ersion 97. Depuis, Microsoft a confirm sa olont de f aire de VBA un lment part entire des applications Office et la progress vement propos a vec lensemble des applications de sa suite bureautique. Visual Basic pour Applications constitue aujourdhui un lang age et un environnement stables et prennes. Si lenvironnement des applications de la suite 2007 a t trs largement modifi, vec le remplacement des menus classiques des versions prcdentes par un systme de "ruban" et d"onglets", ce nest pas le cas pour la programmation VBA au sein de ces applications. En effet, cette nouvelle suite Office intgre la ersion 6.3 de Visual Basic, dj livre avec Office XP et O fice 2003. Cest pourquoi cet ouvrage se v eut le plus e xhaustif possible et couvre les v ersions 97, 2000, XP, 2003 et 2007 dExcel. En effet, dune version lautre, il ny a pas eu de rvolution. Le modle dobjets sest af fin et les nou elles fonctions dExcel, apparues au cours de s diffrentes versions du logiciel, peuvent galement tre manipules via la programmation VBA. Cependant, le langage, la gestion des programmes, len vironnement et les outils au service du dveloppeur bref, tout ce que vous devez savoir pour programmer Excel et q ue cet ouvrage se propose de vous apprendre restent inchangs dune version lautre.

2

Excel et VBA

Donc, que vous utilisiez encore Excel 97 ou que vous soyez pass la version 2007, soyez rassur : v ous pourrez appliquer les connaissances que v ous aurez acquises lors de la lecture de ce li vre lorsque v ous migrerez dune v ersion lautre dExcel. Mieux, les programmes dvelopps pour Excel 97 fonctionnent avec toutes les versions ultrieures du tableur et, sauf e xception, les programmes dvelopps dans Excel 2007 de vraient fonctionner avec les versions antrieures. Laide de VBA pour Excel 2007 r ecense les nouveauts du modle dobjets dExcel dune version lautre, depuis la version 2007.

Info

Dans cet ouvrage, v ous dcouvrirez les dif frentes mthodes de cration de projets VBA pour Excel, Visual Basic (le lang age de programmation proprement dit) et les outils de dveloppement et de gestion intgrs de Visual Basic pour Applications. Votre initiation la programmation VBA se fera au moyen dexemples de programmes dtaills et comments.ition Dfin

Vous rencontrerez le terme pr ojet tout au long de cet ouvr age. Cest ainsi que lon nomme un ensemble de pr ogrammes dvelopps avec Visual Basic pour Applications.

VBA, cest quoi ?Excel of fre des possibilits trs tendues. Pourtant, quelle que soit la puissance des fonctions dExcel, elles ne peuvent rpondre toutes les situations. La programmation VBA est la solution de personnalisation offerte par Excel, afin dajouter des caractris tiques, des fonctions et des commandes qui rpondent prcisment vos besoins. La programmation VBA peut tre dfinie comme la personnalisation dun logiciel afin d sassurer gain de temps, qualit des documents et simplification des t hes complexes ou fastidieuses. Voici quelques exemples de ce que permettent les programmes VBA :

Combiner un nombre indtermin de commandes. Nous sommes souvent amens rpter ou associer certaines commandes plutt que dautres et ignorer certaines fonctionnalits en fonction de lusage personnel que nous a vons dun logiciel. VBA permet dassocier un nombre illimit de commandes une seule. Vous pouvez ainsi ouvrir simultanment plusieurs documents Excel stocks dans des dossiers ou sur des serveurs diffrents, y insrer des donnes spcifiques et leur appliquer des mises e forme adaptes, en excutant une seule commande cre en VBA. Ajouter de nouvelles commandes et de nouvelles fonctions Excel. VBA permet de crer de nouvelles commandes et dajouter des fonctions au tableur par exemple une

Introduction

3

fonction personnalise qui permet de calculer les tax es retenir sur un salaire (o u, mieux, les primes y ajouter), etc. Vous pouvez, en outre, attacher v os programmes VBA des raccourcis cla vier, des icnes et des commandes de menu afin de amliorer laccessibilit.Figure I.1 VBA permet de personnaliser linterface des applications Office en y ajoutant icnes et commandes de menus.

Automatiser des actions rptiti ves. Nous sommes parfois amens rpter certaines oprations plusieurs fois sur un mme document ou ritrer des traitements spcifiques. Un programme VBA peut, par e xemple, mettre en forme des cellules dans un classeur Excel, effectuer des sries de calculs, etc. Modifier et amlio er les commandes dune application. Les commandes Excel ne sont pas toujours adaptes nos besoins ou prsentent parfois des limitations gnantes. Un programme VBA peut modifie , brider ou complter les commandes dune application. Vous pouvez ainsi intgrer dans un tableau le nom de lutilisateur, le nombre de pages imprimes et limprimante utilise chaque fois quune impression est lance partir dExcel. Faire interagir les diffrentes applications Office Un programme VBA peut exploiter des donnes issues de fichiers gnrs par dautres programmes et interagir vec ceux-ci de f aon transparente pour lutilisateur . Vous pouv ez ainsi crer une commande qui envoie automatiquement le classeur Excel ouv ert en fichier joint dan un mail Outlook des destinataires dfinis ou qui gnre un rapport Word partir de donnes Excel et limprime.

4

Excel et VBA

Crer des interfaces personnalises. Les programmes VBA peuvent ramener des tches comple xes la simple information de champs dans des botes de dialogue personnalises pour lutilisateur final, simplifiant ainsi considrablement le t vail de celui-ci, tout en v ous assurant quaucun oubli ou f ausse manipulation naura lieu.

Visual Basic pour Applications permet le dv eloppement de solutions adaptes v os besoins. Les outils que v ous apprendrez manier v ous permettront de dv elopper des programmes simples, sans crire la moindre ligne de code, comme des programmes complets intgrant une interface utilisateur adapte. La fonction dun programme VBA peut tre dautomatiser une tche rptiti ve. Mais vous pouvez aussi crer trs vite un petit programme VBA pour faire face une ncessit immdiate ; par e xemple, afin de gnraliser un traitement xceptionnel lensembl e dun document.Figure I.2 Visual Basic pour Applications vous permet de dvelopper des interfaces utilisateur volues.

Des programmesLes projets VBA sont des programmes ou macros crits dans le langage Visual Basic. Si vous ne possdez aucune e xprience pralable de programmation, ne v ous inquitez pas : cet ouvrage aborde le dv eloppement de projets VBA tra vers lenregistrement de macros. Lorsque v ous lactivez, lEnregistreur de macro mmorise chacune de v os actions. Cest votre programmeur personnel : vous utilisez simplement les commandes dExcel et il se charge de traduire les actions excutes en instructions Visual Basic. Il vous suffit ensuite d xcuter la macro pour rpter lensemble des commandes enregistres.

Introduction

5

ition Dfin

Le terme macr o dsigne le r egroupement dun ensemble de commandes en une seule. On parle parfois de macr ocommandes pour dsigner un pr ogramme qui se rsume lexcution dune srie de commandes, sans gar d pour le contexte. Des macros plus volues peuvent rpter des opr ations en boucle, affi her des botes de dialogue qui autorisent une inter action avec lutilisateur . Ces pr ogrammes se comporteront dif fremment en fonction des informations entres ou de ltat du document sur lequel elles sexcutent. Le terme pr ojet est plus lar ge. Il dsigne lensemble des lments constituant vos programmes VBA. Il sa git toujours de macros, mais celles-ci peuvent sajouter des feuilles qui constituent une interface utilisateur permettant de rcolter des informations de tout type , des modules de classe , et autres friandises que vous dcouvrirez tout au long de cet ouvrage.

Lenregistrement de macros constitue sans aucun doute le meilleur mo yen de se familiariser avec la programmation en Visual Basic. Ainsi, sans connatre le langage les instructions qui le composent et la f aon dont elles sont structures , v ous pouv ez crer des programmes VBA et en visualiser ensuite le code.

Une application hte et des projetsVisual Basic pour Applications est un environnement de dveloppement calqu sur Visual Basic, un outil de dv eloppement dapplications Windows. Les structures de contrle du langage sont les mmes et len vironnement proprement dit (Visual Basic Editor) est pour ainsi dire identique celui de Visual Basic. Mais, contrairement Visual Basic, Visual Basic pour Applications est conu pour des applications . Cela signifie que, tandis qu les programmes Visual Basic sont autonomes, les programmes VBA ne peuv ent tre excuts qu partir dune application intgrant cet en vironnement de dv eloppement Excel ou une autre application. Lorsque vous dveloppez un programme VBA, vous lattachez une application. Il sagit de lapplication hte du programme. Plus prcisment, v os programmes VBA sont attachs un document (un fichier ou un modle Word, une feuille de calcul Excel, une prsentation PowerPoint) spcifique lapplication hte. ensemble des programmes VBA attachs un document constitue un projet. Un projet re groupe des macros, mais peut g alement intgrer des interf aces utilisateur , des dclarations systme, etc. Un projet constitue en fait la partie VBA dun document. Si cet ouvrage ne traite que de la programmation pour Excel, sachez quun programme VBA peut tre attach une autre application. Les concepts et les outils que v ous dcouvrirez au long de cet ouvrage sont valides pour toutes les applications de la suite Office. Pour xcuter une macro VBA, vous devez a voir accs au document auquel elle est attache. Vous pouv ez choisir de rendre certaines macros disponibles partir de nimporte quel document Excel ou en limiter

6

Excel et VBA

laccessibilit un classeur Excel spcifique. La disponibilit des programmes aborde au Chapitre 2.

VBA est

Un langage de programmationLes projets VBA sont dvelopps dans le langage de programmation Visual Basic. Vous dcouvrirez par la pratique la structure de ce lang age et apprendrez rapidement en discerner les composants et les relations quils entretiennent. Comme nous la vons dit prcdemment, lenre gistrement de macros constitue une e xcellente initiation Visual Basic. Cest sous cet angle que nous vous ferons dcouvrir ce langage. Visual Basic est un lang age de programmation orient objet. Nous prsenterons donc les concepts de la programmation oriente objet (POO). Vous apprendrez ce quest un objet, une proprit, une mthode ou un module de classe, etc. Vous verrez comment conjuguer ces lments pour crer des applications Excel souples et puissantes. Visual Basic pour Applications constitue une bonne approche de la programmation pour le nophyte. Visual Basic pour Applications intgre un grand nombre dinstructions. Cela permet de dvelopper des macros susceptibles didentifier trs prcisment ltat de lapplication e des documents et reproduire le xcution de la plupart des commandes disponibles dans lapplication hte. Vous verrez que certaines instructions sont spcifiques Excel. Cest, par xemple, le cas des instructions permettant daf fecter une formule une cellule. Vous nutiliserez probablement quun nombre limit de ces instructions, en fonction de v otre usage personnel dExcel ou des besoins de votre entreprise. Par ailleurs, certaines instructions spcifiques Excel apparatront presque toujours dans v os macros. Cest, par e xemple, le cas de la proprit Range qui renvoie un objet Excel tel quune cellule ou une plage de cellules. Dautres instructions sont communes lensemble des applications Office. Cest le cas d celles qui permettent de rgler le comportement dune macro : raliser des oprations en boucle, induire des ractions f ace certains paramtres, af ficher des botes de dialogu simples (v oir Figures I.3 et I.4) ou dv elopper des interf aces utilisateur v olues (v oir Figure I.1), etc. Ce sont ces instructions qui constituent vritablement ce quil est convenu dappeler le langage Visual Basic. Vous aurez besoin dy faire appel ds que vous voudrez crer un programme interactif, capable de se comporter diffremment selon le contexte. La plupart de ces instructions ne peuvent tre gnres par enregistrement de macros, et doivent donc tre dites manuellement dans Visual Basic Editor. Cet ouvrage ne se veut pas un dictionnaire du langage, mais un guide qui vous enseignera le dv eloppement de projets VBA de qualit. Vous apprendrez enre gistrer, modifie , excuter et dboguer des macros, crer des interf aces utilisateur ainsi qu grer v os projets VBA. Vous dcouvrirez, tra vers les nombreux e xemples de projets VBA de cet

Introduction

7

ouvrage, un certain nombre dinstructions spcifiques la hirarchie dobjets dExcel, qui vous familiariseront avec la logique de ce langage.Figure I.3 La fonction VBA MsgBox permet daffi her une bote de dialogue.

Figure I.4 Il existe une version VBA et une version Excel de la fonction InputBox.

ition Dfin

La hirarchie dobjets dune application, encor e appele modle dobjets, est le rapport quentretiennent entre eux les diffrents objets dune application. Ce concept ainsi que les notions spcifiques aux lang ges orients objet ser ont dvelopps au Chapitre 1, "Notions fondamentales de la programmation oriente objet".

En revanche, ce livre prsente et illustre dexemples comments lensemble des structures de contrle qui permettront de crer trs simplement des macros v olues. Nous v ous fournirons les bases du lang age Visual Basic. Elles suf fisent pour crer une infinit macros et rpondre vos besoins spcifiques Lorsque les principes du dv eloppement de projets VBA vous seront acquis et que v ous crerez v os propres macros, il v ous arrivera srement da voir besoin dinstructions que vous naurez pas rencontres lors de la lecture de cet ouvrage ; vous pourrez alors utiliser lEnregistreur de macro ou encore les rechercher dans laide de Visual Basic pour Applications ou dans lExplorateur dobjets tudi au Chapitre 4. Vous verrez que laide de Visual Basic pour Applications fournit une rfrence complte du lang age, f acilement accessible et consultable. Si vous navez aucune exprience de programmation, peut-tre ce Visual Basic vous apparat-il comme un lang age barbare ou inaccessible. Ne v ous inquitez pas : le dv eloppement de projets VBA ne requiert ni e xprience pralable de la programmation, ni connaissance globale du lang age. Contentez-vous, au cours de v otre lecture, dutiliser les fonctions ncessaires aux exercices et que nous vous dtaillerons. Cet ouvrage propose un apprentissage progressif et concret : vous dvelopperez vos premiers projets VBA ds les premiers chapitres.

8

Excel et VBA

Un environnement de travailVisual Basic pour Applications dispose dun en vironnement de dv eloppement part entire : Visual Basic Editor.Figure I.5 Visual Basic Editor est lenvironnement de dveloppement de Visual Basic pour Applications.Explorateur de projet Fentre Code Fentre Proprits

Explorateur d'objets

Bote outils

Fentre UserForm

Visual Basic Editor est l environnement de dveloppement intgr des applications Office. Il permet de visualiser et de grer les projets VBA, dcrire, de modifier et d dboguer les macros e xistantes, de visualiser comment les commandes propres une application Off ce sont traduites en langage Visual Basic, et inversement. Cest aussi un outil de dbogage de vos projets VBA dune grande efficacit. Visual Basic Editor propose nombre doutils permettant de tester les macros et den tudier le compo rtement. Vous pouvez ainsi excuter les commandes de la macro pas pas, en sui vre le droulement, insrer des commentaires dans le te xte de la macro, etc. Enfin, Visual Basic Editor intgr e des outils trs intuitifs, ddis au dveloppement dinterfaces graphiques. Vous apprendrez dans cet ouvrage utiliser les nombreux outils de Visual Basic Editor toutes les phases de dveloppement dun projet VBA.

Introduction

9

Conventions typographiquesAfin den aciliter la lecture, nous a vons adopt dans cet ouvrage un certain nombre de conventions typographiques. Lorsquun mot apparat pour la premire fois, il est compos en italique. Les programmes et les mots cls du lang age Visual Basic apparaissent dans une police chasse fixe. Lorsque, dans un programme, un mot signale une information attendue dans le code, celui-ci apparat en italique. Lorsquune ligne de code ne peut tre inscrite sur une seule ligne de louvrage, cette flch () en dbut de ligne indique que le texte est la poursuite de ligne prcdente. Par ailleurs, v ous rencontrerez au long de cet ouvrage dif frents types de notes, signales dans la marge par des pictogrammes. Ces rubriques apportent un complment dinformation en rapport avec le sujet trait. Leur lectur e nest pas indispensable . Mais elles peuvent vous aider mieux cerner le sujet. Vous trouverez sous ces rubriques la dfinition de termes te hniques spcifique la programmation VBA. Ces rubriques vous mettent en garde contre les risques inhrents telle ou telle commande ou manipulation. Il est parfois ncessaire de se rafrachir la mmoire. Lorsquun sujet fait appel des connaissances acquises plusieur s c hapitres aupar avant, cette rubrique vous les remmore brivement. Sous cette rubrique , vous tr ouverez des trucs pour aller plus vite et tr availler plus efficacement Nous vous faisons ici part de notre exprience, en vous prodiguant des conseils qui vous aideront dvelopper des projets VBA de qualit. Ces notes prodiguent des informations spcifiques la ve sion 2007 dExcel.

Info

ition Dfin

ntion Atte

pel Rap

ce Astu

eil Cons

200

7

Partie

I

Dcouvrir la programmation ExcelCHAPITRE 1. Notions fondamentales de la programmation oriente objet CHAPITRE 2. Premires macros CHAPITRE 3. Dplacement et slection dans une macro Excel CHAPITRE 4. Dcouvrir Visual Basic Editor

1Notions fondamentales de la programmation oriente objetAu sommaire de ce chapitre

Comprendre le concept dobjet Le modle dobjets Excel

14

Excel et VBA

Visual Basic est un lang age de programmation orient objet. En tant que tel, il repose sur des concepts communs tous les langages de programmation orients objet. Avant de vous lancer dans la programmation pour Excel, il est important de v ous familiariser avec ces concepts et le v ocabulaire qui les dcrit. Plus concrtement, ce chapitre v ous fera dcouvrir les diffrents composants du langage Visual Basic en tant que langage orient objet et comment ils sarticulent pour crer des programmes VBA puissants. Vous ne trouv erez pas dans ce chapitre de programmes VBA. Il est destin v ous faire acqurir les bases et la terminologie sur lesquelles nous nous appuierons tout au long de cet ouvrage. Alors, patience ! Les connaissances quil vous apportera permettront dapprhender vos premiers programmes ds le Chapitre 2.

Comprendre le concept dobjetComme pour tous les lang ages de programmation objet, les objets sont le fondement de Visual Basic. Quelle que soit la fonction dun programme VBA, presque toutes les actions quil excute sapparentent la modification dobjets Les ouvrages prsentant la programmation oriente objet (POO) le font presque toujours par analogie a vec les objets de la vie relle. Nous ne drogerons pas cette rgle. La programmation oriente objet repose en ef fet sur une structure qui rappelle, par de nombreux points, les objets de la vie courante et les rapports quils entretiennent. Lanalogie avec les objets de la vie relle rend simples et faciles daccs des concepts qui, abords de faon abstraite, vous apparatraient probablement obscurs.

Objets et collections dobjetsDans la vie, un objet peut tre tout et nimporte quoi. Ce qui caractrise un objet, cest son existence physique, ses proprits spcifiques, son comportement et les actions que lo peut e xcuter sur celui-ci. Une v oiture est un objet. Lorsque v ous parlez de lobjet Voiture, vous pouvez f aire rfrence un objet abstrait ("Je v ais acheter une v oiture") comme une v oiture bien concrte ("Mate un peu ma belle 2CV rouge"). Les objets que vous utiliserez dans vos programmes VBA rpondent une mme dfinition Dans le premier cas, v ous voquez un objet Voiture imprcis, et pourtant tout le monde comprend de quoi v ous parlez. Il v ous suf fit de prononcer le mot " oiture" pour que chacun imagine et visualise une v oiture bien spcifique, en fonction de ses gots, de se aspirations, de ses souv enirs, etc. Cependant, quelle que soit la v oiture imagine, en tant proprits (une carrosserie, des quobjet Voiture, elle possde un certain nombre de roues, un moteur , etc.) et autorise un certain nombre de mthodes (dmarrer , freiner , tourner, etc.) qui permettent den matriser le comportement.

Chapitre 1

Notions fondamentales de la programmation oriente objet

15

Ce sont ces proprits et ces mthodes, communes toutes les v oitures, qui dfinissen lobjet Voiture. Elles sont sous-entendues, videntes et essentielles. Il e xiste donc des milliers de voitures diffrentes, toutes reconnaissables par un certain nombre de caractVoiture. En POO, cet objet ristiques communes dfinies dans le concept (lobjet) abstrait est appel la classe Voitures. La classe Voitures est la dfinition formelle des obj ts Voiture (leurs proprits et leurs mthodes). Il sagit du modle partir duquel v ous pouvez imaginer et crer des milliers de v oitures diffrentes. Lensemble des vhicules appartenant la classe Voitures (parce quils possdent les proprits et les mthodes dfinies dans cette classe) est appel la collection dobjets Voitures. Une collection porte le nom pluriel des objets quelle rassemble.

Info

Ainsi, la collection WorkBooks renvoie tous les objets Workbook, soit tous les classeurs WorkBook, la proprit ouverts, la collection Sheets, toutes les feuilles dun objet Worksheets, toutes les feuilles de calcul dun objet Workbook, etc. La section "Le modle dobjets dExcel" situe en fin de chapitre ous permettra de dcouvrir les objets Excel les plus importants. Le terme Classe dsigne la dfinition commune dun ensemble dobjets (quest ce quune voitur e ?), tandis quune Collection dsigne lensemble des objets appartenant une classe (toutes les voitures en circulation).

ition Dfin

Lorsque v ous parlez dacheter la 2CV rouge de v os rv es, v ous v oquez une v oiture concrte, bien spcifique. Vous crez une instance on parle aussi dune occurrence de lobjet Voiture. Elle possde toutes les proprits de la classe Voitures, mais ces proprits sont attaches des v aleurs prcises. La carrosserie est rouge, la vitesse maximale est de x km/h, etc. Vous pouvez matriser le comportement de v otre voiture laide des mthodes dfinies dans la classe Voitures (Acclrer, Freiner), mais lef fet prcis de ces mthodes est troitement li aux proprits de v otre v oiture. La puissance du moteur ne permet pas datteindre 200 km/h (mais v ous pouvez dcapoter !) ; les freins ne sont pas quips du systme ABS, il faut donc telle distance pour freiner, etc. Un programme VBA peut ainsi crer une feuille de calcul Excel en appliquant la m thode Add (ajouter) la collection WorkBooks et dterminer les proprits de ce classeur (son nom, ses options de protection, le nombre de feuilles qui le composent, etc.) Lorsque vous crez une instance dobjet, cet objet possde toutes les proprits et mthodes dfinies dans la classe de lobjet. Ce principe essentiel de l programmation oriente objet est appel instanciation.

Info

16

Excel et VBA

Le grand intrt de la programmation oriente objet est quil nest pas utile de sa voir comment fonctionne un objet pour lutiliser. Lorsque vous achetez une voiture, vous navez pas besoin de sa voir comment la carrosserie et le moteur ont t f abriqus, ni comment les diffrents composants sont assembls, v ous v ous contentez de choisir un modle, une couleur, etc. Il vous suffit de connatre les mthodes propres la classe Voitures pour lutiliser. Avec VBA, lorsque vous crez une instance dun objet, vous en dfinissez les proprit sans vous proccuper de la faon dont celles-ci seront appliques. Il en va de mme pour les mthodes que vous utilisez pour matriser le comportement dun objet. Lorsque vous tournez la cl de contact, le moteur de la v oiture dmarre, sans que v ous ayez v ous soucier du dtail des vnements et des technologies mises en uvre. VBA permet, par e xemple, de crer des interf aces graphiques pour v os programmes, en dposant simplement les objets dont v ous a vez besoin (cases cocher , zones de te xte, boutons de commandes, etc.), sur une feuille. Ces objets ont des comportements spcifiques que otre programme exploitera, sans que vous ayez besoin de vous soucier de leur mcanisme interne.

Application hte et modles dobjetsLorsque vous dvelopperez des programmes VBA, vous agirez sur des objets qui v arieront en fonction des actions que vous souhaitez que votre programme excute. Vous dfinirez et asso cierez ces objets de f aon crer une application complte. L encore, lanalogie a vec les objets de la vie courante est rvlatrice. Les objets que nous utilisons sont gnralement ordonns selon leur fonction. Lorsque v ous souhaitez vous laver, vous vous dirigez vers la salle de Bains ; il sagit du lieu consacr la toilette. Vous y trouvez un certain nombre dobjets tels que Savon, Gant de toilette, Dentifrice, Brosse dents, etc. Vous utilisez le sa von avec le g ant de toilette, le dentifrice avec la brosse dents, et vous pouvez faire une toilette complte. Si vous souhaitez manger, cest 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 trouv er de brosse dents, ni aucun des objets spcifiques l toilette. Par contre, v ous pourrez utiliser le four , ouvrir le frigo et utiliser tous les objets spcifiques de la cuisine Les applications du Pack Office sont comparables aux pices de otre maison. Lorsque vous choisissez de dvelopper un projet VBA, vous choisissez une application hte. Il sagit de lapplication Of fice qui contient les objets sur lesquels ous souhaitez agir . Cest dans cette application que v ous dvelopperez vos programmes, et cest uniquement partir de cette application quils pourront tre e xcuts. Si v ous souhaitez tra vailler sur des te xtes, vous choisirez dentrer dans Word ; pour faire des calculs, v ous savez que cest dans Excel que vous trouverez les objets dont v ous avez besoin ; Access sert au dv eloppement et au maniement des bases de donnes et PowerPoint, la cration de prsentations.

Chapitre 1

Notions fondamentales de la programmation oriente objet

17

Cependant, limage des pices de v otre maison, les applications Of fice ne sont pa hermtiques. Vous pouvez parfaitement vous prparer un plateau repas dans la cuisine et choisir de manger au lit. De f aon semblable, des projets VBA volus peuvent utiliser des objets de dif frentes applications Of fice. Un programme d elopp dans Excel peut utiliser des donnes stockes dans une base de donnes Access ou des objets Word pour imprimer un courrier qui accompagnera une f acture, et en voyer un message Outlook de confirmation. Vous devez alors choisir une application hte pour votre projet. Deux critres doivent la dterminer :

Votre programme sera plus performant et plus simple dvelopper si lapplication hte est celle dans laquelle sexcute lessentiel des instructions du programme. La prsence du programme dans lapplication hte doit tre logique, et lutilisateur final doit y voir un accs f acile puisque le programme ne pourra tre e xcut qu partir de celle-ci. Tous les projets dvelopps dans cet ouvrage seront hbergs dans Excel. Pour accder aux objets dune application autre que lapplication hte, vous utiliserez la technologie Automation. Laccs aux objets dune autre application est trait au Chapitre 6.

Info

Lapplication est donc la pice dans laquelle v otre programme se xcutera. Celle-ci est compose dun certain nombre dobjets constituant une bibliothque dobjets dont les rapports sont prcisment dfinis. Les objets dune application et les rapports quil entretiennent sont reprsents sous la forme dun organigramme. Tout en haut de lorganigramme se trouve lapplication (la pice dans laquelle sont rangs tous les objets). Viennent ensuite les classes dobjets de premier ni veau de lapplication, auxquelles sont lis dautres objets ou classes, et ainsi de suite. On appelle cette structure le modle dobjets ou la hirarchie de classes de lapplication. La Figure 1.1 reprsente ce qui pourrait tre un modle dobjets sommaire de lapplication Salle de bains.Figure 1.1 Lensemble des objets dune application est structur selon un modle dobjets qui en dfinit les apports et la hirarchie.Placard

Pice (Salle de bain)

Rangements

Conteneurs

Produits de nettoyage

Armoire

Etagres

Baignoire

Lavabo

Bidet

Savons

Shampooings

Dentifrices

Savon Surgras

Savon de Marseille

Savon Monjoli

18

Excel et VBA

Info

La plupart des lments dExcel peuvent tre manipuls dans Visual Basic pour Applications en tant quobjets. Un classeur Excel, une feuille de ce classeur , une cellule ou une bote de dialo gue Rechercher sont des objets qui peuvent tre manipuls dans un programme Visual Basic.

Au sommet du modle se trouv e la pice lapplication. Tous les objets auxquels v ous pouvez accder y sont contenus. Si lon tablit un modle dobjets pour lensemble des pices de la maison, on retrouvera toujours lobjet Pice au sommet du modle. De la mme f aon, au sommet des modles dobjets des applications Office, se trou e lobjet Application.Figure 1.2 Le modle dobjets dExcel.

Viennent ensuite les classes situes immdiatement sous lobjet Pice. Plus on progresse dans le modle dobjets, plus les objets sont prcis et donc spcifiques de la pice ou d

Chapitre 1

Notions fondamentales de la programmation oriente objet

19

lapplication. Par exemple, dans Excel, sous lobjet Application se trouve la collection (ou classe) Workbooks qui englobe tous les objets Workbook, cest--dire tous les classeurs Excel ouverts. Sous lobjet Workbook se trouv e la classe Worksheets qui englobe tous les objets Worksheet (toutes les feuilles de calcul) de lobjet Workbook dsign.ce Astu

Pour accder laide en ligne des objets Excel, c hoisissez la rubrique Rfrences Visual Basic pour Microsoft Excel de laide de Visual Basic Editor (Rfrence du dveloppeur Excel 2007 si vous utilisez la dernir e ver sion du lo giciel), puis slectionnez la commande Objets Microsoft Excel (Rfrence des modles objet Excel avec la ver sion 2007). Vous apprendrez accder Visual Basic Editor au prochain chapitre.

Notez que le fait que des objets appartiennent des branches distinctes du modle dobjets ne signifie pas quils ne peu ent pas interagir. Lobjet Savon de Marseille peut se trouver sur ltagre, et v ous pouv ez utiliser la mthode Dplacer pour le mettre dans lobjet Baignoire, comme dans lobjet Lavabo. Un objet peut englober dautres objets. Un objet intgrant dautres objets est qualifi d conteneur. Cest le cas de lobjet Application, mais cest aussi vrai pour beaucoup dautres objets du modle dobjets dExcel. Par exemple, un objet Workbook contient des objets Worksheet (feuilles de calcul), contenant eux-mmes des objets Range (cellules et plages de cellules).

Accder aux objetsLe modle dobjets dtermine le chemin emprunter pour accder un objet. Pour vous la ver les dents, v ous devez dabord accder v otre brosse dents. Mme si le processus est inconscient, v ous identifiez lobjet Brosse dents par son emplacement : il est situ dans la salle de bains, parmi les objets et produits de toilette. De la mme f aon, en Visual Basic, v ous de vez identifier un objet vant de pouv oir agir dessus (appliquer lune de ses mthodes ou modifier la aleur de lune de ses proprits). Lorsque v ous souhaitez v ous la ver les dents, v ous pensez et sui vez inconsciemment les tapes suivantes :

aller la Salle de bains ; se diriger vers les Produits de toilette ; choisir parmi ceux-ci le dentifrice et sen saisir.

Pour accder un objet Excel, v ous oprerez selon le mme mode, cest--dire en partant de lobjet situ le plus haut dans la hirarchie dobjets et en progressant dans celle-ci jusqu atteindre lobjet voulu.

20

Excel et VBA

Le point est utilis comme sparateur entre les dif frentes collections et objets que lon rencontre avant datteindre lobjet voulu. La rfrence un objet prcis dune collection se fait selon la syntaxe suivante :Nom_Collection("Nom_Objet")

Le code VBA permettant daccder lobjet Dentifrice serait :Piece.ProduitsNettoyants("Dentifrice").Prendre

La premire partie du code permet daccder lobjet Dentifrice; lexpression identifiant un objet est appele rfrentiel dobjet. La mthode Prendre est ensuite applique cet objet afin de sen saisi . Le code Visual Basic permettant dappeler la feuille de classeur Excel nomme "MaFeuille", et situe dans le classeur "MonClasseur" ( condition que celui-ci soit ouvert), serait :Application.Workbooks("MonClasseur").Sheets("MaFeuille").Activate

On accde lobjet Workbook MonClasseur de la collection Workbooks (tous les classeurs Sheets (toutes les ouverts), puis la feuille nomme "MaFeuille" de la collection feuilles de lobjet MonClasseur). Une fois le chemin daccs lobjet indiqu, on lui applique la mthode Activate pour lactiver.Outre leur nom, les objets dune collection sont identifis au sein de la collectio par une valeur dindice r eprsentant leur position dans la collection. Cette valeur peut tre utilise pour renvoyer un objet dune collection, selon la syntaxe suivante :Nom_Collection(IndexObjet)

Info

o IndexObjet r eprsente la position de lobjet dans la collection. L suivante :Workbooks(2).Activate

instruction

active le classeur Excel apparaissant en deuxime position dans le menu fentre 2.

Poursuivons lanalogie. Si v ous vous trouvez dj dans la salle de bains au moment o vous dcidez de vous laver les dents, vous navez pas besoin dy accder. Si vous avez dj le nez parmi les produits de toilette, il est inutile dy faire rfrence. De faon semblable, dans le code VBA, les objets de niveau hirarchique suprieur celui de lobjet que v ous souhaitez atteindre peuv ent parfois tre ignors. Cest toujours le cas pour lobjet Application. En ef fet, votre projet VBA tant stock et donc excut partir dune application hte, il est inutile de rappeler que v ous tes dans cette application.

Chapitre 1

Notions fondamentales de la programmation oriente objet

21

Lexpression :Workbooks("MonClasseur").Sheets("MaFeuille").Activate

suffit donc act ver la feuille intitule "MaFeuille" du classeur nomm "MonClasseur". Selon le mme principe, en cas dabsence de rfrentiel dobjets, la collection Sheets concerne le classeur actif. Si MonClasseur est le classeur actif, on peut donc se dispenser de toute rfrence cet objet. On obtient alors linstruction suivante :Sheets("MaFeuille").Activate

Info

Une petite finesse terminol gique : les objets pr oprement parler nappar aissent jamais dans le code . Pour faire rfrence un objet, on utilise une pr oprit qui appelle ou r envoie lobjet voulu. Dans les e xemples prcdents, Workbooks est une proprit de lobjet Application, qui renvoie tous les classeur s ouverts (la classe Workbooks). Sheets est une pr oprit de lobjet Workbook, qui r envoie toutes les feuilles de classeur (la classe Sheets) de cet objet.

Les propritsRevenons lanalogie a vec lautomobile et prenons la classe Voitures. T outes les proprits propres aux objets Voitures y sont dfinies. Les objets ou classes situ immdiatement sous Voitures dans le modle dobjets appartiennent la collection dobjets Voitures. En tant que tels, ils hritent de toutes les proprits dfinies dans l classe Voitures. Les proprits peuvent tre un attribut de lobjet ou un aspect de son comportement. Par exemple, les proprits dune v oiture sont, notamment, sa marque, son modle, ltat des pneus, lactivation ou non du moteur , etc. Les proprits dun document Word sont son modle, son nom, sa taille, etc. Les proprits prennent des v aleurs spcifiques qui distinguent les di frents objets de la collection. La proprit Couleur dun objet Voiture peut prendre la v aleur Rouge, tandis que la mme proprit dun objet de la collection est attache la valeur Bleu. Lorsque v ous dv elopperez des programmes VBA, v ous e xploiterez les proprits dun objet de deux faons :

En modifiant les aleurs attaches aux pr oprits de lobjet. Pour modifier u objet, il suffit de changer les aleurs de ses proprits. Les proprits dont les v aleurs peuvent tre modifies sont dites en lecture-criture Certaines proprits ne peuv ent tre modifies et sont dites en lecture seule. Vous pouvez, par e xemple, modifier la proprit Etat_du_moteur (allum ou teint) dun

22

Excel et VBA

objet Voiture, mais non sa proprit Marque. Vous pouv ez modifier le nombre d feuilles qui composent un classeur, mais non sa date de cration.

En interrogeant les v aleurs attaches aux pr oprits dun objet. Les v aleurs des proprits peuvent tre lues afin de connatre les spcificits de lobjet et dorienter comportement du programme. Par exemple, si la proprit Marque dun objet Voiture est af fecte la v aleur BMW et sa proprit Contenu_Rservoir, af fecte une valeur gale 40 (litres), v ous ferez un plein 40 euros. Si les proprits Marque et Modle sont respecti vement af fectes aux v aleurs Citron et 2CV et la proprit Contenu_Rservoir, une valeur gale 20, vous ne ferez quun plein 20 euros. De la mme f aon, un programme VBA peut e xcuter des instructions tant que le nombre de classeurs ouverts est diffrent de zro (Workbooks.Count 0).

Types de valeurs des propritsLes valeurs affectes aux proprits dun objet peuvent tre de quatre types :

une chane de caractres ; une valeur numrique ; une valeur boolenne ; une constante.

Chanes de caractres Une chane de caractres est une suite de caractres contigus lettres, chiffres, espaces ou signes de ponctuation. Ces donnes sont aussi qualifies de type Chane ou String. Une chane de caractres peut contenir jusqu en viron deux milliards de caractres. En Visual Basic, les chanes de caractres sont places entre guillemets. Les exemples suivants sont des chanes de caractres :

"Paul" ; "1254" ; "Je suis une chane de caractres compose de 59 caractres".

Les chanes de caractres sont interprtes en tant que caractres, et non en tant que valeur numrique. Autrement dit, la chane "1254" est interprte comme la combinaison des caractres 1, 2, 5 et 4. Par exemple, la proprit Modle dun objet Voiture est toujours une chane de caractres. Celle-ci ne peut tre compose que de chif fres par exemple "2000" , sans que v ous puissiez pour autant diviser cette valeur par un nombre quelconque.

Chapitre 1

Notions fondamentales de la programmation oriente objet

23

Valeurs numriques Une valeur numrique est une suite de chif fres. Elle peut tre un nombre entier ou dcimal, positif ou ngatif. Les exemples suivants sont des valeurs numriques :

0; 1 548 972 ; 1 245,4542 ; 100E4. Le caractre E dans une variable numrique signifie "Exposant". Ainsi, la valeur numrique 100E4 est gale 100 104.

Info

Les v aleurs numriques sont interprtes comme des chif fres. Il peut sagir de v aleurs comme dexpressions conjuguant valeurs numriques et oprateurs arithmtiques (* / +). Par exemple, les proprits Contenu_Rservoir et Consommation dun objet Voiture sont des valeurs numriques. La combinaison de ces proprits permet de dterminer combien de kilomtres peuvent tre parcourus avant la panne sche, selon lexpression arithmtique :Kilomtres_Avant_Panne_Sche = Contenu_Rservoir / Consommation

Info

Notez quune e xpression arithmtique peut tr e compose de nombr es (100 25), de variables auxquelles sont af fectes des valeur s numriques (nombre1 nombre2), ou dune combinaison des deux (nombr e1 25). Les variables sont tudies en dtail au Chapitre 6.

Les valeurs numriques pouvant tre affectes une proprit varient avec les proprits et les objets. Par exemple, dans Excel, la taille dune police doit tre comprise entre 1 et 409. Size (taille) dun objet Font Par consquent, la v aleur que peut prendre la proprit (police) dExcel doit aussi tre comprise entre ces deux v aleurs. Dans le cas de lobjet Voiture, la proprit Contenu_Rservoir doit toujours tre suprieure 0, la valeur maximale dpendant dautres spcificits de lobjet, telles que ses proprits Marque et Modle. Valeurs boolennes Certaines proprits ne peuv ent prendre que deux tats : elles sont vrifies ou elles ne l sont pas. Ces proprits sont attaches une v aleur de type Boolean, ou valeur boolenne. Une valeur boolenne peut tre True ou False.

24

Excel et VBA

La proprit Moteur_Allum dun objet Voiture est attache une v aleur boolenne. La Voiture est allum. Dans le cas valeur True lui est af fecte si le moteur de lobjet contraire, la proprit Moteur_Allum sera gale False. Comme vous le verrez au Chapitre 15, un classeur Excel gre une vingtaine de proprits qui reprsentent ses options et son tat un moment donn. Nombre de ces proprits acceptent une valeur de type Boolean. Cest par exemple le cas de la proprit Saved qui renvoie True si aucune modification na t apporte au document depuis son dernier enre gistrement, et False dans le cas contraire. En Visual Basic, la valeur True peut tre remplace par 1, et la valeur False, par 0. Cette pratique est cependant dconseille, puisquelle rend la lecture du code moins aise.

Info

Constantes Les constantes sont des valeurs intgres de VBA qui conservent toujours la mme valeur. Lorsquune proprit accepte un nombre dtermin dtats, les v aleurs reprsentant ces tats sont souv ent reprsentes sous forme de constantes. Celles-ci se prsentent sous la forme dune suite de lettres. Les constantes sont reprsentes sous forme de chanes de caractres, mais correspondent en ralit des valeurs numriques. Les constantes intgres dsignent ltat de proprits pour un objet spcifique. Chacun des applications Office possde ses propres constantes (puisquelle possde ses propre objets). Cependant, certaines proprits tant communes toutes les applicati ons de la suite Office, les constantes dsignant leur tat se retrou ent aussi dans toutes les applications Office. Les constantes intgres de VBA commencent par deux lettres indiquant lapplication laquelle appartient la constante. Ces prfi es des constantes VBA sont les suivants :vb wd xl pp ac ol fp bind mso fm Visual Basic Word Excel PowerPoint Access Outlook FrontPage Classeur Ofce Ofce Feuilles Visual Basic

Lorsquune proprit accepte des constantes pour valeurs, le nombre de ces constantes est dtermin et correspond aux diffrents tats que peut prendre la proprit. Par exemple, les clignotants dune v oiture peuv ent accepter quatre tats dif frents : dsacti vs, acti vs droite, acti vs g auche, position Warning (les clignotants droite et g auche acti vs).

Chapitre 1

Notions fondamentales de la programmation oriente objet

25

La proprit Etat dun objet Clignotant pourrait donc accepter lune des quatre constantes Clignotant, chacune correspondant lun de ces tats possibles :ClignotantAucun ClignotantDroite ClignotantGauche ClignotantWarning

Excel intgre un nombre important de constantes. Lorsquune commande Excel e xige de lutilisateur la slection dune option parmi plusieurs possibles, ces options sont gnralement reprsentes sous forme de constantes en lang age VBA. Par exemple, lorsque v ous insrez une cellule dans une feuille de classeur (Insertion, Cellules), v ous devez choisir entre les options Dcaler les cellules v ers la droite ou Dcaler les cellules v ers le bas. Linstruction VBA correspondante sera :Selection.Insert(Shift)

o lar gument Shift est une des constantes XlInsertShiftDirection spcifiant l mthode Insert la f aon dont la cellule sera insre. Il peut sagir de la constante xlShiftToRight (les cellules seront dcales vers la droite) ou de la constante xlShiftDown (les cellules seront dcales vers le bas). Les constantes sont la r eprsentation textuelle de valeur s numriques. Chacune des constantes Clignotant correspond une valeur numrique . La pr oprit ClignotantWarning pourrait, par e xemple, correspondre la valeur numrique 3. Vous pouvez indiffremment utiliser les constantes VBA ou les valeurs numriques auxquelles elles correspondent. Il est cependant conseill dutiliser les constantes, afin de faciliter la lectu e du code . Si vous compr enez langlais, les constantes vous sembler ont en ef fet plus parlantes que de simples chiffres.

Info

Accder aux propritsPour modifier une proprit dun objet, on utilise la synta e suivante :Expression.Proprit = valeur

o Expression est une expression renvoyant un objet un rfrentiel dobjet , tel que cela a t dcrit dans la section prcdente. Proprit est le nom de la proprit que lon souhaite modifier (toujours spare de lobjet auquel elle se rfre par un point) et valeur, la valeur que vous souhaitez lui affecter. Le type de la v aleur (chane, v aleur numrique, constante ou v aleur boolenne) doit tre adapt la proprit. Si tel nest pas le cas, le programme gnre une erreur. Par exemple,

26

Excel et VBA

la proprit Contenu_Rservoir dun objet Voiture naccepte quune valeur numrique ; vous ne pouvez pas lui affecter une chane de caractres. Le Tableau 1.1 illustre diffrentes possibilits de modifier lobjet Voiture "MaVoiture" :Tableau 1.1 : Pour modier un objet, il suft den changer les proprits

Syntaxe Voitures("MaVoiture") .Immatriculation = "4444AB29" Voitures("MaVoiture").Moteur_Allume = True Voitures("MaVoiture").Contenu_Rservoir = 50 Voitures("MaVoiture").Cligotant.Etat = ClignotantWarning

Type de la valeur affecteChane de caractres Valeur boolenne Valeur numrique Constante

Consquence pour lobjet VoitureUne nouvelle immatriculation Le moteur est allum Le rservoir contient 50 litres Lobjet clignotant est en position Warning

Pour lire la v aleur dune proprit dun objet, on stock e gnralement cette v aleur dans une variable, selon la syntaxe suivante :variable = Expression.Proprit

Linstruction suivante passe la fentre acti ve en mode daf fichage Sauts de page, en df nissant sa proprit View xlPageBreakPreview.ActiveWindow.View = xlPageBreakPreview

Linstruction suivante stocke dans la variable TypeAffichage la aleur reprsentant le type daffichage en coursTypeAffichage = ActiveWindow.View

Les mthodesLes mthodes reprsentent les actions quun objet peut e xcuter. Tandis que les proprits dfinissent un tat, les mthodes dterminent un comportement. Les mthodes pou ant tre appliques un objet dpendent troitement de lobjet. Les objets de la classe Voitures supportent des mthodes telles que Tourner, Freiner, Acclrer, etc. Cependant, certaines mthodes peuv ent tre communes des objets dif frents, mme si elles ont des consquences dif frentes. Par exemple, la mthode Ouvrir peut sappliquer

Chapitre 1

Notions fondamentales de la programmation oriente objet

27

aux objets Porte, Coffre ou Cendrier dune voiture, comme un objet Porte ou Robinet dune maison. Certaines mthodes se retrouv ent dans toutes les applications Of fice. Ces le cas pour toutes les mthodes correspondant des commandes de menu communes aux applications. Par exemple, les mthodes Open (ouvrir) et Close (fermer) peuv ent sappliquer un classeur Excel comme un document Word, un formulaire Access ou encore une prsentation PowerPoint. Une mthode peut a voir des consquences sur ltat de certaines proprits de lobjet auquel elle sapplique, v oire sur dautres objets. P ar e xemple, si v ous appliquez la mthode Acclrer un objet Voiture, la v aleur affecte la proprit Vitesse de cet objet augmentera. Si vous modifiez le contenu dune cellule dun classeur Excel, la taille de la cellule pourr tre modifie en consquence. Si dautres cellules sont lies par des formules la cellul dont vous modifiez la aleur, leurs v aleurs seront mises jour en consquence. Chaque fois que v ous crez un nouv eau classeur laide de la mthode Add, la v aleur de la proprit Count de la collection Workbooks (le nombre de classeurs ouverts) est incrmente de 1. Chaque fois que v ous fermez le classeur laide de la mthode Close, la valeur de la proprit Count de la collection Workbooks est dcrmente de 1. En outre, pour excuter correctement une mthode, il est parfois ncessaire de modifier a pralable les proprits de lobjet auquel elle sapplique. P ar exemple, si v ous souhaitez appliquer la mthode Tourner un objet Voiture, v ous de vez aupara vant modifier l proprit Etat_Clignotant de lobjet Clignotant de cette voiture. La syntaxe permettant dappliquer une mthode un objet est :Expression.Mthode

o Expression est une expression renvoyant un objet un rfrentiel dobjet , tel que cela a t dcrit dans la section prcdente. Mthode est le nom de la mthode que lon souhaite excuter (toujours spare de lobjet auquel elle se rfre par un point). Une mthode peut aussi sappliquer une collection dobjets. La syntaxe est alors :Collection.Mthode

o Collection reprsente la collection dobjets sur laquelle on souhaite agir , et Mthode, une mthode commune aux objets de la collection. Vous pouvez, par e xemple, arrter toutes les v oitures de la collection Voitures, en leur appliquant la mthode Arrter:Voitures.Arrter

28

Excel et VBA

Pour fermer tous les classeurs ouv erts dans une session Excel, v ous utiliserez linstruction suivante :Workbooks.Close

Cette syntax e est aussi utilise pour crer une occurrence dun objet de la collection Collection. La mthode utilise est alors gnralement la mthode Add lquivalent Visual Basic de la commande Nouv eau du menu Fichier . P ar e xemple, pour crer un nouveau classeur Excel, vous ferez appel la collection Workbooks (Workbooks.Add). Vous pouvez ensuite dfinir les proprits de lobjet ainsi cr, comme nous l dans la section "Les proprits" de ce chapitre. vons vu

Les vnementsUn vnement est une action reconnue par un objet. La reconnaissance dun vnement par un objet permet de dclencher lexcution dun programme lorsque cet vnement survient. On parle alors de procdure vnementielle. Un clic de souris ou la frappe dune touche sont des exemples dvnements pouvant tre interprts par un programme VBA. Une procdure vnementielle est une procdure attache un vnement utilisateur tel quun clic de souris, la frappe dune touche, lactivation dune feuille de calcul, etc. La procdure sexcute lorsque lvnement auquel elle est attache est reconnu par lapplication.

ition Dfin

Les objets de la collection Voitures peuvent, par exemple, reconnatre lvnement Choc. Choc entrane Un objet Voiture peut tre conu pour que la dtection de lvnement louverture de lobjet Airbag, autrement dit lapplication de la mthode Ouvrir cet objet. Les vnements sutilisent essentiellement a vec les contrles de formulaires que v ous dvelopperez et a vec les objets. Vous apprendrez e xploiter les vnements utilisateur affectant un formulaire aux Chapitres 13 et 14. Les feuilles de calcul, les graphiques, les classeurs et lapplication Excel grent aussi des vnements. Vous apprendrez crer des procdures vnementielles pour ces objets au Chapitre 15.

Les fonctionsLes fonctions servent renvoyer une information, selon les lments qui leur sont fournis. Le type de linformation renvoye varie dune fonction lautre. Il peut sagir dune chane de caractres, dune v aleur numrique, boolenne, de type Date, etc. Visual Basic int gre un certain nombre de fonctions que v ous pouvez exploiter directement. Par exemple, la fonction Asc renvoie le code ASCII du caractre slectionn, tandis que la fonction Int renvoie la partie

Chapitre 1

Notions fondamentales de la programmation oriente objet

29

entire dun nombre. Certaines fonctions sont particulirement utiles. Cest le cas de la fonction MsgBox qui permet daf ficher une bote de dialogue contenant des boutons tels que Oui, Non Annuler, etc., et qui renvoie une valeur refltant le choix de lutilisateu . Vous pouv ez aussi crer v os propres fonctions qui traiteront les v aleurs qui leur seront passes pour renvoyer une valeur ensuite utilise par le programme. Dans le cas dun objet Voiture, v ous pouv ez crer une fonction Cot_Plein qui e xploitera les proprits Contenu_Rservoir et Contenance_Rservoir de lobjet, ainsi quune v ariable reprsentant le prix de lessence, pour renvoyer une valeur correspondant au cot dun plein. Lorsque vous crez des fonctions VBA pour Excel, celles-ci sont accessibles pour lutilisateur final comme nimporte quelle fonction Excel intgre Les fonctions ont gnralement besoin de paramtres ou arguments. Si les arguments obligatoires dune fonction ne lui sont pas passs au moment de lappel, une erreur est gnre. Dans le cas prcdent, trois paramtres de type numrique doi ent tre passs la v fonction Cot_Plein pour quelle se xcute correctement : le contenu du rserv oir, sa contenance et le prix de lessence.

Le modle dobjets dExcelExcel est lapplication Of fice qui supporte VBA depuis le plus longtemps et son modle dobjets est le plus mr . Excel of fre de multiples possibilits de personnalisation au programmeur. Les objets les plus importants sont prsents dans le Tableau 1.2. Le Listing 1.1 prsente des e xemples dinstruction VBA utilisant ces objets. L essentiel de ces e xemples a t gnr laide de lEnregistreur de macro, sans quil soit ncessaire dcrire du code.Tableau 1.2 : Les objets cls du modle dobjets dExcel

Collection (objet)Objets de niveau Application

Description

Add-ins (Add-in)

Lensemble des macros complmentaires, charges ou non. Accessibles dans la bote de dialogue Macros complmentaires (Outils, Macros complmentaires). Lensemble des barres de commande de lapplication. Les botes de dialogue prdnies dExcel. Renvoie des informations sur les paramtres de langue utiliss dans lapplication.

CommandBars (CommandBar) Dialogs (Dialog) LanguageSettings

30

Excel et VBA

Tableau 1.2 : Les objets cls du modle dobjets dExcel (suite)

Collection (objet) Names (Name) Windows (Window) Workbooks (Workbook) Worksheetfunction

DescriptionLensemble des objets Name de niveau Application. Un objet Name reprsente un nom dni pour une plage de cellules nomme. Lensemble des fentres disponibles (accessibles via le menu Fentre). Lensemble des classeurs ouverts. On utilise lobjet Worksheetfunction pour accder aux fonctions de feuilles de calcul partir de VBA. Faites suivre la proprit Worksheetfunction dun point, puis du nom de la fonction et de ses arguments entre parenthses.

Objets de lobjet Workbook

Charts (Chart) Names (Names) Styles (Style)

Lensemble des feuilles graphiques de lobjet Workbook. Lensemble des objets Name pour le classeur spci. Lensemble des styles disponibles dans un classeur. Il peut sagir dun style dni par lutilisateur ou dun style prdni, tel que les styles Millier, Montaire ou Pourcentage (Format, Styles). Lensemble des fentres pour le classeur spci. Lensemble des feuilles de calcul de lobjet Workbook dsign.

Windows (Window) Worksheets (Worksheet)Objets de lobjet Worksheet

Names (Name) Range Comments (Comment) HPageBreaks (HPageBreak) VPageBreaks (VPageBreaks) Hyperlinks (Hyperlink) Scenarios (Scenario) OLEObjects (OLEObject) Outline PageSetup

Lensemble des objets Name pour la feuille de calcul spcie. Une cellule, une ligne, une colonne ou une plage de cellules, contigus ou non, une plage de cellules 3D. Lensemble des commentaires pour lobjet Worksheet dsign. Les sauts de page horizontaux de la feuille de calcul. Les sauts de page verticaux de la feuille de calcul. Lensemble des liens hypertexte de la feuille de calcul. Les scnarios de la feuille de calcul. Les objets incorpors ou lis et les contrles ActiveX de la feuille. Le plan de la feuille de calcul. Les options de mise en page de la feuille.

Chapitre 1

Notions fondamentales de la programmation oriente objet

31

Tableau 1.2 : Les objets cls du modle dobjets dExcel (suite)

Collection (objet) QueryTables (QueryTable) PivotTables (PivotTable) ChartObjects (ChartObject)Objets de lobjet Range

DescriptionLes tables de requte de la feuille. Les tableaux et les graphiques croiss dynamiques. Les graphiques incorpors de la feuille de calcul spcie.

Areas Borders (Border)

Les plages de cellules contigus lintrieur dune slection. Les bordures dun objet Range. La collection Borders regroupe toujours quatre objets Border, reprsentant les quatre bordures de lobjet Range dsign. Les attributs de police de caractres de lobjet Range spci. Lintrieur de lobjet Range. Lensemble des caractres contenus par lobjet Range. Le premier nom dans la liste des noms de la plage de cellules prcise. Le style de lobjet Range dsign. Lensemble des mises en forme conditionnelles de lobjet Range. Lensemble des liens hypertexte de lobjet Range. La validation des donnes pour la plage de cellules prcise. Le commentaire de cellule pour lobjet Range dsign.

Font Interior Characters Name Style FormatConditions (FormatCondition) Hyperlinks (Hyperlink) Validation Comment

Listing 1.1 : Exemples dutilisation des objets Excelactivation de la macro complmentaire Outils pour lEuro AddIns("Outils pour lEuro").Installed = True -----------------------------------------------------------activation des info-bulles pour les barres doutils Application.CommandBars.DisplayTooltips = True affichage de la barre doutils Presse-papiers Application.CommandBars("Clipboard").Visible = True -----------------------------------------------------------affichage de la bote de dialogue prdfinie Nouveau Classeur Dialogs(xlDialogWorkbookNew).Show -----------------------------------------------------------masquage de la fentre active et affichage de perso.xls ActiveWindow.Visible = False

32

Excel et VBA

Windows("PERSO.XLS").Visible = True activation du classeur Classeur1 Windows("Classeur1").Activate -----------------------------------------------------------sauvegarde du classeur actif ActiveWorkbook.Save nouveau classeur Workbooks.Add nouveau classeur fond sur le modle MonModele.xlt Workbooks.Add(Template:= "C:\Program Files\Office\Templates\MonModele.xlt") -----------------------------------------------------------affectation du nom MaPlage la palge de cellule A1:C20 de la feuille MaFeuille Names.Add Name:="MaPlage", RefersTo:="=MaFeuille!$a$1:$c$20" ajout dun graphique Charts.Add affectation du type Boursier au graphique actif ActiveChart.ChartType = xlStockHLC dfinition de la source de donnes du graphique actif ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("C6:E10"), PlotBy:=xlColumns dfinition de lemplacement du graphique actif ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1" dfinition des titres du graphique actif With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With -----------------------------------------------------------slection de la feuille Feuil1 du classeur actif Sheets("Feuil1").Select affectation du nom Graphique la feuille Feuil1 Sheets("Feuil1").Name = "Graphique" suppression des feuilles slectionnes ActiveWindow.SelectedSheets.Delete -----------------------------------------------------------ajout dun commentaire la cellule D2 de la feuille active Range("D2").AddComment le commentaire nest pas rendu visible Range("D2").Comment.Visible = False dfinition du texte du commentaire de la cellule D2 Range("D2").Comment.Text Text:="Excellent!" -----------------------------------------------------------ajout et dfinition dun scnario la feuille active ActiveSheet.Scenarios.Add Name:="MonScnar", ChangingCells:="R4C2", Values:=Array("100"), Comment:="Cr par Mikael le 09/11/2003", Locked:=True, Hidden:=False -----------------------------------------------------------ajout du contrle ActiveX Calendar la feuille active ActiveSheet.OLEObjects.Add(ClassType:="MSCAL.Calendar", Link:=False, _ DisplayAsIcon:=False).Select -----------------------------------------------------------affectation du format montaire US la plage slectionne Selection.NumberFormat = "#,##0.00 $" dfinition des attributs de police de la plage slectionne

Chapitre 1

Notions fondamentales de la programmation oriente objet

33

With Selection.Font .Name = "Arial" .FontStyle = "Gras" .Size = 8 .ColorIndex = 46 End With coloriage de lintrieur de la plage slectionne With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With

2Premires macrosAu sommaire de ce chapitre

Crer une macro GrasItalique Diffrentes mthodes denregistrement Ecrire la macro Crer une macro Titre_WordArt Stocker des macros

36

Excel et VBA

Lenregistrement de macros constitue certainement le meilleur apprentissage de Visual Basic pour Applications. Les commandes de lapplication hte accessibles par les menus, les barres doutils ou les raccourcis cla vier, le dplacement ( laide du cla vier ou de la souris) dans un classeur et la modification de ce dernier peu ent tre enregistrs dans une macro. Il suf fit simplement de dclencher lEnr gistreur de macro et dexcuter ces commandes, sans quil soit ncessaire dcrire la moindre ligne de code. Cette mthode permet ensuite de rpter autant de fois que v ous le souhaitez la srie dinstructions ainsi mmorises, en excutant simplement la macro. Lorsque la srie de commandes est enregistre dans une macro, v ous pouvez en visualiser le codage dans la fentre Code de Visual Basic Editor. Vous dcouvrez ainsi la structure et la syntax e des programmes VBA par la pratique. Le code est le te xte, crit dans le langa ge de pr ogrammation, constituant le programme. Le coda ge dsigne le fait de gnr er du code , soit en utilisant lEnregistreur de macro, soit en lcrivant dir ectement dans la fentre de code de Visual Basic Editor.

ition Dfin

A travers des exemples simples, ce chapitre vous initiera lenregistrement et la cration de macros. Vous crerez une premire macro, puis en amliorerez trs simplement la fonctionnalit. Vous verrez que lenre gistrement de macros est relati vement souple, et que la cration dune macro offre plusieurs possibilits, plus ou moins efficaces et plus ou moin rapides. Vous apprendrez rapidement utiliser lune ou lautre des mthodes disponibles (voire les combiner), en fonction de lobjet de votre macro.

Crer une macro GrasItaliqueLorsque v ous souhaitez enrichir le contenu dune cellule dattrib uts de caractres, une solution consiste choisir la commande Cellule du menu F ormat, et slectionner longlet Police. On dfinit ensuite les attri uts voulus et lon valide en cliquant sur OK. Nous utiliserons ici cette mthode pour crer une macro enrichissant la cellule ou la plage de cellules active des attributs gras et italique. Cette macro est fort simple, puisque simplement compose de deux commandes, mais permettra de dcouvrir la faon dont les programmes VBA sont structurs. Le but de ce chapitre est de v ous initier aux dif frentes mthodes de cration et doptimisation de macros. Prenez donc le temps de le lire dans sa totalit ; les principes acquis seront valables pour lensemble des macros que v ous crerez par la suite, et ce quel que soit leur niveau de complexit.

Chapitre 2

Premires macros

37

Dmarrer lenregistrement200 7

Si vous utilisez Of fice 2007, vous de vez affi her longlet Dveloppeur dans le ruban pour accder aux fonctions de pr ogrammation VBA. Cliquez sur le bout on Offic , situ dans langle suprieur gauche de la fentre Excel ; dans la fentre qui saffi he, cliquez sur le bouton Options Excel. Cochez ensuite la case Aff cher longlet Dveloppeur dans le ruban, puis validez. Longlet Dveloppeur apparat sur le ruban (voir Figure 2.1).

Figure 2.1 Les utilisateurs de la version 2007 dExcel doivent activer longlet Dveloppeur pour accder aux fonctio s n de programmation du logiciel.

Avant de commencer lenregistrement de la macro GrasItalique, slectionnez une cellule laquelle vous attribuerez les formats de caractres voulus. 1. Lancez lenregistrement de la macro : Off ce 2007 : cliquez sur le bouton Enre longlet Dveloppeur. gistrer une macro du groupe Code de

Versions antrieures dExcel : dans le menu Outils, slectionnez Macro, Nouv elle macro, ou saisissez le raccourci cla vier Alt + F8. La bote de dialogue Enre gistrer une macro saffiche ( oir Figure 2.2).Figure 2.2 La bote de dialogue Enregistrer une macro.

2. Par dfaut, la zone Nom de la macro indique Macro1. Remplacez ce nom par GrasItalique.

38

Excel et VBA

eil Cons

Il est plus r apide denregistrer une macr o sous le nom que lui attrib ue Excel par dfaut. Cependant, si vous enr egistrez plusieurs macros, celles-ci de viendront rapidement indiscernables. Attribuez un nom r eprsentatif vos macr os et entrez une rapide description de leur fonction dans la zone Description, vous naurez ainsi aucun problme pour les distinguer.

3. Dans la zone Enre gistrer la macro dans, conserv ez loption par df aut, Classeur de macros personnelles. 4. Dans la zone Description, tapez une brv e description de la macro, en conserv ant la date de cration et, ventuellement, le nom du crateur. Lorsque vous enr egistrez une macr o, la date de son enr egistrement et le nom dutilisateur dclar pour lapplication appar aissent dans la zone Description sous la forme "Macr o enregistre le Date par Utilisateur". Vous retrouverez les mmes indications dans la fentr e de Code de la macr o. Si vous parta gez vos macros avec dautr es utilisateur s, il peut tr e utile de conserver le nom du crateur afin de les identifier apidement. De mme, conserver la date de cration dune macr o permettr a de la situer plus facilement. Cette indication se rvlera trs utile si vous devez mettre jour des macros.

eil Cons

5. Lintrt de la macro GrasItalique rside dans le g ain de temps quelle apporte lutilisateur. Lattribution dun raccourci clavier lui donnera donc toute son efficacit . Placez le curseur dans la zone de te xte Touche de raccourci et saisissez une lettre qui, combin