You are on page 1of 21

Les bases pour bien dbuter avec le VBA | www.excelabo.

net

www.excelabo.net
Votre portail Excel et VBA

Recherche

Accueil

Application-Tableur-Jeux

Donnes-Outils

Formules-Macros

Ressources Web

Autres Pages

Recherche

Excel Pas Pas


q

Tutoriels
r

Application Tableur Donnes Outils Fonctions et formules Le temps Macros, VBA, Formulaires
s

Les macros Excel


s

Les bases pour bien dbuter avec le VBA

L'diteur VBA Utiliser un code L'enregistreur de macros Mots clefs VBA Les variables Proprits et Mthodes Manipuler un range ou plage de donnes, en VBA

Les Boucles Contrler le droulement d'une macro

http://www.excelabo.net/pasapas/vba-bases (1 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net


s

Evnements dclenchables par une action sur un classeur

Evnements dclenchs par une action sur une feuille

Modules de classe

Les userforms Arrays : utilisation des tableaux internes pour acclrer vos macros

Scripting.dictionary : les dictionnaires dans excel

Ces outils et astuces qui vous simplifient excel

Connexion utilisateur
Nom d'utilisateur : *

Mot de passe : *

Se connecter
q

Crer un nouveau compte

Demander un nouveau mot de passe

2007-2011

Sur Excelabo
2 203 pages dont
q

1 334 Questions-Rponses 597 Classeurs exemples

http://www.excelabo.net/pasapas/vba-bases (2 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net


q

105 Pages Excel Pas Pas 67 Liens web sur excel

33 761 Lecteurs enregistrs 375 Contributeurs

Depuis dcembre 2000 :

8 643 298 31 096 443 2 720 311

(3180 depuis hier) (10355 depuis hier) (314 depuis hier)

En Ligne
Il y a actuellement 1 utilisateur et 6 invits en ligne.

Accueil Tutoriels Macros, VBA, Formulaires Les macros Excel

Les bases pour bien dbuter avec le VBA


q

Introduction Dfinitions L'enregistreur de macros L'diteur Visual Basic (VBE) Les objets Microsoft Excel
r

Structurer une macro Les instructions conditionnelles Les plages de cellules : l'objet range

les boucles

Les modules
s

VBA en Franais ou en Anglais ? Conventions d'critures Macros ou fonctions Excuter une macro Les modules de feuille

http://www.excelabo.net/pasapas/vba-bases (3 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Le module ThisWorkbook Les Userforms ou formulaires Les modules de classe

Introduction
Vous avez entendu parler de "macros", de Visual Basic, d'enregistreur de macros, de modules mais vous ne savez pas du tout ce que sont ces btes l ? Alors cette fiche est pour vous. Nous n'aborderons ici que les notions de base, indispensables pour pouvoir utiliser ensuite l'aide fournie par Excel, (accessible avec la touche F1 depuis l'application) par les astuces et classeurs exemples d'Excelabo et par le forum MPFE. Beaucoup des notions indispensables pour dmarrer avec les macros sont en fait dj expliques sur excelabo. L'objectif de cette page est de les prsenter de faon plus didactique et ordonne. Les liens vers les explications plus dtailles vous seront indiqus.

Quelques dfinitions
Macros : Une macro (sous entendu macro-commande) est une suite d'instructions permettant d'effectuer une tache rptitive simplement. Cette macro peut tre trs simple, comme reproduire une mise en forme, ou beaucoup plus complexe, incluant par exemple des tests sur la valeur d'une cellule ou des calculs complexes. Les macros peuvent aussi "sortir d'excel", aller ouvrir des fichiers dans un rpertoire, transfrer des fichiers par FTP sur un serveur distant, ouvrir d'autres applications... Les possibilits sont innombrables. Une macro fait souvent appel des variables.
q

Variables : Si je veux multiplier par deux la valeur de toutes les cellules sur fond bleu de ma feuille, je peux crire une macro qui balaiera toute la feuille et ralisera cette opration. Maintenant, si je veux faire la mme chose mais en cherchant les cellules sur fond rouge et les multiplier par 3, au lieu de refaire toute la macro, je peux utiliser une "variable" pour la couleur et

