chap-1_david.pdf

18
Excel 2007 Programmation VBA Daniel-Jean David Guide de formation avec cas pratiques © Tsoft et Groupe Eyrolles, 2009, ISBN : 978-2-212-12446-0

Upload: abdellahanejjar

Post on 02-Oct-2015

6 views

Category:

Documents


2 download

TRANSCRIPT

  • Excel 2007Avanc

    Guide de formation avec cas pratiques

    Philippe Moreau Patrick Mori

    Pages_base.indd 23 4/02/08 13:17:19

    Excel 2007Programmation

    VBA

    Daniel-Jean David

    Guide de formation avec cas pratiques

    12446_excel_07vba_165.indd 3 10/11/08 9:29:41

    Tsoft et Groupe Eyrolles, 2009, ISBN : 978-2-212-12446-0

  • Eyrolles/Tsoft VBA pour Excel 2007 7

    Cration dun Programme

    Enregistrement dune macro

    criture des instructions VBA : lditeur VBA

    Rgles fondamentales de prsentation

    Projets, diffrentes sortes de modules

    Options de projets

    Les diffrentes sortes dinstructions

    Les menus de lditeur VBA

  • 8 Eyrolles/Tsoft VBA pour Excel 2007

    ENREGISTREMENT DUNE MACRO

    ENREGISTRER UNE SUITE D'OPRATIONS EXCEL Nous allons voir quon peut mmoriser une suite doprations Excel pour pouvoir rpter cette suite ultrieurement sans avoir refaire les commandes.

    Dans feuille de classeur Excel, faites Affichage [Macros] Macros - Enregistrer une macro :

    Vous avez la possibilit de changer le nom de la macro, de la sauvegarder dans dautres classeurs (le plus souvent, on la sauvegarde dans le classeur en cours) ou de donner une description plus complte de la macro en cours de dfinition. Loption probablement la plus utile est dassocier une touche de raccourci. Cliquez sur __OK__ pour valider.

    Faites les oprations Excel que vous souhaitez enregistrer. Faites Affichage [Macros] Macros - Arrter l'enregistrement. Avant l'enregistrement, vous avez la possibilit de demander Affichage [Macros] Macros - Enregistrer une macro - Utiliser les rfrences relatives ce qui permet de dcider que la rdaction de la macro traitera les coordonnes de cellules en relatif (c'est en absolu en l'absence de cette commande).

    DCLENCHER UNE NOUVELLE EXCUTION Revenu sur la feuille Excel, modifiez ventuellement certaines donnes. Faites Affichage [Macros] Macros - Afficher les macros, le dialogue suivant saffiche :

  • Eyrolles/Tsoft VBA pour Excel 2007 9

    ENREGISTREMENT DUNE MACRO

    Ce dialogue permet de choisir une macro dans la liste. Cette liste est forme de toutes les procdures connues de Visual Basic soit dans tous les classeurs ouverts, soit dans le classeur spcifi grce la liste droulante en bas de la BDi.

    Aprs avoir slectionn la macro, cliquez sur le bouton _Excuter_, vous pouvez constater que vos oprations sont rptes

    EXAMINER LA MACRO PRODUITE Il faut pouvoir examiner ce quExcel a mmoris en fonction des actions enregistres. Cet examen est en particulier ncessaire si lexcution de la macro ne produit pas les rsultats voulus : cest probablement quune action parasite a t enregistre et il faudra enlever ce qui la reprsente dans lenregistrement

    Une autre raison dexaminer la macro telle quelle est enregistre est de pouvoir la modifier. Des modifications mineures quon peut vouloir faire viennent du processus mme de lenregistrement : supposons que, voulant slectionner la cellule A3, vous slectionniez dabord, suite une hsitation, la cellule A4 ; bien entendu, vous allez rectifier et cliquer sur A3. Mais Excel aura enregistr deux oprations de slection et il sera conseill de supprimer la slection de A4. Donc une premire raison de modification est dlaguer la macro des oprations inutiles.

    Un autre motif de modification, beaucoup plus important, est de changer le comportement de la macro pour le rendre plus ergonomique, ou pour traiter dautres aspects de lapplication.

    Dans la bote de dialogue Affichage [Macros] Macros - Afficher les macros, cliquez sur Modifier : la fentre de l'Editeur VBA apparat.

    L'ONGLET DVELOPPEUR Nous voyons maintenant une autre manire d'appeler l'diteur VBA. Une option permet d'ajouter un onglet appel Dveloppeur. Il est, de toutes faons, indispensable pour toute utilisation rgulire de VBA.

  • 10 Eyrolles/Tsoft VBA pour Excel 2007

    ENREGISTREMENT DUNE MACRO

    Afficher l'onglet dveloppeur

    Cliquez sur le Bouton Office . Cliquez sur Options Excel . Cochez ; Afficher l'onglet Dveloppeur dans le ruban et __OK__ . L'onglet Dveloppeur se rajoute au ruban. Voici son contenu :

    La commande Dveloppeur - Code - Macros fait apparatre la bote de dialogue liste des macros. La commande Dveloppeur - Code - Visual Basic appelle l'diteur VBA. Vous retiendrez rapidement son raccourci Alt+F11, best seller auprs des programmeurs VBA.

    On passe de la fentre de l'diteur VBA la fentre classeur et inversement par clics sur leurs boutons dans la barre en bas de lcran ou coups de Alt+F11.

    A part ses barres de menus et doutils, la fentre de l'diteur VBA comprend deux volets. Celui de gauche se partage de haut en bas en Explorateur de projets et Fentre de proprits ; le volet de droite est occup par une ou plusieurs fentres de code. Si vous navez pas laffichage correspondant la figure, le plus probable est que vous nayez

    pas la fentre de code, mais que vous ayez le volet de gauche. Dans lExplorateur de projets, vous devez avoir au moins une tte darborescence VBAProject(nom de votre classeur). Pour VBA, un classeur et lensemble de ses macros forme un projet . Larborescence de votre projet doit se terminer par une rubrique Modules.

    Si celle-ci nest pas dveloppe, cliquez sur son signe + : Module1 doit apparatre Double-cliquez sur le mot Module1 : la fentre de code doit apparatre. Si vous navez pas le volet de gauche, appelez le menu Affichage et cliquez les rubriques

    Explorateur de projets et Fentre Proprits, puis ventuellement arrangez leurs tailles et positions.

    Avantages et inconvnients de la construction de macros par enregistrement On peut crer une macro sans enregistrer des actions Excel, en crivant le texte du programme souhait directement dans une fentre module sous lditeur VBA.

    Un avantage de lenregistrement dune squence de commandes est que, la macro tant gnre par Excel, elle ne peut contenir aucune faute de frappe. Du ct des inconvnients, nous noterons un certain manque de souplesse : la macro ne peut que faire exactement ce quon a enregistr, sans paramtrage possible.

    Autre inconvnient, plus grave et qui justifie que lon puisse saisir des programmes directement au clavier : par enregistrement, on ne peut que gnrer un programme logique linaire o toutes les actions se suivent en squence ; on ne peut pas crer un programme o, en fonction de premiers rsultats, on effectue telle action ou bien telle autre : lors de lenregistrement, on suivra une seule des voies possibles et elle seule sera enregistre.

    A fortiori, lorsquune sous-tape du traitement doit tre rpte plusieurs fois, lenregistrement ne mmorise quun passage. Ces possibilits appeles alternatives et boucles sont offertes par des instructions de VBA mais qui doivent tre fournies directement. Ces instructions sappellent instructions de structuration.

  • Eyrolles/Tsoft VBA pour Excel 2007 11

    ENREGISTREMENT DUNE MACRO

    Mais un grand avantage de lenregistrement, qui est nos yeux le plus important, est que cette mthode est une extraordinaire machine apprendre VBAE, ou plutt les objets et leur manipulation : ds quon sait accomplir une action par les commandes Excel, on saura comment cela scrit en VBA, ou plutt quels objets manipuler et comment. Il suffit de se mettre en mode enregistrement, deffectuer les commandes Excel voulues, arrter lenregistrement puis examiner ce que le systme a gnr. Par exemple, pour voir comment on imprime, il suffit de commander une impression en mode enregistrement. Bien sr, on pourrait trouver la rponse dans laide en ligne, mais la mthode de lenregistrement pargne une longue recherche.

    Sauvegarde d'un classeur contenant des macros Bien entendu, votre classeur devra tre sauvegard. Dans la version Office 2007, les classeurs qui ne contiennent pas de macros ont l'extension .xlsx, tandis que ceux qui contiennent des macros ont l'extension .xlsm.

    Pour la 1re sauvegarde du classeur, il faut revenir la fentre Excel et :

    Bouton Office - Enregistrer sous - Classeur Excel prenant en charge les macros. Fournissez disque, rpertoire et nom du fichier. Pour les sauvegardes suivantes, la commande Fichier - Enregistrer de la fentre de l'diteur VBA convient.

  • 12 Eyrolles/Tsoft VBA pour Excel 2007

    CRITURE DES INSTRUCTIONS VBA : LDITEUR VBA

    CRER UN MODULE Depuis un classeur Excel, on arrive lcran VBA par la commande Dveloppeur - Code - Visual Basic ou Alt+F11. On a vu dans la section prcdente comment assurer que la fentre de projets soit prsente. Elle a au moins une arborescence VBA Project(nom de votre classeur) et celle-ci a au moins une rubrique Microsoft Excel Objects. Si le programme que vous souhaitez crire doit grer la rponse des vnements concernant

    une feuille de classeur ou le classeur, les modules correspondants apparaissent dans larborescence sous Microsoft Excel Objects. Double-cliquez sur la feuille voulue ou le classeur : la fentre de module apparat.

    Dans les autres cas : Slectionnez le projet (clic sur sa ligne dans la fentre Projets), puis Insertion Module pour un module normal. Les autres choix sont Module de classe et User

    Form (Bote de dialogue et module gestion des objets contenus). Ces cas sont traits dans dautres chapitres, donc plaons-nous ici dans le cas du module normal.

    Une fois le module cr, la rubrique Modules apparat dans larborescence. Pour pouvoir crire le programme, dveloppez la rubrique, puis double-cliquez sur le nom du module voulu.

    Il faut maintenant crer une procdure. Le menu Insertion a une rubrique Procdure, mais il suffit dcrire Sub dans le module.

    SUPPRIMER UN MODULE On peut avoir supprimer un module, notamment parce que, si on enregistre plusieurs macros, VBA peut dcider de les mettre dans des modules diffrents (par exemple Module2 , etc.) alors quil est prfrable de tout regrouper dans Module 1.

    Aprs avoir dplac les procdures des autres modules dans Module 1, slectionnez chaque module supprimer par clic sur son nom sous la rubrique Modules.

    Fichier Supprimer Module 2 (le nom du module slectionn apparat dans le menu Fichier). Une BDi apparat, proposant dexporter le module. Cliquez sur __Non__

    EXPORTER/IMPORTER UN MODULE

    Exporter : Si dans la BDi prcdente, vous cliquez sur __Oui__, vous exportez le module, c'est--dire que vous crez un fichier dextension .bas qui contiendra le texte des procdures du module. Un tel fichier peut aussi se construire par :

    Mettez le curseur texte dans la fentre du module voulu. Fichier Exporter un fichier. La BDi qui apparat vous permet de choisir disque, rpertoire et nom de fichier.

    Importer : Lopration inverse est limportation qui permet dajouter un fichier un projet :

    Slectionnez le projet concern (par clic sur sa ligne dans la fentre de projets), puis faites Fichier Importer un fichier.

    Dans la BDi, choisissez disque, rpertoire et nom de fichier. Les extensions possibles sont .bas (module normal), .cls (module de classe) et .frm (BDi construite par lutilisateur et le module de code associ).

    Cette technique permet de dvelopper des lments, procdures ou BDi servant pour plusieurs projets.

  • Eyrolles/Tsoft VBA pour Excel 2007 13

    CRITURE DES INSTRUCTIONS VBA : LDITEUR VBA

    OPTIONS RGLANT LE FONCTIONNEMENT DE LDITEUR Dans lcran VBA, faites Outils Options. Le fonctionnement de lditeur obit aux onglets diteur et Format de lditeur. Longlet diteur rgle le comportement vis--vis du contenu du programme notamment les aides lcriture procures par lditeur :

    Les choix de la figure nous semblent les plus raisonnables. ; Vrification automatique de la syntaxe parle delle-mme Dclaration de variables obligatoire si la case est coche installe automatiquement

    Option Explicit en tte de tous les modules. Si la case nest pas coche, vous devez taper la directive partout o il le faut.

    ; Complment automatique des instructions prsente les informations qui sont le complment logique de l'instruction au point o on est arriv.

    ; Info express automatique affiche des informations au sujet des fonctions et de leurs paramtres au fur et mesure de la saisie

    ; Info-bulles automatiques : en mode Arrt, affiche la valeur de la variable sur laquelle le curseur est plac.

    ; Retrait automatique : si une ligne de code est mise en retrait, toutes les lignes suivantes sont automatiquement alignes par rapport celle-ci. Pensez en mme temps choisir lamplitude des retraits successifs (ci-dessus 2, au lieu de la valeur par dfaut 4).

    Les options Paramtres de la fentre sont moins cruciales. ; dition de texte par glisser-dplacer permet de faire glisser des lments au sein du

    code et de la fentre Code vers les fentres Excution ou Espions. ; Affichage du module complet par dfaut fait afficher toutes les procdures dans la

    fentre Code ; on peut, par moments, dcider dafficher les procdures une par une. ; Sparation des procdures permet d'afficher ou de masquer les barres sparatrices

    situes la fin de chaque procdure dans la fentre Code. Lintrt de cette option est diminu par le fait que ces sparations napparaissent pas limpression du listing ; une solution est dinsrer devant chaque procdure une ligne de commentaire remplie de tirets : --------

  • 14 Eyrolles/Tsoft VBA pour Excel 2007

    CRITURE DES INSTRUCTIONS VBA : LDITEUR VBA

    Longlet Format de lditeur fixe les couleurs des diffrents lments du code. Cest lui qui dcide par dfaut mots-cls en bleu, commentaires en vert, erreurs en rouge.

    ; Barre des indicateurs en marge affiche ou masque la barre des indicateurs en marge, indicateurs utiles pour le dpannage.

    Ayant choisi un des lments dans la liste, vous dterminez la police, taille et couleur de faon classique ; en principe, on utilise une police de type Courrier parce quelle donne la mme largeur tous les caractres, mais rien ne vous y oblige.

    Les lments possibles sont : Texte normal, Texte slectionn, Texte de lerreur de syntaxe, Texte du point dexcution, Texte du point darrt, Texte du commentaire, Texte du mot cl, Texte de lidentificateur, Texte du signet, Texte de retour de lappel.

  • Eyrolles/Tsoft VBA pour Excel 2007 15

    RGLES FONDAMENTALES DE PRSENTATION

    UNE INSTRUCTION PAR LIGNE La rgle fondamentale est dcrire une instruction par ligne. Lorsque vous tapez sur la touche #, VBA suppose quon passe la prochaine instruction. Cette rgle admet deux exceptions qui ninterviennent que trs rarement. On peut mettre plusieurs instructions sur une ligne condition de les sparer par le

    caractre deux-points ( : ). x = 3 : y = 5 Cette pratique est tout fait dconseille ; elle ne se justifie que pour deux instructions courtes formant en quelque sorte un bloc logique dans lequel il ny aura en principe pas de risque davoir insrer dautres instructions. Une instruction peut dborder sur la (les) ligne(s) suivante(s). La prsentation devient : xxxxxxxxxxxxxxxxxxx(1re partie)xxxxxxxxxxxxxxxxxxx _ yyyyyyy(2e partie)yyyyyyyyyyyyyyy Les lignes sauf la dernire doivent se terminer par la squence . Bien entendu, la coupure doit tre place judicieusement : l o linstruction aurait naturellement un espace. On ne doit pas couper un mot-cl propre au langage, ni un nom de variable.

    Cas particulier : on ne doit pas couper une chane de caractres entre guillemets (comme "Bonjour"). La solution est la suivante : on remplace la longue chane par une concatnation de deux parties ("partie 1" + "partie 2") et on coupera comme suit : "partie 1" + _ "partie 2" .

    MAJUSCULES ET MINUSCULES Sauf lintrieur dune chane de caractres cite entre ", les majuscules et minuscules ne comptent pas en VBA. En fait, les mots-cls et les noms dobjets et de proprits prdfinis comportent des majuscules et minuscules et vous pouvez dfinir des noms de variables avec des majuscules o vous le souhaitez. Mais vous pouvez taper ces lments en ne respectant pas les majuscules dfinies (mais il faut que les lettres soient les mmes) : lditeur VBA rtablira automatiquement les majuscules de la dfinition ; pour les noms de variables, on se basera sur la 1re apparition de la variable (en principe sa dclaration).

    Il en rsulte un conseil trs important : dfinissez des noms avec un certain nombre de majuscules bien places et tapez tout en minuscules : si VBA ne rtablit pas de majuscules dans un nom, cest quil y a une faute dorthographe.

    Un autre lment qui peut vous permettre de dceler une faute dorthographe, mais seulement dans un mot-cl, est que si un mot nest pas reconnu comme mot-cl, VBA ne laffichera pas en bleu. Bien sr, vous devez tre vigilants sur ces points : plus tt une faute est reconnue, moins il y a de temps perdu.

    Pour les chanes de caractres entre ", il sagit de citations qui apparatront telles quelles, par exemple un message afficher, le nom dun client , etc. Il faut donc taper exactement les majuscules voulues.

    COMMENTAIRES, LIGNES VIDES Un commentaire est une portion de texte figurant dans le programme et nayant aucun effet sur celui-ci. La seule chose que VBA fait avec un commentaire, cest de le mmoriser et de lafficher dans le listing du programme. Les commentaires servent donner des explications sur le programme, les choix de mthodes de traitement, les astuces utilises, etc.

  • 16 Eyrolles/Tsoft VBA pour Excel 2007

    RGLES FONDAMENTALES DE PRSENTATION

    Ceci est utile pour modifier le programme, car, pour cela, il faut le comprendre ; cest utile mme pour le premier auteur du programme car lorsquon reprend un programme plusieurs mois aprs lavoir crit, on a oubli beaucoup de choses. Il est donc conseill dincorporer beaucoup de commentaires un programme ds quil est un peu complexe.

    VBA admet des commentaires en fin de ligne ou sur ligne entire.

    En fin de ligne, le commentaire commence par une apostrophe. Ex. : Remise = Montant * 0.1 On calcule une remise de 10% Sur ligne entire, le commentaire commence par une apostrophe ou le mot-cl Rem. On utilise plutt lapostrophe. Si le commentaire occupe plusieurs lignes, chaque ligne doit avoir son apostrophe.

    Les lignes vides sont autorises en VBA ; elles peuvent servir arer le texte. Nous conseillons de mettre une apostrophe en tte pour montrer que le fait que la ligne soit vide est voulu par le programmeur.

    LES ESPACES Les espaces sont assez libres en VBA, mais pas totalement. L o il peut et doit y avoir un espace, vous pouvez en mettre plusieurs, ou mettre une tabulation.

    On ne doit en aucun cas incorporer despaces lintrieur dun mot-cl, dun nom dobjet prdfini, dun nombre ou dun nom de variable : ces mots ne seraient pas reconnus.

    Au contraire, pour former des mots, ces lments doivent tre entours despaces, ou dautres caractres sparateurs comme la virgule.

    Les oprateurs doivent tre entours despaces, mais vous ntes pas obligs de les taper, lditeur VBA les fournira sauf pour &. Si vous tapez a=b+c vous obtiendrez a = b + c.

    LES RETRAITS OU INDENTATIONS Les instructions faisant partie dune mme squence doivent normalement commencer au mme niveau dcartement par rapport la marge. Lors de lemploi dinstructions de structuration, les squences qui en dpendent doivent tre en retrait par rapport aux mots-cls de structuration. En cas de structures imbriques, les retraits doivent sajouter. Exemple fictif : x = 3 For I = 2 To 10 a = 0.05 * I If b < x Then x = x - a Else b = b a End If Next I En cas de nombreuses imbrications, le retrait peut tre un peu grand : bornez-vous 2 caractres chaque niveau. Bien sr, ces retraits ne sont pas demands par le langage, ils nont que le but de faciliter la comprhension en faisant ressortir la structure du programme (ou plutt, la structure souhaite, car, dans son interprtation, VBA ne tient compte que des mots-cls, pas des indentations : mais justement un dsaccord entre les mots-cls et les indentations peut vous aider dpister une erreur).

    Il est donc essentiel, bien que non obligatoire que vous respectiez les indentations que nous suggrerons pour les instructions.

  • Eyrolles/Tsoft VBA pour Excel 2007 17

    RGLES FONDAMENTALES DE PRSENTATION

    AIDE LA RECHERCHE DERREURS Nous avons vu plus haut que VBA introduisait de lui-mme les majuscules voulues dans les mots-cls et les noms de variables, do notre conseil de tout taper en minuscules : sil ny a pas de transformation, cest quil y a probablement une faute de frappe.

    Pour les mots-cls, on a une aide supplmentaire : VBA met les mots-cls en bleu (en fait, la couleur choisie par option) ; si un mot nest pas transform, cest quil nest pas reconnu, donc quil y a une faute.

    Une autre aide automatique est que, en cas derreur de syntaxe, VBA affiche aussitt un message derreur et met linstruction en rouge. Bien sr cela ne dcle que les erreurs de syntaxe, pas les erreurs de logique du programme.

    AIDES LCRITURE Lditeur VBA complte automatiquement certaines instructions :

    Ds que vous avez tap une instruction Sub ou Function, VBA fournit le End Sub ou le End Function. Si vous tapez endif sans espace, VBA corrige : End If. Attention, il ne le fait que pour celle-l : pour End Select ou pour Exit Sub ou dautres, il faut taper lespace. Ds que vous tapez un espace aprs lappel dune procdure, ou la parenthse ouvrante lappel dune fonction, VBA vous suggre la liste des arguments. Il le fait toujours pour un lment prdfini ; pour une procdure ou fonction dfinie par vous, il faut quelle ait t dfinie avant.

    Ds que vous tapez le As dans une dclaration, VBA fournit une liste droulante des types possibles ; il suffit de double-cliquer sur celui que vous voulez pour lintroduire dans votre instruction. Vous avancez rapidement dans la liste en tapant la premire lettre souhaite. Un avantage supplmentaire est quun lment ainsi crit par VBA ne risque pas davoir de faute dorthographe.

    De mme, ds que vous tapez le point aprs une dsignation dobjet, VBA affiche la liste droulante des sous-objets, proprits et mthodes qui en dpendent et vous choisissez comme prcdemment. Lintrt est que la liste suggre est exhaustive et peut donc vous faire penser un lment que vous aviez oubli. Attention, cela napparat que si laide en ligne est installe et si le type dobjet est connu compltement lcriture, donc pas pour une variable objet qui aurait t dclare dun type plus gnral que lobjet dsign (ex. As Object).

  • 18 Eyrolles/Tsoft VBA pour Excel 2007

    PROJETS, DIFFRENTES SORTES DE MODULES

    DFINITION Un projet est lensemble de ce qui forme la solution dun problme (nous ne voulons pas dire "application" car ce terme a un autre sens, savoir lobjet Application, cest--dire Excel lui-mme), donc un classeur Excel avec ses feuilles de calcul, et tous les programmes crits en VBA qui sont sauvegards avec le classeur. Les programmes sont dans des modules ; le texte des programmes est affich dans des fentres de code. Il peut y avoir un module associ chaque feuille ou au classeur. Il peut y avoir un certain nombre de modules gnraux. De plus, le projet peut contenir aussi des modules de classe et des botes de dialogue cres par le programmeur : chaque BDi a en principe un module de code associ.

    Un programme peut ouvrir dautres classeurs que celui qui le contient ; ces classeurs forment autant de projets, mais secondaires par rapport au projet matre.

    LES FENTRES DU PROJET Lcran VBA contient principalement la fentre de projet o apparat le projet associ chaque classeur ouvert. Chaque projet y apparat sous forme dune arborescence (dveloppable ou repliable) montrant tous les lments du projet. Sous la fentre de projet, peut apparatre une fentre Proprits qui affiche les proprits dun lment choisi dans la fentre de projet ou dun contrle slectionn dans une BDi en construction.

    La plus grande partie de lcran sera consacre aux fentres de BDi en construction ou de code. Comme ces fentres sont en principe prsentes en cascade, on choisit celle qui est en premier plan par clic dans le menu Fentre. On dcide de laffichage dun tel lment par double-clic dans larborescence.

    On peut faire apparatre dautres fentres par clic dans le menu Affichage. Cest le cas des fentres de (lExplorateur de) Projets, Proprits, Explorateur dobjets, Excution, Variables locales et Espions, ces trois dernires servant surtout au dpannage des programmes.

    Le menu Affichage permet de basculer entre laffichage dun objet (comme une BDi) et la fentre de code correspondante (raccourci touche F7).

    Le choix des fentres afficher peut se faire aussi par des boutons de la barre doutils Standard de lcran VBA.

    DIFFRENTES SORTES DE MODULES chacune des quatre rubriques de la hirarchie dpendant du projet correspond une sorte de module. Microsoft Excel Objects (les feuilles et le classeur) correspondent des modules o se trouveront les programmes de rponse aux vnements de la feuille (ex. Worksheet_Change) ou du classeur (ex. Workbook_Open). Feuilles correspondent les BDi construites par le programmeur (UserForms). Chacune a un module associ qui contient les procdures de traitement des vnements lis aux contrles de la BDi (ex. UserForm_Initialize, CommandButton1_Click, etc.) ; Modules correspondent les diffrents modules "normaux" introduits. Cest dans ces modules (en principe, on les regroupe en un seul) que sont les procdures de calcul propres au problme.

    La dernire sorte de modules dpend de la rubrique Modules de classe ; les modules de classe permettent de dfinir des objets propres au programmeur. Ils sont beaucoup moins souvent utiliss car, vu la richesse des objets prdfinis en Excel VBA, on en utilise rarement plus de 10%, alors on a dautant moins de raisons den crer dautres !

    Une dernire rubrique, Rfrences peut tre prsente dans larborescence, mais elle nintroduit pas de modules.

  • Eyrolles/Tsoft VBA pour Excel 2007 19

    OPTIONS DE PROJETS

    LA COMMANDE OUTILS-OPTIONS Cette commande concerne les projets par ses onglets Gnral et Ancrage. Longlet Ancrage dcide quelles fentres vont pouvoir tre ancres c'est--dire fixes en priphrie de lcran. Ce nest pas vital. Longlet Gnral a plus dire :

    Le cadre Paramtres de grille de la feuille gre le placement des contrles sur une BDi construite par le programmeur, donc voir chapitre 6.

    ; Afficher les info-bulles affiche les info-bulles des boutons de barre d'outils. ; Rduire le proj. masque les fentres dfinit si les fentres de projet, UserForm, d'objet ou

    de module sont fermes automatiquement lors de la rduction du projet dans l'Explorateur de projet.

    Le cadre Modifier et continuer. ; Avertir avant perte d'tat active l'affichage d'un message lorsque l'action demande va

    entraner la rinitialisation de toutes les variables de niveau module dans le projet en cours.

    Le cadre Rcupration d'erreur dfinit la gestion des erreurs dans l'environnement de dveloppement Visual Basic. L'option s'applique toutes les occurrences de Visual Basic lances ultrieurement. ~ Arrt sur toutes les erreurs : en cas d'erreur quelle quelle soit, le projet passe en mode

    Arrt. ~ Arrt dans les modules de classe : en cas d'erreur non gre survenue dans un module

    de classe, le projet passe en mode Arrt la ligne de code du module de classe o s'est produite l'erreur.

    ~ Arrt sur les erreurs non gres : si un gestionnaire d'erreurs est actif, l'erreur est intercepte sans passage en mode Arrt. Si aucun gestionnaire d'erreurs n'est actif, le projet passe en mode Arrt. Ceci est loption la plus conseille.

  • 20 Eyrolles/Tsoft VBA pour Excel 2007

    OPTIONS DE PROJETS

    Compilation ; Compilation sur demande dfinit si un projet est entirement compil avant d'tre

    excut ou si le code est compil en fonction des besoins, ce qui permet l'application de dmarrer plus rapidement, mais retarde lapparition des messages derreur ventuels dans une partie de programme rarement utilise.

    ; Compilation en arrire-plan dfinit si les priodes d'inactivit sont mises profit durant l'excution pour terminer la compilation du projet en arrire-plan, ce qui permet un gain de temps. Possible seulement en mode compilation sur demande.

    LA COMMANDE OUTILS-PROPRITS DE Cette commande fait apparatre une BDi avec deux onglets :

    Longlet Gnral permet de donner un nom plus spcifique que VBAProject, et surtout de fournir un petit texte descriptif. Les donnes concernant laide nont plus dintrt : la mode est maintenant de fournir une aide sous forme HTML. La compilation conditionnelle est sans rel intrt.

    Longlet Protection permet de protger votre travail. ; Verrouiller le projet pour laffichage interdit toute modification de nimporte quel

    lment de votre projet. Il ne faut y faire appel que lorsque le projet est parfaitement au point !

    La fourniture dun mot de passe (il faut le donner deux fois, cest classique) empche de dvelopper larborescence du projet dans la fentre Explorateur de projets si lon ne donne pas le mot de passe. Donc un "indiscret" qui na pas le mot de passe na accs aucune composante de votre projet.

    LA COMMANDE OUTILS-RFRENCES Permet de dfinir une rfrence la bibliothque d'objets dune autre application pour y slectionner des objets appartenant cette application, afin de les utiliser dans votre code. Cest une faon denrichir votre projet.

  • Eyrolles/Tsoft VBA pour Excel 2007 21

    LES DIFFRENTES SORTES DINSTRUCTIONS

    Les instructions VBA se rpartissent en instructions excutables ou ordres et instructions non excutables ou dclarations.

    INSTRUCTIONS EXCUTABLES Ce sont les instructions qui font effectuer une action par lordinateur. Elles se rpartissent en Instructions squentielles, telles que linstruction qui sera excute aprs est linstruction

    qui suit dans le texte. La principale instruction de cette catgorie est linstruction daffectation, de la forme

    [Set]= , o lexpression indique un calcul faire. Lexpression est calcule et le rsultat est affect la donne. En labsence de Set (on devrait normalement mettre Let, mais il nest jamais employ), lexpression conduit une valeur et est une variable ou une proprit dobjet ; elle reoit la valeur calcule comme nouvelle valeur. Avec Set, lexpression a pour rsultat un objet et est une variable du type de cet objet : aprs linstruction, cette variable permettra de dsigner lobjet de faon abrge. part lappel de procdures, cette instruction est la plus importante de tout le langage.

    Toute une srie dactions diverses, notamment sur les fichiers (Open, Close, Print#...) ou sur certains objets (Load, Unload ...) ou encore certaines oprations systme (Beep, Time ). Ces instructions pourraient dailleurs aussi bien tre considres comme des appels des procdures ou des mthodes prdfinies.

    Instructions de structuration, ou de rupture de squence, qui rompent la suite purement

    linaire des instructions, aiguillant le traitement vers une squence ou une autre selon des conditions, ou faisant rpter une squence selon les besoins. Ces instructions construisent donc la structure du programme. La plus importante est : Lappel de procdure : on droute lexcution vers un bloc dinstructions nomm qui

    remplit un rle dtermin. La fin de lexcution de la procdure se rduit un retour dans la procdure appelante juste aprs linstruction dappel. Cela permet de subdiviser un programme complexe en plusieurs petites units beaucoup plus faciles matriser. La plupart du temps, linstruction se rduit citer le nom de la procdure appeler.

    Les autres instructions de structuration permettent dimplmenter les deux structures de la programmation structure.

    La structure alternative o, en fonction de certaines conditions, on fera une squence ou bien une autre. VBA offre pour cela deux instructions principales, If qui construit une alternative deux branches et Select Case qui permet plusieurs branches.

    La structure itrative ou boucle, o on rpte une squence jusqu ce quune condition soit remplie (ou tant que la condition contraire prvaut). VBA offre pour cette structure les instructions DoLoop, WhileWend et, surtout, ForNext qui est la plus employe.

    INSTRUCTIONS NON EXCUTABLES OU DCLARATIONS Ces instructions ne dclenchent pas dactions de lordinateur, mais donnent des prcisions au systme VBA sur la manire dont il doit traiter les instructions excutables. La plus importante de ces instructions est la dclaration de variable qui : annonce quon va utiliser une variable de tel ou tel nom. indique le type (par exemple rel, ou entier, etc.) de la variable, c'est--dire des donnes quelle

    va contenir. Il est vident que les calculs ne seffectuent pas de la mme faon sur un nombre entier ou sur un rel. Cest en cela que les dclarations orientent le travail de VBA. Elles sont donc aussi importantes que les instructions excutables.

  • 22 Eyrolles/Tsoft VBA pour Excel 2007

    LES DIFFRENTES SORTES DINSTRUCTIONS

    Place des dclarations de variables Normalement, il suffit quune dclaration de variable soit nimporte o avant la premire utilisation de cette variable. En fait on recommande vivement de placer les dclarations de variables en tte de leur procdure. Par ailleurs, certaines dclarations de variables doivent tre places en tte de module, avant la premire procdure du module.

    Parmi les dclarations importantes, les couples Sub End Sub et Function End Function dlimitent respectivement une procdure ou une fonction. Sub et Function ont en outre le rle de dclarer des ventuels arguments. Les deux End sont la fois des dclarations - elles dlimitent la fin de la procdure ou de la fonction et des instructions excutables : lorsque lon arrive sur elles on termine la procdure ou la fonction et on retourne lappelant.

    DIRECTIVES Les directives sont des dclarations particulires qui jouent un rle global au niveau du projet. Elles sont places tout fait en tte de module. Certaines peuvent tre spcifies sous forme doptions de projet auquel cas la directive est crite automatiquement en tte de tous les modules. Option Explicit Exige que toute variable soit dclare. Nous conseillons vivement cette option car si vous faites une faute de frappe dans un nom de variable, en labsence de cette option, VBA "croira" que vous introduisez une nouvelle variable, alors quavec cette option, il y aura un message derreur vous permettant de la corriger aussitt. Option Base Fixe 0 ou 1 la premire valeur des indices de tableaux. La valeur par dfaut est 0. Souvent les programmeurs utilisent les indices partir de 1 sans spcifier Option Base 1 : llment 0 est laiss vide. Cette pratique a un inconvnient : si par erreur un indice tait calcul 0, la directive assurerait un message derreur. Option Compare Fixe la faon dont les chanes de caractres sont compares. Avec Text, une majuscule et sa minuscule sont confondues alors quavec Binary, la comparaison est complte et les minuscules sont plus loin que les majuscules dans lordre alphabtique. Option Private Module Dclare le module entier comme priv, donc aucun de ses lments, variables, procdures ou fonctions ne sera accessible depuis un autre module.

  • Eyrolles/Tsoft VBA pour Excel 2007 23

    LES MENUS DE LDITEUR VBA

    N.B. Certaines rubriques peuvent varier lgrement en fonction du contexte, selon qu'on est dans une procdure ou non et selon ce qu'on a fait prcdemment ; ainsi Edition - Impossible d'annuler peut devenir Edition - Annuler, Excuter Sub... peut devenir Excuter la macro, etc.