Le Programmeur Excel_VBA

Embed Size (px)

Citation preview

  • 7/31/2019 Le Programmeur Excel_VBA

    1/567

    Dveloppez

    des macroscompatibles

    avec toutes

    les versions

    dExcel

    (de 1997

    2010)

    ExceletVBAMicrosoft

    Mikal Bidault

    odes ssur www.pea

  • 7/31/2019 Le Programmeur Excel_VBA

    2/567

    Mikal Bidault

    Microsoft

    Excel

    & VBA

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

  • 7/31/2019 Le Programmeur Excel_VBA

    3/567

    Pearson Education France a apport le plus grand soin la ralisation de ce livre an de vous fournirune information complte et able. Cependant, Pearson Education France nassume de responsa-bilits, ni pour son utilisation, ni pour les contrefaons de brevets ou atteintes aux droits de tiercespersonnes qui pourraient rsulter de cette utilisation.

    Les exemples ou les programmes prsents dans cet ouvrage sont fournis pour illustrer les descrip-tions 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 prjudicesou dommages de quelque nature que ce soit pouvant rsulter de lutilisation de ces exemples ouprogrammes.

    Tous les noms de produits ou marques cits dans ce livre sont des marques dposes par leurspropritaires respectifs.

    Publi par Pearson Education France

    47 bis, rue des Vinaigriers75010 PARISTl. : 01 72 74 90 00www.pearson.fr

    Mise en pages : TyPAOCollaboration ditoriale : Herv Guyader

    ISBN : 978-2-7440-4158-7Copyright 2010 Pearson Education FranceTous droits rservs

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

  • 7/31/2019 Le Programmeur Excel_VBA

    4/567

    Sommaire

    Introduction ......................................................... 1

    Partie I Dcouvrir la programmation

    Excel ................................................................... 11

    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 Programmeren Visual Basic .......... 127

    5. Dvelopper dans Visual Basic Editor............ 129

    6. Variables et constantes .................................. 173

    7. Contrler les programmes VBA ................... 209

    8. Fonctions Excel et VBA ............................... 257

    9. Manipulation des chanes de caractres ........ 275

    10. Dbogage et gestion des erreurs ................... 293

    11. Intgrer des applications VBAdans linterface dExcel ................................ 317

    Partie III Dvelopper des interfacesutilisateur........................................................... 327

    12. Crer des interfaces utilisateur...................... 329

    13. Exploiter les proprits des contrles

    ActiveX ......................................................... 359

    14. Matriser le comportement des contrles ...... 401

    Partie IV Notions avancesde la programmation Excel .............................. 437

    15. Programmer des vnements Excel .............. 439

    16. Protger et authentier des projets VBA ...... 451

    17. Exemple complet dapplication Excel .......... 475

    Annexe

    Mots cls pour la manipulation de chiers

    et de dossiers ....................................................... 535

    Index ................................................................... 539

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 7/31/2019 Le Programmeur Excel_VBA

    5/567

  • 7/31/2019 Le Programmeur Excel_VBA

    6/567

  • 7/31/2019 Le Programmeur Excel_VBA

    7/567

    VI Excel et VBA3. Dplacement et slection

    dans une macro Excel .................................. 63

    Mthodes de slection dans une feuilleExcel .............................................................. 64

    Clavier .............................................................. 64

    Souris ............................................................... 66

    Notion de cellule active.................................... 66

    Rfrences relatives et rfrences absolues ..... 67

    Coder les dplacements effectus lorsde lenregistrement dune macro ................... 69

    Rfrence absolue aux cellules ........................ 69

    Rfrence relative aux cellules......................... 78

    Rfrence aux cellules fonction

    de leur contenu................................................. 80

    Rfrence aux plages de cellules nommes...... 83

    4. Dcouvrir Visual Basic Editor .................... 85

    Accder Visual Basic Editor........................ 86

    Les outils et les fentresde Visual Basic Editor .................................... 88

    LExplorateur de projet.................................... 89

    LExplorateur dobjets ..................................... 92

    La fentre UserForm ........................................ 100

    La fentre Code ................................................ 102

    La fentre Proprits........................................ 116

    Les barres doutils............................................ 121

    Paramtrer Visual Basic Editor ...................... 124

    II Programmer en Visual Basic 127

    5. Dvelopper dans Visual Basic Editor ......... 129

    Structure des programmes Visual Basic ......... 130

    Les modules...................................................... 130Les procdures ................................................. 131

    Les instructions ................................................ 133

    Les diffrents types de procdures ................. 136

    Procdures Sub ................................................ 136

    Procdures Function ........................................ 141

    Procdures Property ......................................... 143

    Des projets bien structurs ............................. 149

    Ajouter un module............................................ 149Supprimer un module ....................................... 151

    Crer une procdure ....................................... 152

    crire linstruction de dclaration................... 152

    La bote de dialogue Ajouter une procdure.... 153

    La notion de porte .......................................... 154

    criture et mise en forme du code.................... 155

    Dplacer une procdure................................... 161

    Appel et sortie dune procdure ..................... 162

    Appel dune procdure Sub .............................. 162Appels de procdures Function etProperty ..... 163

    Passage darguments........................................ 164

    Sortie dune procdure ..................................... 166

    Sortie dun programme .................................... 167

    Excuter du code ............................................ 168

    Aide lcriture de code ................................ 169

    Vrication automatique de la syntaxe ............ 169

    Complment automatique des instructions ...... 170

    Info express automatique ................................. 171

    6. Variables et constantes................................. 173

    Dclarer une variable ..................................... 174

    Dclaration implicite ...................................... 174

    Dclaration explicite ........................................ 175

    Types de donnes des variables .................... 178

    Chanes de caractres ...................................... 178

    Valeurs numriques .......................................... 180

    Valeurs boolennes........................................... 183

    Dates ................................................................ 184

    Type Variant ...................................................... 185

    Variables de matrice......................................... 185

    Variables objet.................................................. 190

    Types de donnes personnaliss....................... 195

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 7/31/2019 Le Programmeur Excel_VBA

    8/567

    Table des matires VII

    Constantes........................................................ 197

    Validation et conversion des types de donnes 198

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

    Porte de niveau procdure .............................. 201Porte de niveau module prive ....................... 201

    Porte de niveau module publique ................... 202

    Variables statiques ........................................... 203

    Traitement interapplications laide

    de variables objet ........................................... 203

    7. Contrler les programmes VBA ................. 209

    Rpter une srie dinstructions : 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 contrle If...Then...Else .......... 228

    La structure de contrle Select Case ................ 233

    Dnir linstruction suivante avec GoTo ....... 234

    Interagir avec lutilisateur via des botes

    de dialogue ..................................................... 235

    La fonction InputBox ....................................... 235

    La mthode InputBox ....................................... 239

    La fonction MsgBox......................................... 241

    Afchage de botes de dialogue Excel.............. 246

    Utiliser les oprateurs logiques ...................... 252

    Trier des donnes ........................................... 253

    8. Fonctions Excel et VBA ............................... 257

    Utiliser les fonctions Excel dans VBA ........... 258

    Crer des fonctions Excel personnalises ...... 258

    Intgrer une fonction via lExplorateur

    dobjets ........................................................... 260

    Insrer une fonction VBA dans votre code ....... 260

    Insrer une fonction Excel dans votre code ..... 261

    Recommandations pour lcriture de fonctionsExcel .............................................................. 263

    Les limites de la cellule.................................... 263

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

    9. Manipulation des chanes de caractres .... 275

    Modier des chanes de caractres ................ 276

    Concatner des chanes ................................... 276

    Insrer des caractres non accessibles au clavier

    278

    Rpter une srie de caractres ....................... 280

    Supprimer les espaces superus dune chane. 280

    Extraire une partie dune chane ..................... 281

    Effectuer des remplacementsau sein dune chane ........................................ 282

    Modier la casse des chanes de caractres .... 283

    Comparer des chanes de caractres .............. 283

    Rechercher dans les chanes de caractres ..... 286

    Rechercher une chane dans une chane .......... 286

    Rechercher une chane dans une variable

    de matrice......................................................... 289

    10. Dbogage et gestion des erreurs................. 293

    Les tapes et les outils du dbogage .............. 294

    Test du projet.................................................... 295

    Excuter pas pas ........................................... 297

    La fentre Variables locales ............................. 298

    Les points darrt............................................. 300

    Modier lordre dexcution des instructions.. 301

    La fentre Excution ........................................ 301

    Les espions ....................................................... 302

    La pile des appels ............................................ 304

    Exemple de dbogage .................................... 305Recherche du bogue ......................................... 307

    Rsolution du bogue......................................... 308

    Gestion des erreurs et des exceptions ............ 312

    Exemple de gestion derreur .......................... 313

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 7/31/2019 Le Programmeur Excel_VBA

    9/567

    VIII Excel et VBA11. Intgrer des applications VBA

    dans linterfacedExcel........................................................... 317

    Affecter une macro un raccourci clavier ..... 318

    Personnaliser le ruban et la barre doutilsAccs rapide ................................................... 319

    Personnaliser les barres doutilsdans les versions antrieures Excel 2007 .... 321

    Personnaliser les menus dans les versionsantrieures Excel 2007 ................................ 323

    Affecter une macro un objet ........................ 325

    III Dvelopper des interfaces utilisateur 327

    12. Crer des interfacesutilisateur.................................................... 329

    Les phases de dveloppement de feuilles ...... 331

    Crer une feuille ............................................. 331

    Les contrles de la bote outils .................... 333

    Outil Slection.................................................. 334

    Contrle Label ................................................. 334

    Contrle TextBox ............................................. 334

    Contrle ComboBox ........................................ 335

    Contrle Frame ................................................ 335

    Contrle ListBox .............................................. 336

    Contrle CheckBox .......................................... 336

    Contrle OptionButton..................................... 337

    Contrle ToggleButton ..................................... 338

    Contrle CommandButton ............................... 338

    Contrle TabStrip ............................................. 338

    Contrle MultiPage .......................................... 339

    Contrle ScrollBar ........................................... 340

    Contrle SpinButton ........................................ 340Placer des contrles sur une feuille ................ 341

    Copier-coller des contrles .............................. 344

    Slectionner plusieurs contrles ...................... 345

    Supprimer des contrles................................... 345

    Mise en forme des contrles .......................... 346

    La grille............................................................ 346

    Aligner les contrles ........................................ 347

    Uniformiser la taille des contrles................... 348Uniformiser lespace entre les contrles.......... 349

    Centrer les contrles ........................................ 350

    Rorganiser les boutons................................... 351

    Grouper ou sparer des contrles.................... 351

    Personnaliser la bote outils ........................ 352

    Ajouter/supprimer un contrle ......................... 353

    Ajouter/supprimer une page............................. 355

    Afcher/masquer une feuille.......................... 357

    13. Exploiter les propritsdes contrles ActiveX ................................... 359

    Proprit 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

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 7/31/2019 Le Programmeur Excel_VBA

    10/567

    Table des matires IX

    HideSelection ................................................... 377

    Locked .............................................................. 378

    MaxLenght ....................................................... 378

    MultiLine ......................................................... 379SelectionMargin ............................................... 379

    Style ................................................................. 380

    TabKeyBehavior ............................................... 380

    TextAlign.......................................................... 381

    TripleState ........................................................ 381

    WordWrap ........................................................ 382

    Dlement ...................................................... 382

    ScrollBars ......................................................... 382

    KeepScrollsVisible ........................................... 384

    Delay ................................................................ 384

    Max etMin ....................................................... 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 etWidth ................................................ 393

    Left etTop ........................................................ 393

    StartUpPosition ................................................ 394

    Image.............................................................. 395

    Picture .............................................................. 395

    PictureAlignment ............................................. 396

    PictureSizeMode .............................................. 397

    PicturePosition ................................................. 398

    PictureTiling ..................................................... 398

    Police.............................................................. 399

    Font .................................................................. 399

    1 14

    14. Matriser le comportement des contrles 401

    Crer des procdures vnementielles ........... 402

    Crer une procdure......................................... 402

    Les vnements................................................. 408

    Exemples dexploitation des contrles .......... 415

    Contrle Label ................................................. 415

    Contrle TextBox ............................................. 418

    Contrle ComboBox ........................................ 421

    Contrle ListBox .............................................. 426

    Contrles CheckBox etOptionButton ............. 429

    Contrle ScrollBar ........................................... 430

    Contrle SpinButton ........................................ 432

    Exploiter les informations dune feuille VBA... 435

    IV Notions avances de la programmationExcel 437

    15. Programmer des vnements Excel .......... 439

    Lobjet Application ........................................ 440Dclaration et instanciation de lobjetApplication ....................................................... 440

    Cration de procdures vnementiellesde niveau application ....................................... 441

    Proprits de lobjetApplication ..................... 443

    Mthodes de lobjetApplication ...................... 445

    Lobjet ThisWorkbook ................................... 445

    Lobjet Worksheet .......................................... 448

    16. Protger et authentier des projets VBA.. 451

    Les virus macro .............................................. 452

    Se protger des virus macros ......................... 452

    Dnir un niveau de scurit dans Excel 2010et Excel 2007.................................................... 452

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 7/31/2019 Le Programmeur Excel_VBA

    11/567

    X Excel et VBADnir un niveau de scuritavec Excel 2000, XP et 2003............................ 455

    Les signatures numriques............................... 456

    Effectuer des sauvegardes des macros ............. 457

    Protger laccs aux macros........................... 459

    Verrouiller un projet......................................... 459

    Limiter les droits dexcution dune macro...... 460

    Authentier ses macros .................................. 472

    Obtenir une authentication ............................ 472

    Authentier une macro..................................... 473

    17. Exemple complet dapplication Excel ...... 475

    Prsenter un projet dapplication Excel ......... 476

    Avant de commencer........................................ 477Identication des informations recueillir...... 477

    Dnition de la structure du programme ......... 479

    Crer un modle Excel ................................... 485

    Dnir et crer des interfaces ........................ 486

    Feuille fmContratAuteur .................................. 487

    Feuille fmContratConditions ............................ 500Feuille fmContratDates .................................... 514

    Feuille fmContratImpression ........................... 520

    Feuille fmContratFin ........................................ 527

    crire des procdures dditionde documents ................................................. 528

    dition des feuilles de paie .............................. 529

    Mise jour du Tableau Word........................... 531

    Annexe. Mots cls pour la manipulationde chiers et de dossiers ................................... 535

    Index................................................................... 539

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 7/31/2019 Le Programmeur Excel_VBA

    12/567

    Introduction

    Visual Basic pour Applications, VBA, est la solution de programmation propose avec lesapplications de la suite Ofce. La connaissance de VBA permet lutilisateur dExcel detirer pleinement prot du tableur de Microsoft en en dveloppant les capacits et les fonc-tionnalits pour ses besoins spciques. 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 dveloppe-ment intgrcomplet et professionnel, remonte sa version 97. Depuis, Microsoft a conrmsa volont de faire de VBA un lment part entire des applications Ofce et la progressi-

    vement propos avec lensemble des applications de sa suite bureautique. Visual Basic pourApplications constitue aujourdhui un langage et un environnement stables et prennes.

    Bien que certains dveloppeurs demandaient le remplacement de VBA par VB.net, Micro-soft conrme, avec Ofce 2010, sa volont de maintenir VBA comme solution de program-mation des applications Ofce, puisque la nouvelle suite Ofce intgre la version 7 deVisual Basic (les versions XP, 2003 et 2007 dOfce intgraient Visual Basic 6.3). gale-ment conrm dans cette version, le nouvel environnement apparu avec Ofce 2007 et leremplacement des menus "classiques" des versions prcdentes par un systme de "ruban"et d"onglets".

    Cet ouvrage traite de la programmation VBA dExcel 2010, mais, sauf exception signale,les explications et les exemples proposs sont aussi valides pour les versions 97, 2000,XP, 2003 et 2007 dExcel. En effet, dune version lautre, il ny a pas eu de rvolution.Le modle dobjets sest afn et les nouvelles fonctions dExcel, apparues au cours desdiffrentes versions du logiciel, peuvent galement tre manipules via la programmationVBA. Cependant, le langage, la gestion des programmes, lenvironnement et les outils au

  • 7/31/2019 Le Programmeur Excel_VBA

    13/567

    2 Excel et VBAservice du dveloppeur bref, tout ce que vous devez savoir pour programmer Excel et quecet ouvrage se propose de vous apprendre restent inchangs dune version lautre.

    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 lecturede ce livre quand vous migrerez dune version lautre dExcel. Mieux, les programmesdvelopps pour Excel 97 fonctionnent avec toutes les versions ultrieures du tableur et,sauf exception, les programmes dvelopps dans Excel 2010 devraient fonctionner avec lesversions antrieures.

    Dans cet ouvrage, vous dcouvrirez les diffrentes mthodes de cration de projets VBApour Excel, Visual Basic (le langage de programmation proprement dit) et les outils dedveloppement et de gestion intgrs de Visual Basic pour Applications. Votre initia-tion la programmation VBA se fera au moyen dexemples de programmes dtaills etcomments.

    Vous rencontrerez le terme projet tout au long de cet ouvrage. Cest ainsi quelon nomme un ensemble de programmes dvelopps avec Visual Basic pour

    Applications.

    VBA 7 : 64 bits vs 32 bitsPour la premire fois de son histoire, Ofce est propose en deux versions : 32 bits et64 bits. Ces deux versions sont pour ainsi dire indiffrenciables : seule la gestion de lammoire varie dune version lautre, autorisant la manipulation de chiers nettementplus volumineux avec la version 64 bits. Cependant, Microsoft recommande linstallationde la version 32 bits, y compris sur un systme dexploitation 64 bits, notamment pourdes raisons de compatibilit des complments (comme les macros VBA) avec les versionsprcdentes. Cest daillleurs la version 32 bits qui est installe par dfaut, et les utilisa-teurs souhaitant installer la version 64 bits doivent parcourir le CD an dexcuter le chierdinstallation correspondant.

    Consquence pour le dveloppement de macros Excel : la version 7 de VBA est maintenantune version 64 bits, qui intgre le support dun nouveau type de donnes permettant lamanipulation des pointeurs (les pointeurs permettent la manipulation des API Windows).Cet ouvrage nabordant pas la manipulation des API notions rserves aux programmeurschevronns cette nouveaut na aucune incidence sur la validit de ce que vous expliquece livre. Les concepts et techniques de programmation que vous apprendrez ici sont donccompatibles avec la version 64 bits dOfce comme avec les versions 32 bits dOfce, sansquil soit ncessaire dadapter le code.

    Dfinitio

    n

  • 7/31/2019 Le Programmeur Excel_VBA

    14/567

    Introduction 3

    VBA, pour quoi faire ?Excel offre des possibilits trs tendues. Pourtant, quelle que soit la puissance des fonc-tions dExcel, elles ne peuvent rpondre toutes les situations. La programmation VBAest la solution de personnalisation offerte par Excel, an dajouter des caractristiques, desfonctions et des commandes qui rpondent prcisment vos besoins.

    La programmation VBA peut tre dnie comme lapersonnalisation dun logiciel an desassurer gain de temps, qualit des documents et simplication des tches 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 certainesfonctionnalits en fonction de lusage personnel que nous avons dun logiciel. VBApermet dassocier un nombre illimit de commandes une seule. Vous pouvez ainsi

    ouvrir simultanment plusieurs documents Excel stocks dans des dossiers ou sur desserveurs diffrents, y insrer des donnes spciques et leur appliquer des mises enforme adaptes, en excutant une seule commande cre en VBA.

    Ajouter de nouvelles commandes et de nouvelles fonctions Excel. VBA permetde crer de nouvelles commandes et dajouter des fonctions au tableur par exempleune fonction personnalise qui permet de calculer les taxes retenir sur un salaire (ou,mieux, les primes y ajouter), etc. Vous pouvez, en outre, attacher vos programmesVBA des raccourcis clavier, des icnes et des commandes de menu an denamliorer laccessibilit.

    Figure I.1VBA permet de personnaliserlinterface des applicationsOfce en y ajoutant icnes etcommandes de menus.

  • 7/31/2019 Le Programmeur Excel_VBA

    15/567

    4 Excel et VBA Automatiser des actions rptitives. Nous sommes parfois amens rpter certaines

    oprations plusieurs fois sur un mme document ou ritrer des traitements spci-ques. Un programme VBA peut, par exemple, mettre en forme des cellules dans unclasseur Excel, effectuer des sries de calculs, etc.

    Modier et amliorer les commandes dune application. Les commandes Excel nesont pas toujours adaptes nos besoins ou prsentent parfois des limitations gnantes.Un programme VBA peut modier, brider ou complter les commandes dune applica-tion. Vous pouvez ainsi intgrer dans un tableau le nom de lutilisateur, le nombre depages imprimes et limprimante utilise chaque fois quune impression est lance partir dExcel.

    Faire interagir les diffrentes applications Ofce. Un programme VBA peut exploiterdes donnes issues de chiers gnrs par dautres programmes et interagir avec ceux-cide faon transparente pour lutilisateur. Vous pouvez ainsi crer une commande qui

    envoie automatiquement le classeur Excel ouvert en chier joint dans un mail Outlook des destinataires dnis ou qui gnre un rapport Word partir de donnes Excel etlimprime.

    Crer des interfaces personnalises. Les programmes VBA peuvent ramener destches complexes la simple information de champs dans des botes de dialogue person-nalises pour lutilisateur nal, simpliant ainsi considrablement le travail de celui-ci,tout en vous assurant quaucun oubli ou fausse manipulation naura lieu.

    Figure I.2Visual Basic pour

    Applications vouspermet de dvelopperdes interfaces utili-sateur volues.

  • 7/31/2019 Le Programmeur Excel_VBA

    16/567

    Introduction 5

    Visual Basic pour Applications permet le dveloppement de solutions adaptes vos besoins.Les outils que vous apprendrez manier vous permettront de dvelopper des programmessimples, sans crire la moindre ligne de code, comme des programmes complets intgrantune interface utilisateur adapte.

    La fonction dun programme VBA peut tre dautomatiser une tche rptitive. Maisvous pouvez aussi crer trs vite un petit programme VBA pour faire face une ncessitimmdiate ; par exemple, an de gnraliser un traitement exceptionnel lensemble dundocument.

    Des programmesLes projets VBA sont des programmes ou macros crits dans le langage Visual Basic. Sivous ne possdez aucune exprience pralable de programmation, ne vous inquitez pas :cet ouvrage aborde le dveloppement de projets VBA travers lenregistrement de macros.

    Lorsque vous lactivez, lEnregistreur de macro mmorise chacune de vos actions. Cestvotre programmeur personnel : vous utilisez simplement les commandes dExcel et il secharge de traduire les actions excutes en instructions Visual Basic. Il vous suft ensuitedexcuter la macro pour rpter lensemble des commandes enregistres.

    Le terme macro dsigne le regroupement dun ensemble de commandes en uneseule. On parle parfois de macrocommandes pour dsigner un programme quise rsume lexcution dune srie de commandes, sans gard pour le contexte.

    Des macros plus volues peuvent rpter des oprations en boucle, afcherdes botes de dialogue qui autorisent une interaction avec lutilisateur. Ces pro-grammes se comporteront diffremment en fonction des informations entres oude ltat du document sur lequel elles sexcutent.

    Le terme projet est plus large. Il dsigne lensemble des lments constituant vosprogrammes VBA. Il sagit toujours de macros, mais celles-ci peuvent sajou-ter des feuilles qui constituent une interface utilisateur permettant de rcolterdes informations de tout type , des modules de classe, et autres friandises quevous dcouvrirez tout au long de cet ouvrage.

    Lenregistrement de macros constitue sans aucun doute le meilleur moyen de se familiari-ser avec la programmation en Visual Basic. Ainsi, sans connatre le langage les instruc-tions qui le composent et la faon dont elles sont structures , vous pouvez 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 VisualBasic, un outil de dveloppement dapplications Windows. Les structures de contrle du

    Dfinitio

    n

  • 7/31/2019 Le Programmeur Excel_VBA

    17/567

    6 Excel et VBAlangage sont les mmes et lenvironnement proprement dit (Visual Basic Editor) est pourainsi dire identique celui de Visual Basic. Mais, contrairement Visual Basic, VisualBasic pour Applications est conupour des applications. Cela signie que, tandis que lesprogrammes Visual Basic sont autonomes, les programmes VBA ne peuvent tre excutsqu partir dune application intgrant cet environnement de dveloppement Excel ou uneautre application.

    Lorsque vous dveloppez un programme VBA, vous lattachez une application. Il sagitde lapplication hte du programme. Plus prcisment, vos programmes VBA sont attachs un document (un chier ou un modle Word, une feuille de calcul Excel, une prsentationPowerPoint) spcique lapplication hte. Lensemble des programmes VBA attachs un document constitue un projet. Un projet regroupe des macros, mais peut galementintgrer des interfaces utilisateur, des dclarations systme, etc. Un projet constitue en faitla 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 lesoutils que vous dcouvrirez au long de cet ouvrage sont valides pour toutes les applicationsde la suite Ofce. Pour excuter une macro VBA, vous devez avoir accs au documentauquel elle est attache. Vous pouvez choisir de rendre certaines macros disponibles partirde nimporte quel document Excel ou en limiter laccessibilit un classeur Excel spci-que. La disponibilit des programmes VBA est aborde au Chapitre 2.

    Un langage de programmationLes projets VBA sont dvelopps dans le langage de programmation Visual Basic. Vousdcouvrirez par la pratique la structure de ce langage et apprendrez rapidement en discer-

    ner les composants et les relations quils entretiennent. Comme nous lavons dit prcdem-ment, lenregistrement de macros constitue une excellente initiation Visual Basic. Cestsous cet angle que nous vous ferons dcouvrir ce langage.

    Visual Basic est un langage de programmation orient objet. Nous prsenterons donc lesconcepts 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 conjuguerces lments pour crer des applications Excel souples et puissantes. Visual Basic pourApplications constitue une bonne approche de la programmation pour le nophyte.

    Visual Basic pour Applications intgre un grand nombre dinstructions. Cela permet dedvelopper des macros susceptibles didentier trs prcisment ltat de lapplication et

    des documents et reproduire lexcution de la plupart des commandes disponibles danslapplication hte.

    Vous verrez que certaines instructions sont spciques Excel. Cest, par exemple, le casdes instructions permettant daffecter une formule une cellule. Vous nutiliserez probable-ment quun nombre limit de ces instructions, en fonction de votre usage personnel dExcel

  • 7/31/2019 Le Programmeur Excel_VBA

    18/567

    Introduction 7

    ou des besoins de votre entreprise. Par ailleurs, certaines instructions spciques Excelapparatront presque toujours dans vos macros. Cest, par exemple, le cas de la propritRange qui renvoie un objet Excel tel quune cellule ou une plage de cellules.

    Dautres instructions sont communes lensemble des applications Ofce. Cest le casde celles qui permettent de rgler le comportement dune macro : raliser des oprationsen boucle, induire des ractions face certains paramtres, afcher des botes de dialo-gue simples (voir Figures I.3 et I.4) ou dvelopper des interfaces utilisateur volues (voirFigure I.1), etc. Ce sont ces instructions qui constituent vritablement ce quil est convenudappeler le langage Visual Basic. Vous aurez besoin dy faire appel ds que vous voudrezcrer un programme interactif, capable de se comporter diffremment selon le contexte.La plupart de ces instructions ne peuvent tre gnres par enregistrement de macros, etdoivent donc tre dites manuellement dans Visual Basic Editor.

    Figure I.3

    La fonction VBA MsgBoxpermet dafcher une botede dialogue.

    Figure I.4Il existe une version VBAet une version Excelde la fonction InputBox.

    Cet ouvrage ne se veut pas un dictionnaire du langage, mais un guide qui vous enseignera ledveloppement de projets VBA de qualit. Vous apprendrez enregistrer, modier, excuteret dboguer des macros, crer des interfaces utilisateur ainsi qu grer vos projets VBA.Vous dcouvrirez, travers les nombreux exemples de projets VBA de cet ouvrage, uncertain nombre dinstructions spciques la hirarchie dobjets dExcel, qui vous fami-liariseront avec la logique de ce langage.

    La hirarchie dobjets dune application, encore appele modle dobjets, estle rapport quentretiennent entre eux les diffrents objets dune application.Ce concept ainsi que les notions spciques aux langages orients objet serontdvelopps au Chapitre 1, "Notions fondamentales de la programmation orien-te objet".

    Dfinitio

    n

  • 7/31/2019 Le Programmeur Excel_VBA

    19/567

    8 Excel et VBAEn revanche, ce livre prsente et illustre dexemples comments lensemble des structuresde contrle qui permettront de crer trs simplement des macros volues. Nous vous four-nirons les bases du langage Visual Basic. Elles sufsent pour crer une innit de macroset rpondre vos besoins spciques.

    Lorsque les principes du dveloppement de projets VBA vous seront acquis et que vouscrerez vos propres macros, il vous arrivera srement davoir besoin dinstructions quevous naurez pas rencontres lors de la lecture de cet ouvrage ; vous pourrez alors utiliserlEnregistreur de macro ou encore les rechercher dans laide de Visual Basic pour Applica-tions ou dans lExplorateur dobjets tudi au Chapitre 4. Vous verrez que laide de VisualBasic pour Applications fournit une rfrence complte du langage, facilement accessibleet consultable.

    Si vous navez aucune exprience de programmation, peut-tre ce Visual Basic vous appa-rat-il comme un langage barbare ou inaccessible. Ne vous inquitez pas : le dveloppement

    de projets VBA ne requiert ni exprience pralable de la programmation, ni connaissanceglobale du langage. Contentez-vous, au cours de votre lecture, dutiliser les fonctionsncessaires aux exercices et que nous vous dtaillerons. Cet ouvrage propose un apprentis-sage progressifet concret : vous dvelopperez vos premiers projets VBA ds les premierschapitres.

    Un environnement de travailVisual Basic pour Applications dispose dun environnement de dveloppement partentire : Visual Basic Editor.

    Visual Basic Editor est lenvironnement de dveloppement intgrdes applications Ofce.Il permet de visualiser et de grer les projets VBA, dcrire, de modier et de dboguer lesmacros existantes, de visualiser comment les commandes propres une application Ofcesont traduites en langage Visual Basic, et inversement. Cest aussi un outil de dbogagede vos projets VBA dune grande efcacit. Visual Basic Editor propose nombre doutilspermettant de tester les macros et den tudier le comportement. Vous pouvez ainsi excuterles commandes de la macro pas pas, en suivre le droulement, insrer des commentairesdans le texte de la macro, etc. Enn, Visual Basic Editor intgre 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.

  • 7/31/2019 Le Programmeur Excel_VBA

    20/567

    Introduction 9

    Figure I.5Visual Basic Editorest lenvironnementde dveloppement

    de Visual Basic pourApplications.

    Bote

    outils

    Fentre

    Proprits

    Fentre

    Code

    Explorateur

    de projet

    Explorateur

    d'objets

    Fentre

    UserForm

    Conventions typographiquesAn den faciliter la lecture, nous avons adopt dans cet ouvrage un certain nombre deconventions typographiques. Lorsquun mot apparat pour la premire fois, il est composen italique. Les programmes et les mots cls du langage Visual Basic apparaissent dansune police chasse fxe. Lorsque, dans un programme, un mot signale une informationattendue dans le code, celui-ci apparat en italique.

    Lorsquune ligne de code ne peut tre inscrite sur une seule ligne de louvrage, cette che() en dbut de ligne indique que le texte est la poursuite de ligne prcdente.

    Par ailleurs, vous rencontrerez au long de cet ouvrage diffrents types de notes, signales

    dans la marge par des pictogrammes.

    Ces rubriques apportent un complment dinformation en rapport avec le sujettrait. Leur lecture nest pas indispensable. Mais elles peuvent vous aider mieux cerner le sujet.

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    21/567

    10 Excel et VBAVous trouverez sous ces rubriques la dnition de termes techniques spciques la programmation VBA.

    Ces rubriques vous mettent en garde contre les risques inhrents telle ou tellecommande ou manipulation.

    Il est parfois ncessaire de se rafrachir la mmoire. Lorsquun sujet fait appel des connaissances acquises plusieurs chapitres auparavant, cette rubrique vousles remmore brivement.

    Sous cette rubrique, vous trouverez des trucs pour aller plus vite et travaillerplus efcacement.

    Nous vous faisons ici part de notre exprience, en vous prodiguant des conseilsqui vous aideront dvelopper des projets VBA de qualit.

    Ces notes prodiguent des informations spciques aux versions antrieures Ofce 2010.

    Codes sources en ligneVous trouverez sur le site Pearson (www.pearson.fr), la page consacre cet ouvrage, lescodes sources des applications VBA dveloppes dans ce livre.

    Dfinitio

    n

    Attentio

    n

    Rappel

    Astuce

    Conseil

    Compat

    ibilit

  • 7/31/2019 Le Programmeur Excel_VBA

    22/567

    I

    Dcouvrir

    la programmationExcelC 1. Notions fondamentales de la programmation oriente objet

    C 2. Premires macros

    C 3. Dplacement et slection dans une macro Excel

    C 4. Dcouvrir Visual Basic Editor

  • 7/31/2019 Le Programmeur Excel_VBA

    23/567

  • 7/31/2019 Le Programmeur Excel_VBA

    24/567

    1

    Notions fondamentalesde la programmationoriente objet

    Au sommaire de ce chapitre

    Comprendre le concept dobjet

    Le modle dobjets Excel

  • 7/31/2019 Le Programmeur Excel_VBA

    25/567

  • 7/31/2019 Le Programmeur Excel_VBA

    26/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 15Ce sont ces proprits et ces mthodes, communes toutes les voitures, qui dnissentlobjet Voiture. Elles sont sous-entendues, videntes et essentielles. Il existe donc desmilliers de voitures diffrentes, toutes reconnaissables par un certain nombre de caractris-tiques communes dnies dans le concept (lobjet) Voiture. En POO, cet objet abstrait estappel la classe Voitures. La classe Voitures est la dnition formelle des objets Voiture(leurs proprits et leurs mthodes). Il sagit du modle partir duquel vous pouvez imagi-ner et crer des milliers de voitures diffrentes. Lensemble des vhicules appartenant laclasse Voitures (parce quils possdent les proprits et les mthodes dnies dans cetteclasse) est appel la collectiondobjets Voitures.

    Une collection porte le nom pluriel des objets quelle rassemble.

    Ainsi, la collectionWorkBooks renvoie tous les objetsWorkbook, soit tous les classeursouverts, la collection Sheets, toutes les feuilles dun objetWorkBook, la propritWork-sheets, toutes les feuilles de calcul dun objetWorkbook, etc. La section "Le modledobjets dExcel" situe en n de chapitre vous permettra de dcouvrir les objets Excel lesplus importants.

    Le terme Classe dsigne la dnition commune dun ensemble dobjets (quest-ce quune voiture ?), tandis quune Collection dsigne lensemble des objetsappartenant une classe (toutes les voitures en circulation).

    Lorsque vous parlez dacheter la 2CV rouge de vos rves, vous voquez une voitureconcrte, bien spcique. Vous crez une instance on parle aussi dune occurrence delobjet Voiture. Elle possde toutes les proprits de la classe Voitures, mais ces propri-ts sont attaches des valeurs prcises. La carrosserie est rouge, la vitesse maximale est de

    x km/h, etc. Vous pouvez matriser le comportement de votre voiture laide des mthodesdnies dans la classe Voitures (Acclrer, Freiner), mais leffet prcis de ces mthodesest troitement li aux proprits de votre voiture. La puissance du moteur ne permet pasdatteindre 200 km/h (mais vous pouvez dcapoter !) ; les freins ne sont pas quips dusystme ABS, il faut donc telle distance pour freiner, etc.

    Un programme VBA peut ainsi crer une feuille de calcul Excel en appliquant la mthodeAdd (ajouter) la collectionWorkBooks et dterminer les proprits de ce classeur (son nom,ses options de protection, le nombre de feuilles qui le composent, etc.)

    Info

    Dfinitio

    n

  • 7/31/2019 Le Programmeur Excel_VBA

    27/567

    16 Excel et VBALorsque vous crez une instance dobjet, cet objet possde toutes les propri-ts et mthodes dnies dans la classe de lobjet. Ce principe essentiel de la

    programmation oriente objet est appel instanciation.

    Le grand intrt de la programmation oriente objet est quil nest pas utile de savoircomment fonctionne un objet pour lutiliser. Lorsque vous achetez une voiture, vous navezpas besoin de savoir comment la carrosserie et le moteur ont t fabriqus, ni commentles diffrents composants sont assembls, vous vous contentez de choisir un modle, unecouleur, etc. Il vous suft de connatre les mthodes propres la classe Voitures pour luti-liser. Avec VBA, lorsque vous crez une instance dun objet, vous en dnissez les propri-ts sans vous proccuper de la faon dont celles-ci seront appliques. Il en va de mme pourles mthodes que vous utilisez pour matriser le comportement dun objet. Lorsque voustournez la cl de contact, le moteur de la voiture dmarre, sans que vous ayez vous soucierdu dtail des vnements et des technologies mises en uvre.

    VBA permet, par exemple, de crer des interfaces graphiques pour vos programmes, endposant simplement les objets dont vous avez besoin (cases cocher, zones de texte,boutons de commandes, etc.), sur une feuille. Ces objets ont des comportements spci-ques que votre programme exploitera, sans que vous ayez besoin de vous soucier de leurmcanisme interne.

    Application hte et modles dobjetsLorsque vous dvelopperez des programmes VBA, vous agirez sur des objets qui varieronten fonction des actions que vous souhaitez que votre programme excute. Vous dnirez et

    associerez ces objets de faon crer une application complte. L encore, lanalogie avecles objets de la vie courante est rvlatrice. Les objets que nous utilisons sont gnralementordonns selon leur fonction. Lorsque vous souhaitez vous laver, vous vous dirigez versla salle de Bains ; il sagit du lieu consacr la toilette. Vous y trouvez un certain nombredobjets tels que Savon, Gant de toilette, Dentifrice, Brosse dents, etc. Vous utilisez lesavon avec le gant de toilette, le dentifrice avec la brosse dents, et vous pouvez faire unetoilette complte.

    Si vous souhaitez manger, cest dans la cuisine que vous vous orienterez. Vous y trouverezquelques objets communs ceux de la salle de bains (Lavabo, Robinet, Placard, etc.). Vousne devriez cependant pas y trouver de brosse dents, ni aucun des objets spciques la

    toilette. Par contre, vous pourrez utiliser le four, ouvrir le frigo et utiliser tous les objetsspciques de la cuisine.

    Les applications du Pack Ofce sont comparables aux pices de votre maison. Lorsque vouschoisissez de dvelopper un projet VBA, vous choisissez une application hte. Il sagit delapplication Ofce qui contient les objets sur lesquels vous souhaitez agir. Cest dans

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    28/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 17cette application que vous dvelopperez vos programmes, et cest uniquement partir decette application quils pourront tre excuts. Si vous souhaitez travailler sur des textes,vous choisirez dentrer dans Word ; pour faire des calculs, vous savez que cest dans Excelque vous trouverez les objets dont vous avez besoin ; Access sert au dveloppement et aumaniement des bases de donnes et PowerPoint, la cration de prsentations.

    Cependant, limage des pices de votre maison, les applications Ofce ne sont pas herm-tiques. Vous pouvez parfaitement vous prparer un plateau repas dans la cuisine et choisirde manger au lit. De faon semblable, des projets VBA volus peuvent utiliser des objetsde diffrentes applications Ofce. Un programme dvelopp dans Excel peut utiliser desdonnes stockes dans une base de donnes Access ou des objets Word pour imprimer uncourrier qui accompagnera une facture, et envoyer un message Outlook de conrmation.Vous devez alors choisir une application hte pour votre projet. Deux critres doivent ladterminer :

    Votre programme sera plus performant et plus simple dvelopper si lapplication hteest celle dans laquelle sexcute lessentiel des instructions du programme.

    La prsence du programme dans lapplication hte doit tre logique, et lutilisateur naldoit y avoir un accs facile puisque le programme ne pourra tre excut qu partir decelle-ci.

    Tous les projets dvelopps dans cet ouvrage seront hbergs dans Excel. Pouraccder aux objets dune application autre que lapplication hte, vous utilise-rez la technologie Automation. Laccs aux objets dune autre application esttrait au Chapitre 6.

    Lapplication est donc la pice dans laquelle votre programme sexcutera. Celle-ci estcompose dun certain nombre dobjets constituant une bibliothque dobjets dontles rapports sont prcisment dnis. Les objets dune application et les rapports quilsentretiennent sont reprsents sous la forme dun organigramme. Tout en haut de lor-ganigramme se trouve lapplication (la pice dans laquelle sont rangs tous les objets).Viennent ensuite les classes dobjets de premier niveau de lapplication, auxquelles sontlis dautres objets ou classes, et ainsi de suite. On appelle cette structure le modle dobjetsou la hirarchie de classes de lapplication. La Figure 1.1 reprsente ce qui pourrait tre unmodle dobjets sommaire de lapplication Salle de bains.

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

    Info

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    29/567

  • 7/31/2019 Le Programmeur Excel_VBA

    30/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 19objetsWorksheet (feuilles de calcul), contenant eux-mmes des objets Range (cellules etplages de cellules).

    Figure 1.2Le modle dobjets dExcel.

    Accder aux objetsLe modle dobjets dtermine le chemin emprunter pour accder un objet. Pour vouslaver les dents, vous devez dabord accder votre brosse dents. Mme si le processusest inconscient, vous identiez lobjet Brosse dents par son emplacement : il est situdans la salle de bains, parmi les objets et produits de toilette. De la mme faon, en VisualBasic, vous devez identier un objet avant de pouvoir agir dessus (appliquer lune de sesmthodes ou modier la valeur de lune de ses proprits). Lorsque vous souhaitez vouslaver 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 sen saisir.

  • 7/31/2019 Le Programmeur Excel_VBA

    31/567

    20 Excel et VBAPour accder un objet Excel, vous oprerez selon le mme mode, cest--dire en partant delobjet situ le plus haut dans la hirarchie dobjets et en progressant dans celle-ci jusquatteindre lobjet voulu.

    Le point est utilis comme sparateur entre les diffrentes collections et objets que lonrencontre avant datteindre lobjet voulu. La rfrence un objet prcis dune collection sefait selon la syntaxe suivante :

    Nom_Collection("Nom_Objet")

    ou

    Le code VBA permettant daccder lobjet Dentifrice serait :

    Piece.ProduitsNettoyants("Dentirice").Prendre

    La premire partie du code permet daccder lobjet Dentirice ; lexpression identiant

    un objet est appele rfrentiel dobjet. La mthode Prendre est ensuite applique cetobjet an de sen saisir.

    Le code Visual Basic permettant dappeler la feuille de classeur Excel nomme "MaFeuille",et situe dans le classeur "MonClasseur.xlsm" ( condition que celui-ci soit ouvert), serait :

    Application.Workbooks("MonClasseur.xlsm").Sheets("MaFeuille").Activate

    On accde lobjetWorkbook MonClasseur de la collectionWorkbooks (tous les classeursouverts), puis la feuille nomme "MaFeuille" de la collection Sheets (toutes les feuillesde lobjet MonClasseur). Une fois le chemin daccs lobjet indiqu, on lui applique lamthodeActivate pour lactiver.

    Outre leur nom, les objets dune collection sont identis au sein de la col-lection par une valeur dindice reprsentant leur position dans la collection.Cette valeur peut tre utilise pour renvoyer un objet dune collection, selon lasyntaxe suivante :

    Nom_Collection(IndexObjet)

    o IndexObjet reprsente la position de lobjet dans la collection. Linstructionsuivante :

    Workbooks(2).Activate

    active le classeur Excel apparaissant en deuxime position dans le menu Fentre.

    Poursuivons lanalogie. Si vous vous trouvez dj dans la salle de bains au moment o vousdcidez de vous laver les dents, vous navez pas besoin dy accder. Si vous avez dj le nezparmi les produits de toilette, il est inutile dy faire rfrence.

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    32/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 21De faon semblable, dans le code VBA, les objets de niveau hirarchique suprieur celuide lobjet que vous souhaitez atteindre peuvent parfois tre ignors. Cest toujours le caspour lobjetApplication. En effet, votre projet VBA tant stock et donc excut partirdune application hte, il est inutile de rappeler que vous tes dans cette application.

    Lexpression :

    Workbooks("MonClasseur.xlsm").Sheets("MaFeuille").Activate

    suft donc activer la feuille intitule "MaFeuille" du classeur nomm "MonClasseur.xlsm".

    Selon le mme principe, en cas dabsence de rfrentiel dobjets, la collection Sheetsconcerne le classeur actif. Si MonClasseur est le classeur actif, on peut donc se dispenserde toute rfrence cet objet. On obtient alors linstruction suivante :

    Sheets("MaFeuille").Activate

    Une petite nesse terminologique : les objets proprement parler napparais-sent jamais dans le code. Pour faire rfrence un objet, on utilise une propritqui appelle ou renvoie lobjet voulu. Dans les exemples prcdents, Workbooksest une proprit de lobjetApplication, qui renvoie tous les classeurs ouverts(la classe Workbooks). Sheets est une proprit de lobjetWorkbook, qui renvoietoutes les feuilles de classeur (la classe Sheets) de cet objet.

    Les propritsRevenons lanalogie avec lautomobile et prenons la classe Voitures. Toutes les propri-ts propres aux objets Voitures y sont dnies. Les objets ou classes situs immdiatementsous Voitures dans le modle dobjets appartiennent la collection dobjets Voitures. Entant que tels, ils hritent de toutes les proprits dnies dans la classe Voitures.

    Les proprits peuvent tre un attribut de lobjet ou un aspect de son comportement. Parexemple, les proprits dune voiture sont, notamment, sa marque, son modle, ltat despneus, lactivation ou non du moteur, etc. Les proprits dun document Word sont sonmodle, son nom, sa taille, etc.

    Les proprits prennent des valeurs spciques qui distinguent les diffrents objets de la

    collection. La proprit Couleur dun objet Voiture peut prendre la valeur Rouge, tandisque la mme proprit dun objet de la collection est attache la valeur Bleu.

    Lorsque vous dvelopperez des programmes VBA, vous exploiterez les proprits dunobjet de deux faons :

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    33/567

    22 Excel et VBA En modiant les valeurs attaches aux proprits de lobjet. Pour modier un objet,

    il suft de changer les valeurs de ses proprits. Les proprits dont les valeurs peuventtre modies sont dites en lecture-criture.

    Certaines proprits ne peuvent tre modies et sont dites en lecture seule. Vouspouvez, par exemple, modier la proprit Etat_du_moteur (allum ou teint) dun objetVoiture, mais non sa proprit Marque. Vous pouvez modier le nombre de feuilles quicomposent un classeur, mais non sa date de cration.

    En interrogeant les valeurs attaches aux proprits dun objet. Les valeurs desproprits peuvent tre lues an de connatre les spcicits de lobjet et dorienter lecomportement du programme. Par exemple, si la proprit Marque dun objet Voitureest affecte la valeur BMW et sa proprit Contenu_Rservoir, affecte une valeurgale 40 (litres), vous ferez un plein 40 euros. Si les proprits Marque et Modle sontrespectivement affectes aux valeurs Citron et 2CV et la proprit Contenu_Rservoir,

    une valeur gale 20, vous ne ferez quun plein 20 euros.De la mme faon, un programme VBA peut excuter des instructions tant que le nombrede classeurs ouverts est diffrent de zro (Workbooks.Count 0).

    Types de valeurs des proprits

    Les 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 ousignes de ponctuation. Ces donnes sont aussi qualies de type Chane ou String. Unechane de caractres peut contenir jusqu environ deux milliards de caractres. En VisualBasic, 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".

  • 7/31/2019 Le Programmeur Excel_VBA

    34/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 23Les chanes de caractres sont interprtes en tant que caractres, et non en tant que valeurnumrique. Autrement dit, la chane "1254" est interprte comme la combinaison descaractres 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 chiffres par exemple "2000" , sans que vouspuissiez pour autant diviser cette valeur par un nombre quelconque.

    Valeurs numriques

    Une valeur numrique est une suite de chiffres. 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 signie "Exposant". Ainsi, lavaleur numrique 100E4 est gale 100 104.

    Les valeurs numriques sont interprtes comme des chiffres. Il peut sagir de valeurscomme dexpressions conjuguant valeurs numriques et oprateurs arithmtiques (* / +). Par exemple, les proprits Contenu_Rservoir et Consommation dun objet Voituresont des valeurs numriques. La combinaison de ces proprits permet de dterminercombien de kilomtres peuvent tre parcourus avant la panne sche, selon lexpressionarithmtique :

    Kilomtres_Avant_Panne_Sche = Contenu_Rservoir / Consommation

    Notez quune expression arithmtique peut tre compose de nombres(100 25), de variables auxquelles sont affectes des valeurs numriques(nombre1 nombre2), ou dune combinaison des deux (nombre1 25). Les

    variables sont tudies en dtail au Chapitre 6.

    Les valeurs numriques pouvant tre affectes une proprit varient avec les proprits etles objets. Par exemple, dans Excel, la taille dune police doit tre comprise entre 1 et 409.Par consquent, la valeur que peut prendre la proprit Size (taille) dun objet Font (police)

    Info

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    35/567

    24 Excel et VBAdExcel doit aussi tre comprise entre ces deux valeurs. Dans le cas de lobjet Voiture, laproprit Contenu_Rservoir doit toujours tre suprieure 0, la valeur maximale dpen-dant dautres spcicits de lobjet, telles que ses proprits Marque et Modle.

    Valeurs boolennes

    Certaines proprits ne peuvent prendre que deux tats : elles sont vries ou elles ne lesont pas. Ces proprits sont attaches une valeur de type Boolean, ou valeur boolenne.Une valeur boolenne peut tre True ou False.

    La proprit Moteur_Allum dun objet Voiture est attache une valeur boolenne. Lavaleur True lui est affecte si le moteur de lobjet Voiture est allum. Dans le cas contraire,la proprit Moteur_Allum sera gale False.

    Comme vous le verrez au Chapitre 15, un classeur Excel gre une vingtaine de propritsqui reprsentent ses options et son tat un moment donn. Nombre de ces propritsacceptent une valeur de type Boolean. Cest par exemple le cas de la proprit Saved quirenvoie True si aucune modication na t apporte au document depuis son dernier enre-gistrement, et False dans le cas contraire.

    En Visual Basic, la valeurTrue peut tre remplace par 1, et la valeurFalse,par 0. Cette pratique est cependant dconseille, puisquelle rend la lecture ducode moins aise.

    Constantes

    Les constantes sont des valeurs intgres de VBA qui conservent toujours la mme valeur.Lorsquune proprit accepte un nombre dtermin dtats, les valeurs reprsentant cestats sont souvent reprsentes sous forme de constantes. Celles-ci se prsentent sous laforme dune suite de lettres. Les constantes sont reprsentes sous forme de chanes decaractres, mais correspondent en ralit des valeurs numriques.

    Les constantes intgres dsignent ltat de proprits pour un objet spcique. Chacunedes applications Ofce possde ses propres constantes (puisquelle possde ses propresobjets). Cependant, certaines proprits tant communes toutes les applications de lasuite Ofce, les constantes dsignant leur tat se retrouvent aussi dans toutes les applica-

    tions Ofce. Les constantes intgres de VBA commencent par deux lettres en minusculesindiquant lapplication laquelle appartient la constante. Le tableau ci-dessous reprend lesprxes des constantes VBA les plus courantes pour Microsoft Ofce :

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    36/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 25vbwdxlpp

    acolfpbindfm

    Visual BasicWordExcelPowerPoint

    AccessOutlookFrontPageClasseur OfceFeuilles Visual Basic

    Lorsquune proprit accepte des constantes pour valeurs, le nombre de ces constantes estdtermin et correspond aux diffrents tats que peut prendre la proprit. Par exemple,les clignotants dune voiture peuvent accepter quatre tats diffrents : dsactivs, activs droite, activs gauche, position Warning (les clignotants droite et gauche activs). Laproprit 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 exige delutilisateur la slection dune option parmi plusieurs possibles, ces options sont gnrale-ment reprsentes sous forme de constantes en langage VBA. Par exemple, lorsque vousinsrez une cellule dans une feuille de classeur (Insertion > Cellules), vous devez choisirentre les options Dcaler les cellules vers la droite ou Dcaler les cellules vers le bas. Lins-

    truction VBA correspondante sera :Selection.Insert(Shift)

    o largument Shift est une des constantes XlInsertShitDirection spciant lamthode Insert la faon dont la cellule sera insre. Il peut sagir de la constante xlShit-ToRight (les cellules seront dcales vers la droite) ou de la constante xlShitDown (lescellules seront dcales vers le bas).

    Les constantes sont la reprsentation textuelle de valeurs numriques. Chacunedes constantes Clignotant correspond une valeur numrique. La proprit

    ClignotantWarning pourrait, par exemple, correspondre la valeur num-rique 3. Vous pouvez indiffremment utiliser les constantes VBA ou les valeursnumriques auxquelles elles correspondent. Il est cependant conseill dutiliserles constantes, an de faciliter la lecture du code. Si vous comprenez langlais, lesconstantes vous sembleront en effet plus parlantes que de simples chiffres.

    Info

  • 7/31/2019 Le Programmeur Excel_VBA

    37/567

    26 Excel et VBAAccder aux proprits

    Pour modier une proprit dun objet, on utilise la syntaxe suivante :

    Expression.Proprit = valeur

    o Expression est une expression renvoyant un objet un rfrentiel dobjet , tel quecela a t dcrit dans la section prcdente. Proprit est le nom de la proprit que lonsouhaite modier (toujours spare de lobjet auquel elle se rfre par un point) et valeur,la valeur que vous souhaitez lui affecter.

    Le type de la valeur (chane, valeur numrique, constante ou valeur boolenne) doit treadapt la proprit. Si tel nest pas le cas, le programme gnre une erreur. Par exemple,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 modier lobjetVoiture

    "MaVoiture" :Tableau 1.1 : Pour modier un objet, il suft den changer les proprits

    SyntaxeType de la valeur

    affecteConsquence

    pour lobjet Voiture

    Voitures("MaVoiture").Immatriculation= "4444AB29"

    Chane de caractres Une nouvelle immatriculation

    Voitures("MaVoiture").Moteur_Allume= True

    Valeur boolenne Le moteur est allum

    Voitures("MaVoiture").Contenu_Rservoir

    = 50

    Valeur numrique Le rservoir contient 50 litres

    Voitures("MaVoiture").Cligotant.Etat= ClignotantWarning

    Constante Lobjet clignotant est enposition Warning

    Pour lire la valeur dune proprit dun objet, on stocke gnralement cette valeur dans unevariable, selon la syntaxe suivante :

    variable = Expression.Proprit

    Linstruction suivante passe la fentre active en mode dafchage Aperu des sauts de page,en dnissant sa proprit View xlPageBreakPreview.

    ActiveWindow.View = xlPageBreakPreview

    Linstruction suivante stocke dans la variable TypeAfchage la valeur reprsentant le typedafchage en cours :

    TypeAfchage = ActiveWindow.View

  • 7/31/2019 Le Programmeur Excel_VBA

    38/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 27Les mthodesLes mthodes reprsentent les actions quun objet peut excuter. Tandis que les propritsdnissent un tat, les mthodes dterminent un comportement. Les mthodes pouvant tre

    appliques un objet dpendent troitement de lobjet. Les objets de la classe Voituressupportent des mthodes telles que Tourner, Freiner,Acclrer, etc.

    Cependant, certaines mthodes peuvent tre communes des objets diffrents, mme sielles ont des consquences diffrentes. Par exemple, la mthode Ouvrir peut sappliqueraux objets Porte, Core ou Cendrier dune voiture, comme un objet Porte ou Robinetdune maison. Certaines mthodes se retrouvent dans toutes les applications Ofce. Cestle cas pour toutes les mthodes correspondant des commandes de menu communes auxapplications. Par exemple, les mthodes Open (ouvrir) et Close (fermer) peuvent sappli-quer un classeur Excel comme un document Word, un formulaire Access ou encore uneprsentation PowerPoint.

    Une mthode peut avoir des consquences sur ltat de certaines proprits de lob-jet auquel elle sapplique, voire sur dautres objets. Par exemple, si vous appliquez lamthodeAcclrer un objet Voiture, la valeur affecte la proprit Vitesse de cetobjet augmentera.

    Si vous modiez le contenu dune cellule dun classeur Excel, la taille de la cellule pourratre modie en consquence. Si dautres cellules sont lies par des formules la celluledont vous modiez la valeur, leurs valeurs seront mises jour en consquence. Chaque foisque vous crez un nouveau classeur laide de la mthodeAdd, la valeur de la propritCount de la collectionWorkbooks (le nombre de classeurs ouverts) est incrmente de 1.

    Chaque fois que vous fermez le classeur laide de la mthode Close, la valeur de laproprit Count de la collectionWorkbooks est dcrmente de 1.

    En outre, pour excuter correctement une mthode, il est parfois ncessaire de modierau pralable les proprits de lobjet auquel elle sapplique. Par exemple, si vous souhai-tez appliquer la mthode Tourner un objet Voiture, vous devez auparavant modier laproprit 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 celaa t dcrit dans la section prcdente.Mthode est le nom de la mthode que lon souhaiteexcuter (toujours spare de lobjet auquel elle se rfre par un point).

  • 7/31/2019 Le Programmeur Excel_VBA

    39/567

    28 Excel et VBAUne mthode peut aussi sappliquer une collection dobjets. La syntaxe est alors :

    Collection.Mthode

    o Collection reprsente la collection dobjets sur laquelle on souhaite agir, etMthode,une mthode commune aux objets de la collection.

    Vous pouvez, par exemple, arrter toutes les voitures de la collection Voitures, en leurappliquant la mthodeArrter :

    Voitures.Arrter

    Pour fermer tous les classeurs ouverts dans une session Excel, vous utiliserez linstructionsuivante :

    Workbooks.Close

    Cette syntaxe est aussi utilise pour crer une occurrence dun objet de la collection Collec-tion. La mthode utilise est alors gnralement la mthodeAdd lquivalent Visual Basicde longlet Fichier. Par exemple, pour crer un nouveau classeur Excel, vous ferez appel la collectionWorkbooks (Workbooks.Add).

    Vous pouvez ensuite dnir les proprits de lobjet ainsi cr, comme nous lavons vudans la section "Les proprits" de ce chapitre.

    Les vnements

    Un vnement est une action reconnue par un objet. La reconnaissance dun vnement parun 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 touchesont des exemples dvnements pouvant tre interprts par un programme VBA.

    Une procdure vnementielle est une procdure attache un vnement utili-sateur tel quun clic de souris, la frappe dune touche, lactivation dune feuillede calcul, etc. La procdure sexcute lorsque lvnement auquel elle est attacheest reconnu par lapplication.

    Les objets de la collection Voitures peuvent, par exemple, reconnatre lvnement Choc.Un objet Voiture peut tre conu pour que la dtection de lvnement Choc entranelouverture de lobjetAirbag, autrement dit lapplication de la mthode Ouvrir cetobjet.

    Les vnements sutilisent essentiellement avec les contrles de formulaires que vous dve-lopperez et avec les objets. Vous apprendrez exploiter les vnements utilisateur affectant

    Dfinitio

    n

  • 7/31/2019 Le Programmeur Excel_VBA

    40/567

    Chapitre 1 Notions fondamentales de la programmation oriente objet 29un formulaire aux Chapitres 13 et 14. Les feuilles de calcul, les graphiques, les classeurset lapplication Excel grent aussi des vnements. Vous apprendrez crer des procduresvnementielles pour ces objets au Chapitre 15.

    Les fonctions

    Les 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 chanede caractres, dune valeur numrique, boolenne, de type Date, etc. Visual Basic intgreun certain nombre de fonctions que vous pouvez exploiter directement. Par exemple, lafonctionAsc renvoie le code ASCII du caractre slectionn, tandis que la fonction Intrenvoie la partie entire dun nombre. Certaines fonctions sont particulirement utiles.Cest le cas de la fonction MsgBox qui permet dafcher une bote de dialogue contenantdes boutons tels que Oui, Non, Annuler, etc., et qui renvoie une valeur retant le choix

    de lutilisateur.

    Vous pouvez aussi crer vos propres fonctions qui traiteront les valeurs qui leur serontpasses pour renvoyer une valeur ensuite utilise par le programme. Dans le cas dun objetVoiture, vous pouvez crer une fonction Cot_Plein qui exploitera les proprits Contenu_Rservoir et Contenance_Rservoir de lobjet, ainsi quune variable reprsentant le prixde lessence, pour renvoyer une valeur correspondant au cot dun plein. Lorsque vouscrez des fonctions VBA pour Excel, celles-ci sont accessibles pour lutilisateur nalcomme nimporte quelle fonction Excel intgre.

    Les fonctions ont gnralement besoin deparamtres ou arguments. Si les arguments obli-

    gatoires dune fonction ne lui sont pas passs au moment de lappel, une erreur est gnre.Dans le cas prcdent, trois paramtres de type numrique doivent tre passs la fonctionCot_Plein pour quelle sexcute correctement : le contenu du rservoir, sa contenance etle prix de lessence.

    Le modle dobjets dExcelExcel est lapplication Ofce qui supporte VBA depuis le plus longtemps et son modledobjets est le plus mr. Excel offre de multiples possibilits de personnalisation auprogrammeur.

    Les objets les plus importants sont prsents dans le Tableau 1.2. Le Listing 1.1 prsentedes exemples dinstruction VBA utilisant ces objets. Lessentiel de ces exemples a tgnr laide de lEnregistreur de macro, sans quil soit ncessaire dcrire du code.

  • 7/31/2019 Le Programmeur Excel_VBA

    41/567

    30 Excel et VBATableau 1.2 : Les objets cls du modle dobjets dExcel

    Collection (objet) Description

    Objets de niveauApplication

    Add-ins (Add-in) Lensemble des macros complmentaires, charges ou non. Acces-sibles dans la bote de dialogue Macros complmentaires (Outils >Macros complmentaires).

    Dialogs (Dialog) Les botes de dialogue prdnies dExcel.

    LanguageSettings Renvoie des informations sur les paramtres de langue utiliss danslapplication.

    Names (Name) Lensemble des objets Name de niveauApplication. Un objet Namereprsente un nom dni pour une plage de cellules nomme.

    Windows (Window) Lensemble des fentres disponibles (accessibles via le menu Fentre).

    Workbooks (Workbook) Lensemble des classeurs ouverts.Worksheetfunction On utilise lobjetWorksheetfunction pour accder aux fonctions de

    feuilles de calcul partir de VBA. Faites suivre la propritWorksheet-function dun point, puis du nom de la fonction et de ses argumentsentre parenthses.

    Objets de lobjetWorkbook

    Charts (Chart) Lensemble des feuilles graphiques de lobjetWorkbook.

    Names (Names) Lensemble des objets Name pour le classeur spci.

    Styles (Style) Lensemble des styles disponibles dans un classeur. Il peut sagir dunstyle dni par lutilisateur ou dun style prdni, tel que les styles

    Millier, Montaire ou Pourcentage (Format > Styles).

    Windows (Window) Lensemble des fentres pour le classeur spci.

    Worksheets (Worksheet) Lensemble des feuilles de calcul de lobjetWorkbook dsign.

    Objets de lobjetWorksheet

    Names (Name) Lensemble des objets Name pour la feuille de calcul spcie.

    Range Une cellule, une ligne, une colonne ou une plage de cellules, conti-gus ou non, une plage de cellules 3D.

    Comments (Comment) Lensemble des commentaires pour