http://www.excelabo.net/pasapas/vba-bases (4 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

une pour l'opration effectuer. En dbut de macro, j'affecterai une valeur rouge la variable que j'appelle 'couleur' et la valeur 3 ma variable 'opration'. Dans la macro, j'utiliserai ensuite les variables en lieu et place des valeurs qui leurs sont affectes. Vous pouvez lire d'autres infos sur ce sujet sur la page lexique.
q

Visual Basic pour Application ou VBA : VBA est une forme spcialise de Visual Basic pour une application donne. Il existe un VBA pour word, pour excel, pour outlook... VBA est driv du langage de programmation basic. Il fait partie des langages dits "orients objets".

Objet : Un objet VBA est un lment que l'on peut manipuler par le langage de programmation. Il possde des proprits et des mthodes ou des vnements lui sont associs. Une feuille excel d'un classeur est un objet. Elle possde des proprits comme sa taille, son index. Certaines sont modifiables comme le nom, la proprit visible ou cache. Les mthodes ou vnements associs une feuille sont par exemple les methode open (ouvrir), close (fermer), beforeprint (s'effectue avant l'impression)... Il y a de trs nombreux objets dans excel (les cellules, les boutons des barres d'outils, le classeur lui mme, les graphiques...). Il n'est pas question d'en dresser la liste exhaustive avec les proprits, mthodes et vnements associs puisqu'Excel le fait pour nous dans l'aide de visual basic et dans la fentre "explorateurs d'objets" dans l'diteur VBA.

L'diteur VBA ou VBE : Pour crire des macros, il faut ouvrir l'diteur visual basic ou VBE (Visual Basic Editor). Depuis excel, vous pouvez y accder en cliquant droit sur le nom d'un onglet en bas et en choisissant "voir le code", par le menu outils/ macros/visual basic editor ou bien en cliquant sur alt+F11. Vous pouvez galement personnaliser vos barres d'outils et "monter" l'icone de VBE. Nous verrons plus loin ce que contient une fentre VBE.

L'enregistreur de macros
L'enregistreur de macros est un outil de base pour dbuter en programmation mais aussi lorsque, programmateur chevronn, on ne se souvient plus de la syntaxe d'une instruction. Le principe: vous dclenchez l'enregistreur, vous effectuez une srie d'actions, vous arrtez l'enregistreur. En "rejouant" la macro enregistre, les mmes actions sont rptes. Si vous avez besoin de faire la mme suite
http://www.excelabo.net/pasapas/vba-bases (5 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

d'oprations 300 fois, vous voyez vite l'intrt d'automatiser la chose... Vous trouverez plus d'explications sur la page consacre l'enregistreur de macros.

L'diteur Visual Basic


Le code enregistr par l'enregistreur de macros est crit dans un fichier que vous pouvez visualiser et modifier dans l'diteur visual basic, VBE. Si vous n'tes pas familier avec les diffrents lments qu'on y trouve, ils sont dcris en dtail sur la page de l'diteur VBA. Chaque classeur contient des feuilles (au moins une) et le cas chant des "modules" qui contiennent vos macros.

Les objets Microsoft


Dans l'explorateur de projet vous trouvez une rubrique intituls Objets microsoft excel.Dveloppez le. En ouvrant ce dossier vous voyez une liste correspondant chacune des feuilles du classeur, plus une feuille nomme "ThisWorkbook". Si vous avez enregistr une macro dans ce classeur avec l'enregistreur, vous devez voir un dossier nomm modules. Dans celui ci vous avez une feuille nomme "module1" Cliquez dessus, vous voyez le code crit par l'enregistreur. L'enregistreur de macros ne mlangeant pas ses oeuvres avec les votres, si vous aviez dj cr une macro dans ce classeur, l'enregistreur aurait cr un deuxime module.

Les modules
Double cliquez sur "module1". Vous voyez apparaitre dans la fentre centrale le code enregistr. Dans la fentre centrale, vous pouvez bien sur crire directement votre code, ou copier celui que vous avez trouv sur le forum ou sur excelabo. Faites juste attention aux sauts de ligne. Si le code est crit en rouge, c'est qu'excel n'est pas d'accord avec votre syntaxe. Sur le forum, les lignes sont souvent coupes par un retour chariot et VBE ne comprend plus. Si pour des raisons de lisibilit, vous devez couper une ligne, insrez un espace suivi d'un underscore (_) l ou vous voulez couper.

http://www.excelabo.net/pasapas/vba-bases (6 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Vous pouvez crire plusieurs macros dans un mme module. Thoriquement, le nombre de modules par classeur n'est pas limit, sauf par la mmoire de votre PC. Cependant, pour conomiser de la place, mais aussi pour faciliter la lecture des codes, il est plus judicieux de regouper dans un mme module des macros destines fonctionner plus ou moins ensemble. Les modules sont identifis par dfaut par des numros. Vous pouvez modifier ceci pour mettre des noms plus parlants. Il vous suffit dans la fentre des proprits, cot de (name) de taper le nom de votre choix, sans espaces et sans caractres interdits.

VBA en Franais ou en Anglais ?


Dans la version 5 d'Excel (ou Excel95), le VBA, issu de VB5 tait en franais. Cependant, depuis la version 7 (ou Excel 97) (il n'y a pas de version 6!) Microsoft a abandonn le dveloppement de VB en franais. Sur PC, les versions postrieures Excel 95 utilisent VB6 en anglais exclusivement. Ne soyez pas paniqus pour autant, mme si vous ne parlez pas un mot d'anglais. D'abord, l'aide d'Excel est en franais. Ensuite le vocabulaire anglais utilis est d'une pauvret rare ! Apprendre utiliser Do... While n'est gure plus difficile que d'apprendre Faire...Tant Que. L'avantage c'est que si vous avez dj programm dans d'autres langages ou si par la suite vous en apprenez d'autres , vous vous y retrouverez rapidement. Pour vous aider, Microsoft livre avec Excel un classeur intitul VBAlist.xls qui traduit en franais les noms de fonctions et les instructions. Ce classeur est install au moment de l'installation. Si vous ne le retrouvez pas sur votre micro, vous pouvez y accder ici. Vous trouverez galement d'autres outils de traduction sur excelabo, notamment un classeur de Alain Vallon et un de Daniel Maher.

conventions d'criture
L'criture d'une macro commence par Sub suivi du nom de la macro et de deux parenthses vides. Ces parenthses peuvent recevoir des paramtres qui seront passs la macro. Vos premires macros n'en contiendront gnralement pas. La fin de la macro se termine par End Sub, mot clef rserv qui indique la fin de la procdure (ou "Sub")
http://www.excelabo.net/pasapas/vba-bases (7 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Sub Test() ... 'ceci est un commentaire qui ne sera pas excut par le programme

' il est prcd d'une apostrophe en dbut de ligne End Sub

Entre les deux vous voyez le code crit par l'enregistreur. Celui-ci est toujours trs complets. Si plusieurs attributs sont possibles pour un objet, l'enregistreur les prcise tous, mme ceux dont vous ne vous servez pas. Pour vous en convaincre, enregistrez une macro changeant les bordures d'une cellule. Vous verrez que le code gnr est trs "bavard". Vous pouvez gnralement simplifier largement ce code. Pour voir quels sont les paramtres ncessaires, le plus simple c'est d'effacer ceux qui vous paraissent superflus et de voir si la macro fonctionne toujours. Plutt que d'effacer rellement et de devoir retaper en cas d'erreur, mettez en commentaires le code oublier. Pour cela, il suffit de mettre une apostrophe simple en dbut de ligne. Le texte change de couleur pour vous signaler ce changement (les couleurs sont paramtrables via le menu options de VBE). Vous pouvez mettre d'un coup tout un bloc de lignes ou revenir l'tat "non comment" facilement en utilisant les boutons adquats. Ceux-ci ne sont pas mis par dfaut dans VBE, je vous conseille vivement de les installer en personnalisant VBE (menu affichage, barres d'outils, personnaliser, commandes, dition, commenter bloc et ne pas commenter bloc.

Les noms des macros sont trs libres. Cependant, ils ne doivent pas dpasser 32 caractres ni contenir certains caractres comme des espaces, apostrophes, guillemets... Pour faciliter la lecture, je vous conseille de donner des noms assez explicites et d'introduire des majuscules dans le nom (pas forcment au dbut) comme MaPremiereMacro. L'intrt est que si vous appellez cette macro depuis une autre par la suite, lorsque vous taperez en minuscules mapremieremacro, Excel mettra de lui mme les majuscules, vous signifiant par

http://www.excelabo.net/pasapas/vba-bases (8 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

l qu'il a reconnu que vous appelliez cette macro. C'est trs pratique pour viter de faire des fautes d'orthographe.

Macros et fonctions
Vous entendrez parler de macros et de fonctions. Les deux s'crivent dans VBE et leur fonctionnement est assez similaire. La fonction, qui s'identifie par

Function(Parametre1) ... End Function

reoit une valeur et en renvoie une autre. Par exemple, la fonction reoit un nombre et renvoie celui ci au carr. Elle peut aussi recevoir du texte et renvoy celui ci modifi (supression de caractres interdits) ou renvoy le rsultat d'un test avec vrai/faux. Une fonction reoit, modifie et renvoie des valeurs. Une macro effectue plus gnralement un traitement. Une macro peut par exemple si la valeur saisie en A1 est suprieure 3 crire "vrai" dans les cellules A2 A20. Une fonction n'crit rien dans la feuille ni ne modifie de format de cellule.

Excuter une macro


Pour excuter une macro, vous pouvez

soit rester dans VBE et passer par le menu excution/excuter la macro. La macro qui s'excute est celle dans lequel votre curseur est prsent (peu importe o).

Faire F5 vous mettre dans la feuille Excel et choisir la macro depuis le menu outils/macro

http://www.excelabo.net/pasapas/vba-bases (9 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net


q

Pour que ce soit plus pratique, vous pouvez galement associer la macro un bouton que vous placez sur la feuille. Cette procdure est dcrite dans le classeur associ ce fichier.

Vous pouvez galement excuter vos macros pas pas pour en suivre le droulement. Dans VBE, placez le curseur dans votre macro et appuyez sur la touche F8. Chaque instruction est excute puis le programme attend un nouvel appui su F8 pour continuer. En passant la souris au dessus des noms des variables, VBE affiche leur valeur. Indispensable pour les mises au point !

Le module que nous venons de voir est un module ordinaire, par opposition aux modules de feuilles et aux modules de classe.

Modules de feuilles
Si vous double cliquez sur le nom d'une des feuilles dans l'explorateur de projet VBE, vous ouvrez une feuille vierge dite "module de feuille. Les macros que vous crivez dans ces modules sont construites de la mme faon que les macros des modules ordinaires. Cependant, leur action ne s'exerce QUE sur la feuille laquelle ils sont lis. Dans cette feuille, en haut gauche vous avez un petit menu qui contient deux rubriques : gnral et worksheet. Si vous slectionnez gnral, le menu de droite en haut de cette feuille n'affiche rien. Vous vous mettez dans cette configuration pour crire des macros non vnementielles mais dont l'action (tri, formatage, calculs...) doit rester restreinte la feuille. En revanche si vous choisissez worksheet, le menu de droite vous propose des vnements associs la feuille. Vous mettrez donc dans ces modules des macros vnementielles. Ces macros, comme leur nom l'indique, se dclenchent lors d'un vnement. Par exemple lorsque vous changez de feuille dans le classeur, vous pouvez activer l'affichage d'une barre d'outils personnalise, ou le double clic dans cette feuille peut dclencher une suite d'oprations.

Les FONCTIONS doivent OBLIGATOIREMENT tre crites dans un module ordinaire, jamais dans un module de feuille, mme si elles ne fonctionneront en fait qu'en rapport avec une feuille particulire.

http://www.excelabo.net/pasapas/vba-bases (10 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

ThisWorkbook
La feuille ThisWorkbook ("CeClasseur" en anglais) reoit les macros vnementielles lies au classeur lui mme. Comme prcdemment, le menu de droite vous montre quels sont ces vnements. C'est dans cette feuille que vous mettrez par exemple une macro qui doit se lancer automatiquement l'ouverture du classeur, dans une macro private sub workbook_open()

les Userforms ou formulaires


Dans l'explorateur de fichier, si vous faites un clic droit vous avez la possibilit d'insrer un nouvel objet : module ordinaire, module de classe ou userform. Les userforms sont des botes de dialogue, entirement paramtrables, qui vous permettent par exemple de faciliter la saisie de donnes par un utilisateur. Sur ces formulaires, vous placerez des outils ou "contrles" tels que des boutons, des boites de texte, des menus droulants... Ces diffrents outils sont disponibles partir de la bote outil.

http://www.excelabo.net/pasapas/vba-bases (11 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Vous trouverez deux pages entires consacres aux userforms et aux contrles sur excelabo et plusieurs classeurs de dmonstration pour bien dbuter avec ces outils vraiment puissants. Les macros qui sont associes aux contrles d'un formulaire sont stockes avec celui ci. Dans l'explorateur de fichier, les userforms sont regroups dans un dossier spcifique nomm feuilles (nom fort mal choisi car pretant confusion avec les feuilles de classeur mais c'est comme a !). Si vous double cliquez sur le nom d'un formulaire, vous ouvrez celui ci. Si vous faites un clic droit sur le nom du formulaire, vous accdez au code. Dans la fentre qui s'ouvre, dans le menu de gauche en haut, vous voyez le nom des diffrents contrles que vous avez plac sur la feuille.

Modules de Classe
Le dernier type d'objet microsoft que vous pouvez ajouter depuis l'explorateur de projet, ce sont les modules de classe. Nous ne

http://www.excelabo.net/pasapas/vba-bases (12 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

dcrirons pas ces modules ici, leur usage n'tant clairement pas pour les dbutants ! Sachez que ces modules permettent de crer des nouvelles classes d'objet, objets qui possdent des proprits et des mthodes associes. Pour en avoir un aperu humoristique je vous recommande en guise de pause la lecture de cette petite leon de Laurent Longre.

Structurer une macro


Avant de se lancer dans l'criture d'une macro, analysez la tache accomplir et essayer de la dcouper en petits morceaux que vous pourrez mettre au point et tester sparment. N'hsitez pas ajouter des commentaires (lignes commenant par un ') pour faciliter la relecture de votre code et vous rappeller ce que vous voulez faire dans telle ou telle partie. Cette phase prparatoire parait rbarbative mais elle peut pourtant faire gagner normment de temps de programmation et d'excution. Une macro peut faire appel d'autres macros. Votre macro principale peut donc donner juste ceci :

Sub Mamacro() 'je copie-colle les donnes ncessaires la construction de mon graphique CopieColle 'je construis le graphique Construction 'je le mets en forme Formatage End Sub

Chaque instruction dans cette macro est en fait un appel d'une autre macro. Je vous conseille cette criture ds que vous avez des traitements un peu complexes raliser. Votre programme sera ainsi bien plus facile debugger. Utilisez ensuite au maximum
http://www.excelabo.net/pasapas/vba-bases (13 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

l'enregistreur de macros pour faire chaque petite "sous macro". Dans l'exemple ci dessus, chaque sous-macro est appele directement par son nom. Vous pouvez aussi ajouter "Call" devant pour vous rappeller que c'est un appel de macro.(rminiscence des anciennes instructions Basic "GoSub / Return"). Attention toutefois aprs l'xcution de la sous-macro, le traitement de la macro appelante continu. Si l'on veut que via la macro appele modifier la suite du fonctionnement de la macro appelante, il faut gnrer un code retour qui sera interprt par la macro appelante. Dans le mme module (ou dans un autre), vous aurez donc toutes les macros appelles pas cette macro principale. Rien ne vous interdit, bien au contraire, de faire appel une macro depuis plusieurs autres. C'est mme vivement recommand si cela permet d'conomiser des lignes de codes, consommatrices de mmoire et toujours susceptibles de contenir des erreurs.

L'enregistreur de macros ne peut cependant pas comme nous l'avons dj dit tout faire. Il est notamment incapable de faire des boucles ou de faire des choix. Nous allons voir rapidement ces deux types d'instructions.

Les instructions conditionnelles


Comment traduire en VBA la phrase suivante : si ma cellulea est sur fond bleu, alors multiplie sa valeur par 2, si elle est sur fond rouge, multiplie la par 3, sinon (autre couleur), divise la par 2 ? Il y a plusieurs types d'instructions conditionnelles. La plus utilise est l'instruction "If... Then...Else...End If", autrement dit : si, alors, sinon, fin de si. Nous allons utiliser cette instruction dans notre exemple. Avant tout, j'ai besoin de savoir comment dire Excel de tester la couleur de fond d'une cellule. Pour cela je lance l'enregistreur de macros et je colorie des cellules dans les couleurs de mon choix (bleu puis rouge). Je rcupre le code :

http://www.excelabo.net/pasapas/vba-bases (14 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Range("B5").Select With Selection.Interior .ColorIndex = 5 .Pattern = xlSolid End With Range("B6").Select With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid End With

La partie qui m'intresse ici est Selection.Interior.ColorIndex. Le bleu a pour code 5, le rouge 3. L'criture propose par l'enregistreur comprend frquemment des instructions

With ... End with.

L'enregistreur dtaille toutes les proprits associes un objet. Ici l'objet cellule B5 est dcrit par son adresse ou range (plage). Elle est d'abord slectionne. Le "." met en rapport l'objet range("B5") et la mthode associe : Select. Ensuite, Excel dcrit une des proprits de l'objet (Selection.Interior) avec tous ses arguments (ColorIndex et Pattern). Pour viter de redire chaque fois que ColorIndex ou Pattern sont associs l'objet cellule, d'adresse truc, de mthode machin et de proprit bidule, on utilise cette criture condense. Faites trs attention aux points. Ils sont indispensables pour relier entre eux les objets, leurs proprits et leurs mthodes
http://www.excelabo.net/pasapas/vba-bases (15 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

associes.

Quand vous tapez votre code, VBE vous propose une aide la saisie fort utile : si je tape activecell par exemple, pour faire rfrence la cellule actuellement slectionne dans la feuille, au moment ou je tape le point derrire, un menu droulant s'ouvre dans VBE et me propose les proprits et mthodes associes activecell. Il me suffit de slectionner la proprit et taper enter. En tapant les premires lettres de la proprit, le menu s'ajuste pour restreindre les choix. Ceci me permet en plus de vrifier que j'ai bien employ le bon mot puisque cellactive n'entrane pas l'ouverture du petit menu. Voici donc notre premire "vraie" macro :

Sub ConditionCouleur() If ActiveCell.Interior.ColorIndex = 5 Then ActiveCell.Value = ActiveCell.Value * 2 ElseIf ActiveCell.Interior.ColorIndex = 3 Then ActiveCell.Value = ActiveCell.Value * 3 Else ActiveCell.Value = ActiveCell.Value / 2 End If End Sub

Commentaires :

If et then doivent toujours se trouver sur la mme ligne. vous pouvez ajouter autant de elseif que souhait. Cependant d'autres instructions (Select Case) sont plus adaptes en

http://www.excelabo.net/pasapas/vba-bases (16 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

cas de choix multiples.


q

si vous ne voulez rien faire si aucune des conditions n'est remplie, vous n'tes pas oblig de mettre la ligne Else. Vous avez ici une proprit de base de nombreux objets excel : .value qui renvoie la valeur de la cellule (valeur numrique ou texte).

Le langage de programmation diffre des quations mathmatiques ! vous voyez ici une ligne du type 2= 2/2 ! En fait, cette ligne indique VBE de remplacer la valeur de la cellule active par cette mme valeur divise par 2. Cela vite de rajouter une variable intermdiaire. On pourrait tout fait crire : variable1=activecell.value Variable2=Variable1/2 activeCell.value=Variable2

Vous pouvez tester cette macro dans le classeur exemple depuis la page condition.

Les plages de cellules : l'objet range


Dans la macro prcdente, nous devons cliquer sur le bouton lanant la macro aprs avoir slectionn chaque cellule. C'est bien mais trs souvent une macro doit tre applique une plage de cellule, voire la cellule entire. Les plages de cellules sont manipules en VBA par l'objet 'range' que l'on pourrait traduire par 'tendue'. Les pages cellules, adresses, et slectionner vous donneront plus d'infos sur cette notion, pas vidente au dmarrage. Mis part l'exemple ci dessus avec ActiveCell, une cellule ne peut pas tre manipule directement par son adresse. Autrement dit, on ne peut pas crire cell(A5).value On fait rfrence une cellule par son range :

Range("A5").Value renvoie la valeur de la cellule Range("A5").Address renvoie... son adresse= A5, info que l'on pourra rutiliser par la suite dans certains cas.

http://www.excelabo.net/pasapas/vba-bases (17 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Pour faire rfrence une plage continue de cellules, on indique la cellule situe la plus en haut gauche et celle la plus en bas droite, spares par :
r

Range("A5:B30").Select slectionne toutes les cellules du rectangle A5-A30-B30-B5

Pour slectionner toute une ligne on utilise : Range("2:2").Select et pour une colonne : Range("A:A").Select

Il peut tre utile de prciser sur quelle feuille on se situe : Sheets("condition").Range("B3").Interior.ColorIndex=24 Et mme quand plusieurs classeurs sont ouverts, il peut tre ncessaire de prciser le classeur : Workbooks("fc-vbapasapas.xls").Sheets("condition").Cells.ClearContents "Cells" est un mot rserv de VBA, il fait rfrence l'ensemble des cellules de la feuille. ClearContents vide les cellules de leur contenu mais pas du format des cellules. Workbooks fait rfrence la collection des classeurs Excel. Fc-vbapasapas.xls est un lment de cette collection. De mme Sheets est la collection des feuilles contenues dans un classeur. Sheets regroupe toutes les feuilles, quelque soit leur nature : chiffrier (ou WorkSheet) ou feuille graphique. Range est en fait une collection d'lments cellules. On peut donc manipuler un range soit globalement soit lment par lment en utilisant une boucle.

Les boucles
La macro prcdente est intressante mais bien souvent, il est ncessaire d'appliquer une macro non pas sur un lment slectionn l'avance mais sur l'ensemble des cellules d'une plage. Nous allons donc modifier cette macro pour qu'elle effectue le traitement sur l'ensemble des cellules de la plage A3:A7.

http://www.excelabo.net/pasapas/vba-bases (18 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Sub ConditionSurPlage() For Each c In Range("A3:A7") If c.Interior.ColorIndex = 5 Then c.Value = c.Value + 100 End If Next c End Sub

Commentaires :

Pour manipuler les lments de l'objet range, nous crons une variable, ici 'c' mais on pourrait l'appeller n'importe comment (sauf d'un mot rserv par Excel comme Cells, New, Item...).

Il faut faire attention insrer correctement la condition dans la boucle. Le fait d'indenter les macros permet de mieux reprer les tests de conditions (If / End If) et les boucles (For...Next). Si les deux ne sont pas imbriqus correctement, au moment du lancement de la macro, Excel vous dira "For sans Next" ou "If sans End If".

Il y a d'autres faons de faire des boucles. En comptant les lments (For i=27 To 34, Next i); en testant si une condition est remplie ou non (Do While... Loop) ou (Do Until...Loop)

A vous de jouer !
Voil, j'espre qu'avec ceci vous avez le vocabulaire ncessaires pour comprendre ce qu'est une macro et vous essayer crer les votres. Vous trouverez de trs trs nombreux exemples pour vous aider sur de nombreux sites excel, y compris celui-ci et aussi sur le forum. Lancez vous ! a parait compliqu au dbut mais il n'y a en fait que quelques notions maitriser pour pouvoir se lancer. Les
http://www.excelabo.net/pasapas/vba-bases (19 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

notions complexes viendront ensuite !

Les macros Excel


Choisissez votre prsentation
Auvergne Switch

haut

Vous devez vous identifier ou crer un compte pour crire des commentaires

L'diteur VBA

http://www.excelabo.net/pasapas/vba-bases (20 sur 21)23/01/2012 08:10:01

Les bases pour bien dbuter avec le VBA | www.excelabo.net

Nouveau
1 Nouvelle page ajoute ce mois-ci dont :

Mises jour
3 pages modifies ce mois-ci dont :
q

2 astuces

1 Nouvelle astuce

Flo Cabon - Excelabo 2000-2010

http://www.excelabo.net/pasapas/vba-bases (21 sur 21)23/01/2012 08:10:01

You might also like