Vous êtes sur la page 1sur 46

AGROPARISTECH

PROGRAMMATION EN VBA(*)
POUR EXCEL
U.F.R. DINFORMATIQUE
Christine MARTIN
Anne 2012-2013

Document inspir du cours de Juliette Dibie-Barthelemy (Janvier 2008)


* Visual Basic pour Applications

Introduction

Le VBA (Visual Basic pour Application) est un langage de programmation permettant dutiliser du
code dont la syntaxe est proche du langage Visual Basic pour excuter les nombreuses
fonctionnalits notamment des applications Microsoft Office et par exemple de lApplication EXCEL
que vous tes amens utiliser frquemment dans votre spcialit.

Crer des programmes en VBA permet notamment dautomatiser des tches rptitives ralises
sous
EXCEL grce

la
possibilit
de
manipuler
les
objets
propres

Excel (Classeurs, feuilles, cellules, ), de stocker de linformation, deffectuer des instructions sous
conditions et, ventuellement, plusieurs reprises en fonction dun ou plusieurs critres.
Le langage VBA permet galement de contrler la quasi-totalit de l'IHM1 notamment dExcel, ce qui
inclut la possibilit de manipuler les fonctionnalits de l'interface utilisateur comme les menus, les
barres d'outils et le fait de pouvoir personnaliser les botes de dialogue et les formulaires utilisateurs.
Cela permet notamment de rendre une application dveloppe sous EXCEL plus conviviale.
Il permet enfin de contrler une application partir d'une autre (par exemple, crer
automatiquement un document WORD partir de donnes sous EXCEL).

Ce document organis en sections constitue une synthse des possibilits offertes par la
programmation en VBA sous Excel.

Interface Homme-Machine : c'est--dire tous les mdias qui permettent un utilisateur dinteragir avec la
machine

Excel VBA AgroParisTech Christine Martin

Page 1

Table des matires


1

Prise en main de lenvironnement de dveloppement ............................................................ 5


1.1
1.1.1

Enregistrer une macro ..................................................................................................................... 5

1.1.2

Excuter une macro ........................................................................................................................ 7

1.1.3

Supprimer une macro ...................................................................................................................... 8

1.2

Lenvironnement de dveloppement Visual Basic Editor ................................................ 8

1.2.1

Accs lenvironnement Visual Basic Editor (VBE) ......................................................................... 8

1.2.2

Fentre de lecture, criture et modification dun programme ....................................................... 9

1.2.3

Affichage et modification des proprits dun module de code ................................................... 11

1.2.4

Sauvegarde .................................................................................................................................... 12

1.2.5

Retrouver un programme enregistr : lexplorateur de projets ................................................... 12

1.2.6

Excuter directement dans VBE une procdure sans argument ................................................... 13

1.2.7

Fermeture de lenvironnement VBE.............................................................................................. 14

Accs aux fonctionnalits dExcel depuis VBA ...................................................................... 14


2.1

Les objets ................................................................................................................... 14

2.2

Les collections ............................................................................................................ 14

2.3

Laccs aux objets ....................................................................................................... 14

2.4

Les proprits des objets ............................................................................................ 15

2.5

Les mthodes des objets............................................................................................. 16

2.5.1

Utiliser les fonctions intgres dExcel .......................................................................................... 16

2.6

Les vnements ......................................................................................................... 16

2.7

Lexplorateur dobjets ................................................................................................ 17

2.7.1

Ouverture de lexplorateur dobjets ............................................................................................. 17

2.7.2

Utilisation de lexplorateur dobjets .............................................................................................. 17

2.8
3

Premire macros utilisation de lenregistreur de macros ............................................ 5

Comment obtenir de laide : quelques astuces ............................................................ 19

Vers la programmation avance ......................................................................................... 20

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 2

3.1

Stocker de linformation : les variables et les constantes ............................................. 20

3.2

Dfinir ses propres fonctions ...................................................................................... 23

3.2.1

Dfinition ....................................................................................................................................... 23

3.2.2

Utilisation sous Excel ..................................................................................................................... 24

3.2.3

Utilisation dans un programme VBA ............................................................................................. 25

3.3

Prendre en compte des conditions .............................................................................. 25

3.4

Rpter les mmes actions ......................................................................................... 26

3.5

Rgles de bonne conduite en programmation ............................................................. 28

Tutoriel : Les vnements

.................................................................................................. 30

Tutoriel : Les entres et sorties standards


Tutoriel : Les Objets UserForm

............................................................................. 32

........................................................................................... 37

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 3

Table des figures


Figure 1 : Fentre de paramtrage et lancement de l'enregistrement d'une macro ............................. 5
Figure 2 : Fentre d'arrt de l'enregistrement d'une macro (Excel 2003) .............................................. 6
Figure 3 : Fentre d'excution d'une macro ........................................................................................... 7
Figure 4 : Barre d'Outils Visual Basic (licne entoure permet de lancer VBE) ..................................... 8
Figure 5 : Fentre principale de Visual Basic Editor (VBE) ...................................................................... 9
Figure 6 : Fentre d'affichage d'un module de code............................................................................... 9
Figure 7 : Rsultat de l'excution de la macro Macro1 ......................................................................... 10
Figure 8 : Fentre de proprit d'un module de code .......................................................................... 12
Figure 9 : Fentre "Explorateur de projets" dans VBE .......................................................................... 12
Figure 10 : Fentre ouverte par clic droit sur l'explorateur de projets dans VBE ................................. 13
Figure 11 : Fentre de l'explorateur d'objets ........................................................................................ 17
Figure 12 : Rsultat de la recherche de fonctions intgres d'Excel..................................................... 19
Figure 13 : Fentre d'erreur de compilation ......................................................................................... 21

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 4

1 Prise en main de lenvironnement de dveloppement


1.1 Premires macros utilisation de lenregistreur de macros
Un programme crit en VBA est souvent appel, par abus de langage, une macro.
Dans un premier temps, une macro peut tre cre en utilisant l'enregistreur de macros, qui ne
ncessite aucune connaissance du langage VBA.
Lenregistreur de macro est un outil accessible notamment sous Excel et permettant dcrire du code
VBA partir doprations effectues manuellement dans lapplication.
A limage dune camra, toute la squence d'actions effectues entre le dbut et la fin de
l'enregistrement est traduite en instructions VBA et stocke dans une procdure VBA sans
arguments, qui pourra tre excute nouveau l'identique.
Une procdure est un ensemble dinstructions VBA identifis par un nom et ne renvoyant pas de
valeur.
L'enregistreur de macro sous Excel (Outils / Macro / Nouvelle Macro) permet donc de gnrer
facilement du code VBA et de dcouvrir les mots cls et syntaxes employer pour crire ensuite
directement ses propres programmes.
1.1.1

Enregistrer une macro

1) Paramtrage de la macro
Activer la commande Outils Macro Nouvelle macro.

Figure 1 : Fentre de paramtrage et lancement de l'enregistrement d'une macro

La fentre prsente en

Figure 1 apparat lcran et vous permet de paramtrer la macro qui va tre cre c'est--dire :
de prciser son nom dans le champ : Nom de la macro,
de prciser quel classeur elle sera rattache par lintermdiaire du menu droulant Enregistrer
la macro dans,
dy associer si besoin un raccourci clavier afin de faciliter son lancement futur : Touche de
raccourci
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 5

et enfin dy associer une note explicative Description.

Le menu droulant Enregistrer la macro dans vous propose trois options :

Ce classeur,
Nouveau classeur,
Classeur de macros personnelles.

En slectionnant, l'option Classeur de macros personnelles, la macro est enregistre dans un


classeur spcial appel PERSO.XLS. Ce classeur est ouvert automatiquement lors du lancement
dEXCEL et ses macros sont disponibles dans tous les classeurs ouverts. La commande FENETRE AFFICHER
permet dafficher ce classeur et la commande FENETRE MASQUER de le masquer.
Loption Nouveau classeur permet denregistrer la macro dans un nouveau classeur.
Enfin, loption Ce classeur permet denregistrer la macro dans le classeur actif.

2) Lancement de lenregistrement
Une fois votre macro paramtre suivant vos besoins, Cliquer sur le bouton OK.
Lenregistrement est alors lanc et partir de l tout les actions que vous fates dans Excel sont
enregistres, traduites en code VBA puis sauvegardes dans une procdure portant le nom que vous
avez spcifi ltape prcdente. Par exemple Macro1 comme indiqu dans la
Figure 1.
La barre d'outils ARRET DE L'ENREGISTREMENT apparat, ce qui marque le dbut de l'enregistrement.

Figure 2 : Fentre d'arrt de l'enregistrement d'une macro (Excel 2003)

Cette fentre permet galement de dterminer le mode suivant lequel les cellules seront
considres dans le programme final.
Il existe en effet deux moyens de voir les choses :

Soit on a une vision absolue : par exemple on considre la cellule A1 qui a une position
dtermine dans une page de calcul Excel
Soit on a une vision relative : on veut par exemple quune action soit faite toujours 2 cellules
en dessous de celle slectionne ce moment l.

Le bouton de droite de la fentre darrt de lenregistrement (Figure 2) permet de faire un choix


entre ces deux modes. Ce choix dpend bien entendu des proprits attendues de la macro que lon
est en train denregistrer.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 6

Attention : Vrifier toujours le mode dans lequel vous vous trouvez au lancement de
lenregistrement et avant deffectuer la moindre action sans quoi votre macro pourrait avoir un
comportement diffrent de celui que vous attendiez car non enregistre dans le mode adquate.
Par ailleurs, les cellules dans une macro sont identifies laide dune lettre (colonne) suivie dun
chiffre (ligne), comme par exemple la cellule A1. Aussi et afin de faciliter la lecture du code VBA
gnr, il est prfrable de choisir la mme identification des cellules dans le classeur dans lequel est
enregistr la macro. Si tel nest pas le cas, activer la commande OUTILS OPTIONS, cliquer sur l'onglet
GENERAL et dcocher la case STYLE DE REFERENCE L1C1.

3) Arrt de l'enregistrement
Une fois que vous avez ralis toutes les actions que vous souhaitiez enregistrer pour les rejouer
ultrieurement, larrt de lenregistrement se fait en cliquant sur le carr bleu de la barre d'outils
ARRET DE L'ENREGISTREMENT (Figure 2).
Attention : noubliez pas darrter lenregistrement dune macro ! Dans le cas contraire vos actions
continueraient tre enregistres et vous ne seriez pas en mesure de relancer cette macro.
Lenregistreur de macro permet de manire rapide et simple de crer des macros. Cependant une
macro ainsi cre ne sexcutera que sur un ensemble de cellules donnes et possdera des
fonctionnalits limites. Pour pouvoir crer des macros propres ses besoins, efficaces et
interactives, la connaissance du langage VBA est ncessaire et il sera prsent dans les sections
suivantes.
1.1.2 Excuter une macro
Pour excuter une macro dj enregistre, donc connue du systme, il faut :
1) Activer la commande OUTILS MACRO/MACROS.
La fentre prsente en Figure 3 souvre.

Figure 3 : Fentre d'excution d'une macro

2) Slectionner dans la liste la macro dsire et cliquer sur le bouton EXECUTER.


Dans lexemple prsent en Figure 3, seule la macro nomme Macro1 est disponible.
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 7

Le menu droulant Macros dans vous permet de faire un tri dans les macros disponibles et de
nafficher par exemple que celles enregistres dans votre classeur personnel.
1.1.3 Supprimer une macro
Si vous devez supprimer une macro dj cre, suivez les instructions suivantes :
1) Activer la commande Outils Macro macros.
La fentre prsente en Figure 3 souvre.
2) Slectionner dans la liste la macro dsire et cliquer sur le bouton SUPPRIMER.

1.2 Lenvironnement de dveloppement Visual Basic Editor


Comme indiqu prcdemment, lenregistreur de macros permet de crer rapidement des
programmes VBA simples. Pour aller plus loin, il faut connatre le langage VBA et apprendre crire
soi-mme les instructions qui correspondent aux actions que lon souhaite faire raliser par notre
programme.
Pour cela on dispose sous Excel dun environnement spcifique appel Visual Basic Editor qui
sexcute dans une fentre diffrente de celle dEXCEL.
Cet environnement permet de modifier des codes existants (produits par exemple par lenregistreur
de macros), de crer de nouveaux programmes from scratch (ex nihilo, partir de rien),
dorganiser ses programmes suivants leurs rles dans des modules, de crer des procdures et
fonctions (ensemble dinstructions identifies par un nom unique et renvoyant une valeur, qui
pourront tre communes diffrents programmes ou utilisables directement dans les feuilles de
calcul, (cf. section 3.2)
1.2.1

Accs lenvironnement Visual Basic Editor (VBE)

Lenvironnement souvre :

Soit, en activant la commande : Outils / Macro / Visual Basic Editor


Soit, en activant la commande AFFICHAGE BARRE D'OUTILS VISUAL BASIC et en cliquant sur l'objet
VISUAL BASIC EDITOR (cf. Figure 4).

Figure 4 : Barre d'Outils Visual Basic (licne entoure permet de lancer VBE)

Dans les deux cas de figure, la fentre prsente en Figure 5 souvre et vous donne accs de
nouvelles fonctionnalits.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 8

Figure 5 : Fentre principale de Visual Basic Editor (VBE)

Cette fentre se dcompose notamment en trois parties :

affichage, criture et modification des fichiers de programmes disponibles ou modules de


codes
affichage des proprits du module de code slectionn
explorateur de lensemble des modules de codes

Les particularits de ces zones sont dtailles dans les sections suivantes.
1.2.2 Fentre de lecture, criture et modification dun programme
Toutes les instructions VBA sont enregistres dans un module de code qui est affich dans la fentre
principale de VBE droite (cf. Figure 5 et Figure 6).

Figure 6 : Fentre d'affichage d'un module de code

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 9

Cette fentre se comporte comme un diteur de texte classique avec quelques fonctionnalits
supplmentaires telles que la coloration du texte en fonction de la nature de ce qui est crit :

Les mots cls du langage sont affichs en bleu


o par exemple : Sub (mot cl de dbut de procdure), True (constante boolenne),
Les commentaires (texte non interprt, utile pour comprendre ce que fait le programme)
sont affichs en vert
o Par exemple : Macro enregistre le .

Un programme est une suite dinstructions. Une instruction excute une tche prcise. Elle est
gnralement crite sur une seule ligne.
Exemple :
Range("A1").Select
Cette instruction permet de slectionner la cellule nomme A1 dans le classeur courant.
Lenregistreur de macro ne gnre que des procdures sans arguments. Une procdure commence
par le mot cl Sub suivi du nom de la procdure et dune liste darguments entre parenthses, qui
peut tre vide. Elle se termine par le mot cl End Sub. Une procdure a la syntaxe suivante :
Sub NomProcdure([argument_1,..., argument_n])
Instructions
...
End Sub

Remarque : Les crochets [ ] signifient que les arguments sont facultatifs.

Par exemple, dans la Figure 6, la fentre daffichage de modules de codes affiche le module nomm
Module1 (cf. bandeau de la fentre). Ce module contient une seule macro nomme Macro1 (terme
suivant le mot cl Sub).
Dans cette macro, il y a 5 lignes de commentaires (commenant par un ) puis 6 instructions.
L'instruction Range("A1").Select slectionne (Select) une cellule (Range) dsigne par sa ligne (1) et
sa colonne (A). L'instruction ActiveCell.FormulaR1C1 affecte une formule la cellule active
(ActiveCell). L'instruction Selection.Font permet dappliquer un format de police (Font.Bold ou
Font.Italic) la cellule slectionne (Selection).
Lorsque cette macro est lance on observe donc dans Excel le rsultat suivant :

Figure 7 : Rsultat de l'excution de la macro Macro1

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 10

Les macros produites par lintermdiaire de lenregistreur de macro sont galement stockes dans
des modules de codes.
Un module de code peut contenir plusieurs macros ou fonctions.

Crer une procdure directement dans VBE


Compte tenu de la syntaxe fournie ci-dessus, pour crer une nouvelle procdure directement dans
VBE (sans passer par lenregistreur de macros), il suffit de taper dans lditeur de texte de VBE, dans
un module de code et en dehors de toute autre procdure, le mot cl Sub suivi du nom que vous
voulez attribuer votre macro, par exemple PrintValue, puis des parenthses avec lintrieur les
paramtres associs cette procdure. Lorsque vous passez la ligne, le mot cl End Sub de fin de
procdure est automatique rajout. Vous navez alors plus qu la complter en fonctions de la tche
quelle doit remplir.

Utiliser une procdure dans une autre


Pour utiliser une procdure dans une autre, il faut utiliser le mot cl Call suivi du nom de la
procdure que lon souhaite utiliser.
Par exemple, ci-dessous, la procdure PrintValue est utilise dans la procdure TestPrintValue.
Sub PrintValue(Value As Double)
Range("B1").Value = Value
End Sub

Sub TestPrintValue()
Call PrintValue(1.22)
End Sub

Remarque : Seules les procdures sans arguments sont excutables directement par les menus ou
icnes. Toute procdure ayant des arguments devra donc tre appele dans une autre procdure
pour pouvoir tre excute. Dans lexemple prcdent et en labsence dautres procdures, la
procdure PrintValue ne pourra tre excute que par lintermdiaire de la procdure
TestPrintValue.

Supprimer une procdure directement dans VBE


Pour supprimer une procdure directement dans VBE, il vous suffit dans lditeur de slectionner le
texte correspondant depuis le mot cl Sub jusquau mot cl End Sub et de le supprimer.

1.2.3 Affichage et modification des proprits dun module de code


La fentre en bas gauche de lenvironnement VBE, permet dafficher et de modifier les proprits
du module slectionn.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 11

Figure 8 : Fentre de proprit d'un module de code

Dans la Figure 8, on peut constater quun module est uniquement caractris par un nom que lon
peut modifier par simple saisie dans cas se situant droite du mot cl (Name).
1.2.4 Sauvegarde
Pour que les programmes produits soient conservs, il faut les sauvegarder laide de la commande :
FICHIER/ENREGISTRER ou le raccourci clavier CTRL+S.
1.2.5 Retrouver un programme enregistr : lexplorateur de projets
A chaque classeur EXCEL ouvert est associ un projet VBA.
L'explorateur de projets (partie en haut gauche de la fentre VBE (cf. Figure 5) affiche une liste
hirarchise des diffrents projets VBA associs aux classeurs EXCEL ouverts (cf. Figure 9).
Un projet VBA associ un classeur regroupe les lments du classeur, comme ses feuilles de calcul,
les procdures et les fonctions associes ce classeur et stockes dans un ou plusieurs modules de
code.

Figure 9 : Fentre "Explorateur de projets" dans VBE

Par exemple, le projet VBA associ au classeur TEST-MACRO.XLS visible en Figure 9 est compos de
deux dossiers :

le dossier MICROSOFT EXCEL OBJETS qui contient les lments attachs au projet : le classeur TESTMACRO.XLS (THISWORKBOOK) et ses feuilles de calcul FEUIL1, FEUIL2 et FEUIL3 ;

le dossier MODULES qui contient les modules de code du projet : le module MODULE1 qui contient
la macro MACRO1.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 12

Lexplorateur de projets permet, laide du clic droit de la souris, douvrir un module de code (option
CODE), dinsrer un nouveau module de code (option INSERTION) ou den supprimer un (option
SUPPRIMER <NOMMODULE>).

Figure 10 : Fentre ouverte par clic droit sur l'explorateur de projets dans VBE

Louverture dun module de code peut galement se faire par double-click sur celui-ci dans
lexplorateur de projets.
La commande INSERTION MODULE permet galement dinsrer un nouveau module de code.
On peut insrer autant de modules de code quon le dsire en fonction des besoins recenss. Dans la
pratique, on cherche regrouper dans un mme module tous les lments de programmes qui se
rapportent un ensemble de fonctionnalits donn. Par exemple, si lon cre des fonctions de calcul
mathmatiques, on les regroupera dans un mme module que lon pourrait nommer Maths.
1.2.6 Excuter directement dans VBE une procdure sans argument
Attention : Seules les procdures sans argument peuvent tre excutes directement !
Les procdures avec arguments et les fonctions ne peuvent tre excutes que par dautres
procdures ou fonctions et n'apparaissent pas dans la liste des macros de la bote de dialogue MACRO
(commande OUTILS MACRO MACROS de EXCEL).
Pour excuter une procdure sans argument, positionner le curseur dessus et activer la commande
EXECUTION EXECUTER SUB/USERFORM ou cliquer sur licne
Pour arrter l'excution dune procdure sans argument si une erreur survient, utiliser la
commande EXECUTION REINITIALISER ou cliquer sur licne

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 13

1.2.7 Fermeture de lenvironnement VBE


La commande Fichier/Fermer et retourner Microsoft Excel permet de fermer VBE et de retourner
dans Excel.

2 Accs aux fonctionnalits dExcel depuis VBA


Le langage de programmation VBA dpend de lapplication MICROSOFT OFFICE laquelle il est attach
(WORD, EXCEL, ACCESS...).
Chaque application de MICROSOFT OFFICE possde un ensemble dobjets clairement dfinis, organiss
en fonction des relations qui les unissent. Cette organisation sappelle le modle objet de
lapplication. Comme nous le dtaillerons dans les sections suivantes, dans EXCEL, les objets
manipuls sont des classeurs, des feuilles de calcul, des plages, des cellules...

2.1 Les objets


VBA est un langage de programmation oriente objet attach une application. Tout est objet. En
informatique, un objet est une entit nomme possdant des caractres propres (des proprits) et
actions propres (des mthodes).
Exemple dobjets :
EXCEL est un objet Application ;
un classeur est un objet Workbook ;
une feuille de calcul est un objet Worksheet ;
une plage de cellules (qui peut se limiter une cellule) est un objet Range.

2.2 Les collections


De nombreux objets appartiennent une collection d'objets, la collection tant elle-mme un objet.
Exemple de collections :

Dans lobjet Application, il existe une collection Workbooks qui contient tous les objets
Workbook ouverts.

Chaque objet Workbook comporte une collection Worksheets qui contient tous les objets
Worksheet de ce classeur.

Chaque objet Worksheet contient des objets Range.

2.3 Laccs aux objets


VBA permet de faire rfrence un objet de diffrentes faons.
Par exemple, pour faire rfrence une plage de cellules donne, il faut utiliser lobjet Range.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 14

Exemple : Range("A1:B4") permet de faire rfrence la plage de cellules A1:B4 et renvoie un objet
Range.
Pour faire rfrence un objet dans une collection, on peut soit utiliser le numro de sa position
dans la collection, soit son nom.
Exemple :

Worksheets(1) permet de faire rfrence la premire feuille de calcul du classeur actif et


renvoie un objet Worksheet.
Workbooks("Classeur1.xls").Worksheets("Feuil1") permet de faire rfrence la feuille de
calcul de nom Feuil1 du classeur de nom Classeur1.xls et renvoie un objet Worksheet.
Workbooks("Anne2006").Sheets("Mars").Range("B2") dsigne la cellule B2 de la feuille
Mars du classeur Anne2006
Sheets("Mars").Range("B2") du classeur actif (ouvert et affiche) Range("B2") de la feuille
active

Remarque : La notation Workbooks("Classeur1.xls").Worksheets("Feuil1") est une notation


raccourcie pour Application.Workbooks("Classeur1.xls"). Worksheets("Feuil1"). Lobjet Application
peut, en effet, en gnral tre omis.
Les rfrences aux cellules peuvent tre :

2.4

absolues : Range("B2") dsigne la cellule B2 de la feuille active


relatives la cellule d'origine : ActiveCell.Offset (2,-1) dsigne la cellule situe 2 lignes plus
bas (- pour plus haut) et une colonne gauche (+ pour droite) de la cellule active.

Les proprits des objets

Chaque objet est dfini par un ensemble de proprits, qui reprsentent les caractristiques de
lobjet.
Pour faire rfrence une proprit dun objet donn, il faut utiliser la syntaxe Objet.Proprit.
Exemple :

La proprit Value de lobjet Range dsigne la valeur de lobjet spcifi.


Range("A1").Value = "AgroParisTech" affecte la valeur AgroParisTech la cellule A1.

La proprit ActiveCell de lobjet Application renvoie un objet Range, qui fait rfrence la
cellule active de la feuille de calcul.
ActiveCell.Font.Bold = True permet daffecter le style gras la cellule slectionne (Font est une
proprit de lobjet Range qui retourne un objet Font contenant les attributs de police (taille,
couleur, style, ...) de lobjet Range. Bold est une proprit boolenne de lobjet Font qui
correspond au style gras).

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 15

La proprit Selection de lobjet Application renvoie lobjet slectionn dans la fentre


active. Le type de l'objet renvoy dpend de la slection en cours.

Remarque : La proprit ActiveCell ne permet de faire rfrence qu une seule cellule, alors que la
proprit Selection permet de faire rfrence une plage de cellules.

2.5 Les mthodes des objets


Les mthodes reprsentent les actions qui peuvent tre effectues par un objet.
Pour faire rfrence une mthode dun objet donn, il faut utiliser la syntaxe Objet.Mthode
analogue la syntaxe daccs aux proprits des objets.
Exemple :
La mthode Select de lobjet Range permet de slectionner une cellule ou une plage de cellules.
Range("A1").Select slectionne la cellule A1.
2.5.1 Utiliser les fonctions intgres dExcel
Toutes les fonctions intgres dExcel utilisable depuis VBA sont en fait des mthodes dObjets
particuliers pour VBA. Pour utiliser une fonction intgre dEXCEL dans VBA, il faut prciser VBA o
peut tre trouve cette fonction. Pour cela, il faut donc comme indiqu prcdemment faire
prcder le nom de la fonction de lobjet sur lequel elle va sappliquer.
Par exemple, lobjet WorkSheetFunction permet daccder de nombreuses fonctions courantes
telles que la fonction Min. Le code correspondant est donc :
WorkSheetFunction.Min()

Attention : Toutes les fonctions intgres dEXCEL ne sont pas disponibles dans VBA ! Nanmoins, il
est fortement conseill dutiliser une fonction intgre dEXCEL pour faire un calcul donn, si cette
dernire existe, plutt que de dfinir sa propre fonction, qui serait moins efficace en terme de temps
de calcul.

2.6 Les vnements


Un vnement est une action reconnue par un objet. La reconnaissance dun vnement par un
objet permet de dclencher lexcution dune procdure lorsque cet vnement survient. Un clic
souris ou la frappe dune touche au clavier sont des exemples dvnements qui peuvent tre
interprts par du code VBA.
Pour quun objet rponde un vnement, il faut crire du code VBA dans la procdure associe
lvnement considr. Ces procdures sont stockes dans les modules de codes associs aux objets
concerns.
Cf. Tutoriel : Gestion des vnements en VBA.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 16

2.7 Lexplorateur dobjets


Compte tenu du nombre important dobjets, proprits, mthodes et vnements disponibles pour
Excel en VBA, on ne connat par cur dans la pratique quun petit sous ensemble. Il faut en revanche
savoir retrouver les lments dont on a besoin lorsquon dveloppe un programme.
Pour cela, lexplorateur dobjets recense lensemble des objets disponible dans VBA, leurs proprits,
leurs mthodes et les vnements qui leur sont associs.
On appelle membres dun objet ses proprits, mthodes et vnements associs.
2.7.1 Ouverture de lexplorateur dobjets
Pour ouvrir lexplorateur dobjets, aller dans lditeur de Visual Basic et activer la commande
AFFICHAGE EXPLORATEUR D'OBJETS.

Figure 11 : Fentre de l'explorateur d'objets

La fentre prsente en Figure 11 : Fentre de l'explorateur d'objetsFigure 11 saffiche.

2.7.2

Utilisation de lexplorateur dobjets

Slection du champ de recherche


Le premier menu droulant (cf. Figure 11) en haut gauche (zone PROJET/BIBLIOTHEQUE) permet de
slectionner le projet ou la bibliothque dobjets de son choix pour restreindre le champ des
recherches. Vous pouvez par exemple ne slectionner que la bibliothque EXCEL afin de ne

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 17

rechercher que dans les fonctionnalits spcifiques Excel et non dans celles communes toutes les
applications VBA par exemple.

Recherche par mots cls


La zone de saisie qui se situe juste en dessous (RECHERCHER TEXTE) permet de rechercher un lment
(objet, proprit, fonction, vnement) dans lespace dfini dans le menu prcdent. Taper llment
recherch et appuyer sur la touche ENTREE. Le rsultat de la recherche saffiche dans la zone
RESULTATS DE LA RECHERCHE qui se situe dans la partie basse de la fentre.

Affichage et lecture des rsultats


Double cliquer sur lobjet voulu dans la colonne CLASS (le membre dans la colonne MEMBRE) de la
zone RESULTATS DE LA RECHERCHE, pour le voir apparatre dans la zone CLASSES (la zone MEMBRES) situe
en dessous.
La zone CLASSES affiche lensemble des objets disponibles dans la bibliothque slectionne.
La zone MEMBRES contient lensemble des membres de lobjet slectionn dans la zone CLASSES. Les
membres dun objet sont par dfaut classs par ordre alphabtique. Pour les classer par catgorie
(proprits, mthodes et vnements), cliquer sur le bouton droit de la souris dans la zone MEMBRES
et choisir loption MEMBRES DU GROUPE.
Des icnes permettent de distinguer les objets, les proprits, les mthodes et les vnements.
icne dsignant un objet
icne dsignant une proprit
icne dsignant une mthode
icne dsignant un vnement

La zone DETAILS situe en dessous de la zone CLASSES affiche un bref descriptif de llment
slectionn dans la zone CLASSES ou dans la zone MEMBRES.
Pour obtenir de laide sur un objet ou un membre, slectionner cet objet dans la zone CLASSES ou ce
membre dans la zone MEMBRES et cliquer sur la touche F1.
Pour connatre, par exemple les fonctions intgres dEXCEL lies lobjet Feuille de calcul et
disponibles dans VBA (cf. section 2.5.1), activer la commande AFFICHAGE EXPLORATEUR D'OBJETS dans
lditeur de Visual Basic et rechercher parmi les membres de lobjet WorkSheetFunction.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 18

Figure 12 : Rsultat de la recherche de fonctions intgres d'Excel

La Figure 12 prsente une vue des rsultats propos par lexplorateur dobjets pour cette recherche.

2.8 Comment obtenir de laide : quelques astuces


1)

Utiliser lenregistreur de macro pour dcouvrir les instructions VBA ncessaires pour accomplir
une opration donne.
Une bonne mthode pour apprendre se servir de VBA et dcouvrir de nouvelles instructions
est de :

tout d'abord enregistrer la squence des actions dont on souhaite connatre les instructions
correspondantes (cf. section 1.1.1)
puis excuter pas pas (touche F8) dans l'outil VBA afin de savoir les actions effectues par
chacune des lignes de code et de sen servir par exemple pour crire, modifier ou complter
un programme.

2)

Utiliser lexplorateur dobjets pour dcouvrir les objets disponibles dans VBA et les proprits,
mthodes et vnements qui leur sont associs.

3)

Utiliser la touche F1 pour obtenir de laide sur un objet, une proprit, une mthode ou un
vnement, dans un module de code ou dans lexplorateur dobjets.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 19

Vers la programmation avance

Cette section a pour but de prsenter ou rappeler suivant les cas les lments du langage VBA qui
sont communs toutes les applications MICROSOFT OFFICE voire dans certains cas tout langage de
programmation.

3.1 Stocker de linformation : les variables et les constantes


La dclaration des variables
Une variable permet de stocker une valeur pouvant tre modifie au cours de lexcution dun
programme.
Le mot cl Dim permet de dclarer explicitement une variable.
Syntaxe :
Dim NomVariable

o NomVariable est une suite de caractres forms avec des lettres, des chiffres et le caractre
soulign _.
Le premier caractre est obligatoirement une lettre. Les minuscules sont distingues des majuscules.
En VBA la dclaration des variables nest, par dfaut, pas obligatoire. Nanmoins, il est prfrable de
forcer la dclaration explicite des variables notamment pour faciliter le contrle du comportement
du programme et traquer les erreurs de frappe trs frquentes en programmation.
Exemple :
Sub MacroTestVariable()
valeur = Range("A1").Value
Range("B1").Value = valleur
End Sub

En effet, dans lexemple prcdent, quelle que soit la valeur de la cellule A1, cette macro ncrira rien
dans la cellule B1. Pourtant VBA ne dtecte aucune erreur dans le code. Il considre quil y a deux
variables distinctes valeur et valleur.
Il est donc prfrable de forcer la dclaration explicite des variables en VBA. Pour ce faire, il suffit de
placer linstruction Option Explicit en haut (en premire ligne) des modules de code avant toutes
procdures et toutes fonctions.
Si maintenant on reprend lexemple prcdent en forant la dclaration des variables :
Option Explicit
Sub MacroTestVariable()
valeur = Range("A1").Value
Range("B1").Value = valleur
End Sub
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 20

Maintenant, VBA dtecte une erreur la compilation car la variable valleur nest pas dfinie (cf.
Figure 13).

Figure 13 : Fentre d'erreur de compilation

Pour ajouter automatiquement linstruction Option Explicit tous les nouveaux modules de code
crs, activer la commande OUTILS OPTIONS..., cliquer sur longlet EDITEUR et cocher la case
DECLARATION DES VARIABLES OBLIGATOIRE.

Le type des variables


La plupart des langages de programmation imposent de dterminer le type de donnes qui peut tre
stocke dans une variable lors de sa dclaration. En VBA, ce nest pas obligatoire.
Par dfaut, une variable non type est du type Variant, qui permet de stocker nimporte quel type de
donnes.
Dans un souci defficacit du code, il est prfrable de typer ses variables. Une variable de type
Variant prend, en effet, plus de mmoire que nimporte quel autre type et utilise plus de ressource
systme pour son traitement (identification du type effectif de la variable et ventuellement
conversion).
La dclaration du type dune variable se fait comme suit :
Dim NomVariable As Type o Type dtermine le type de la valeur qui peut tre stocke dans la
variable.
Les diffrents types de donnes disponibles en VBA sont les suivants (cf. aide en ligne de VBA,
commande ? SOMMAIRE ET INDEX, onglet SOMMAIRE, option REFERENCE DU LANGAGE VISUAL BASIC) :

Byte, Integer et Long pour les entiers ;


Single, Double et Currency pour les rels ;
Boolean pour les boolens (True ou False) ;
String pour les chanes de caractres ;
Date pour les dates ;
Object pour faire rfrence un objet ;
Variant pour nimporte quel type.

Exemple :
Dim Nom As String
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 21

Nom = "Jean " & "Dupond"

& : concatne les chanes de caractres

Dim Age As Byte


Age = 23
Dim MaPlage As Object
variable de type Object
Set MaPlage = Range("A1:B5") Set : pour affecter un objet

Remarque sur linitialisation des variables : Selon leur type, les variables ne sont pas initialises avec
la mme valeur :

les variables de type Byte, Integer ou Long sont initialises 0 ;


les variables de type Single, Double ou Currency sont initialises 0 ;
les variables de type Boolean sont initialises False ;
les variables de type String sont initialises "" (la chane vide) ;
les variables de type Date sont initialises 00:00:00 ;
les variables de type Variant sont initialises "" (la chane vide) (il en est de mme pour les
variables dclares implicitement).

La porte des variables


La porte dune variable dfinit quelles procdures ou fonctions peuvent utiliser cette variable.
Les variables dclares lintrieur dune procdure ou dune fonction ne sont accessibles qu
lintrieur de cette procdure ou de cette fonction.
Exemple :
Sub InitialiseAge()
Dim Age As Integer
Age = 25
End Sub

La variable Age nest accessible que dans la procdure InitialiseAge.


Pour quune variable soit accessible lensemble des procdures et des fonctions dun module, elle
doit tre dclare au dbut du module lextrieur de toute procdure et de toute fonction.
Pour quune variable soit accessible lensemble des procdures et des fonctions dun projet, elle
doit tre dclare au dbut dun module lextrieur de toute procdure et de toute fonction,
laide du mot cl Public.
Exemple :
Public Age As Integer
Sub ModifieAge()
Age = 27
End Sub

La dclaration des constantes


Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 22

Une constante permet dattribuer un nom une valeur fixe. La dclaration dune constante se fait
laide du mot cl Const comme suit :
Const NomConstante [As Type] = valeur

Une constante a la mme porte quune variable.


Exemple :
Public Const Pi As Single = 3.14159265358979

Linstruction With...End With


Linstruction With...End With est utile lorsque les rfrences un objet sont rptes plusieurs fois
dans une petite section de code.
Exemple :
Sub ModifiePolice(MaPlage As Range)
MaPlage.Select
Selection.Font.Size = 12
Selection.Font.ColorIndex = 3
Selection.Font.Italic = True
End Sub

La macro ModifiePolice peut tre rcrite plus simplement comme suit :


Sub ModifiePolice(MaPlage As Range)
MaPlage.Select
With Selection.Font
.Size = 12
.ColorIndex = 3
.Italic = True
End With
End Sub

Tout ce qui commence par un point dans un bloc dinstructions With...End With est une proprit ou
une mthode de lobjet qui suit linstruction With.

3.2 Dfinir ses propres fonctions


VBA offre la possibilit de crer ses propres fonctions, qui peuvent tre utilises dans EXCEL comme
nimporte quelle fonction intgre.
3.2.1 Dfinition
Une fonction est une suite d'instructions qui retourne une valeur. Elle commence par le mot cl
Function suivi du nom de la fonction et dune liste darguments entre parenthses, qui peut tre
vide. Elle se termine par le mot cl End Function.
Une fonction a donc la syntaxe suivante :
Function NomFonction([argument_1,..., argument_n])
Instructions
...
NomFonction = Expression
valeur de retour
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 23

...
End Function

Remarque : Les crochets [ ] signifient que les arguments sont facultatifs.


Attention : Dans VBA, les arguments dune fonction sont spars par des virgules, alors que dans
EXCEL ils sont spars par des points-virgules.
Une fonction indique la valeur retourner en initialisant son nom avec la valeur de retour (cf.
commentaire dans le cadre prcdent).
Par exemple, une fonction fournissant la surface dun cercle tant donn son rayon pourrait scrire
comme suit :
Function SurfaceCercle(Rayon As Double) As Double
SurfaceCercle = WorksheetFunction.Pi() * Rayon * Rayon
End Function

Remarque : On peut typer les arguments dune procdure ou dune fonction et la valeur de
retour dune fonction.
Ici, SurfaceCercle est une fonction ayant un argument : le rayon du cercle Rayon, qui est une
variable de type rel. Elle renvoie la surface du cercle de rayon Rayon, qui est de type rel. Pi est
une fonction intgre dEXCEL.
Attention : Dans VBA les rels sont crits avec des points, alors quils sont crits avec des virgules
dans EXCEL.
3.2.2 Utilisation sous Excel
Lutilisation dune fonction dfinie par lutilisateur se fait dans Excel comme toute fonction intgre.
Par exemple, pour la feuille de calcul suivante :

Si lon note dans la cellule B6, la formule =SurfaceCercle(A6), et que lon procde de manire
analogue pour les cellules suivantes, on obtient le rsultat suivant :

Lorsquon crit =SurfaceCercle(A6) dans la cellule B6 la valeur de la cellule A6 est transmise


la fonction SurfaceCercle par le biais de largument Rayon. La fonction SurfaceCercle initialise

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 24

alors son propre nom avec le rsultat calcul (WorksheetFunction.Pi() * Rayon * Rayon). Le
rsultat est ensuite retourn la cellule B6.
La fonction SurfaceCercle peut tre utilise comme nimporte quelle fonction intgre dEXCEL
(commande INSERTION FONCTION... puis CATEGORIE DE FONCTIONS : PERSONNALISEES). Par contre, elle
n'apparat pas dans la liste des macros dEXCEL (commande OUTILS MACRO MACROS).
3.2.3 Utilisation dans un programme VBA
Contrairement une procdure, une fonction retourne une valeur qui lorsquon utilise cette fonction
dans une autre fonction ou une autre procdure doit tre sauvegarde dans une variable.
Par exemple, la fonction SurfaceCercle telle que dfinie en section 3.2.1 peut tre utilise dans la
procdure MacroTestFonction dont le code est fourni ci-dessous.
Sub MacroTestFonction()
Dim valeur As Double
valeur = SurfaceCercle(1.5)
Range("B1").Value = valeur
End Sub

Ici la variable valeur reoit le rsultat de la function SurfaceCercle pour un rayon donn gal 1.5.

3.3 Prendre en compte des conditions


Frquemment dans un programme on souhaite que certaines tches (instructions) soient ralises
dans certains cas et pas den dautres. Ceci se fait en VBA par lintermdiaire des mots cls If, Then,
Else et ElseIf.
Syntaxes :
If condition Then
Instructions_si_vrai
[Else
Instructions_si_faux]
End If

If condition_1 Then
Instructions_1
ElseIf condition_2 Then
Instructions_2
ElseIf condition_3 Then
Instructions_3
...
Else
Instructions_n
End If

Dans une structure de bloc If, il faut imprativement aller la ligne aprs le Then.
Remarque : Les crochets [ ] signifient que le bloc Else est facultatif.
Lorsque le bloc If contient une ou plusieurs sections ElseIf, les diffrentes conditions sont testes
jusqu ce quune soit value vraie. Si aucune condition nest vrifie, les instructions de la section
Else, si elle existe, sont excutes. Si aucune condition nest vrifie et si la section Else nexiste pas,
le bloc If ne fait rien.
VBA offre la possibilit dutiliser les oprateurs logiques suivants : Or, Xor (ou exclusif), And, Not.
Exemple :
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 25

Sub BonjourHeureIf()
Dim heure As Integer
Dim mes As String
heure = Left(Time, 2)
'rcupration de l'heure (2 caractres
gauche de la valeur de retour de la fonction Time
If heure > 7 And heure < 12 Then
mes = "Bonjour"
ElseIf heure >= 12 And heure < 18 Then
mes = "Bon aprs-midi"
ElseIf heure >= 18 And heure < 22 Then
mes = "Bonne soire"
Else
mes = "Bonne nuit"
End If
Range("A1").Value = mes
End Sub

3.4 Rpter les mmes actions


VBA fournit deux structures pour rpter en boucle les mmes instructions : linstruction Do...Loop
et linstruction For...Next.

La boucle Do...Loop
La boucle Do...Loop est utilise lorsque lon veut que la rptition des instructions sarrte quand
une condition donne est vrifie. On distingue plusieurs syntaxes possibles.
Do While condition
Instructions
Loop

Tant que la condition est vraie, les instructions


sont excutes

Do Until condition
Instructions
Loop

Jusqu' ce que la condition devienne vraie, les


instructions sont excutes

Avec ces deux boucles, les instructions peuvent ne jamais tre excutes. Pour quelles soient
excutes au moins une fois, on peut utiliser lune des deux syntaxes suivantes :
Do
Instructions
Loop While condition

Do
Instructions
Loop Until condition

les instructions sont excutes tant que la


condition reste vraie

les instructions sont excutes jusqu ce que la


condition devienne vraie

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 26

La boucle For...Next
La boucle For...Next est utilise lorsque lon connait lavance le nombre de fois o lon veut que les
instructions soient rptes.
For compteur = nbdbut To nbfin [Step nbpas]
Instructions
instructions excutes un nombre dtermin
de fois
Next compteur

Les instructions de la boucle For...Next sont excutes un nombre dtermin de fois. Lorsque
loption Step nest pas renseigne, le compteur est incrment de 1 chaque itration et les
instructions sont excutes nbdbut - nbfin fois.
Exemple :
La procdure suivante calcule la somme des n premiers entiers :
Sub SommeEntiers()
Dim somme As Integer
Dim compteur As Integer
Dim n As Integer
n = Range("A1").Value
For compteur = 1 To n
somme = somme + compteur
Next compteur
Range("A2").Value = "Somme des " & n & " premiers entiers : "
Range("B2").Value = somme
End Sub

Le compteur peut tre, chaque itration, incrment de la valeur de nbpas.


Exemple :
For compteur = 21 To 1 Step -2
Range("A"&compteur).Value = compteur 1
Next compteur

La boucle For EachNext


La boucle For EachNext permet daccder aux objets dune collection.
Exemple :
Sub ColorieCellule()
Dim MaPlage As Range
Dim Cellule As Range
Dim i As Integer
Set MaPlage = Range(A1:B5)
For Each Cellule In MaPlage
Cellule.Interior.ColorIndex = i
i = i + 1
Next Cellule
End Sub
Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 27

Interrompre une boucle


Linstruction Exit permet de quitter un bloc DoLoop, ForNext, Function, ou Sub. Sa
syntaxe est la suivante : Exit + mot_cl_dbut_de_bloc
Exemples :
Exit Do, Exit For, Exit Function, Exit Sub,
La boucle suivante sarrte lorsque la rponse rep est n ou N :
Do
Rep = InputBox( Voulez-vous continuer ? (O/N) )
If Lcase(rep) = n Then Exit Do
Loop

La fonction InputBox permet de crer une bote de dialogue. Pour plus dinformations ce sujet
reportez-vous au Tutoriel : Les entres et sorties standards page 32.

3.5 Rgles de bonne conduite en programmation


Afin que vos programmes soient lisibles et rutilisables, il est important de :

Commenter vos codes


Donner des noms explicites vos variables, fonctions, procdures,
Regrouper les ensembles dinstructions qui rpondent une fonctionnalit donne soit :
o dans une procdure : suites dinstructions identifies par un nom unique et ne
renvoyant pas de valeur ;
o dans une fonction : une suite d'instructions identifies par un nom unique et qui
retourne une valeur.
Rutiliser vos fonctions et procdures ou les fonctions intgres dExcel dans tout
programme qui rclame les fonctionnalits correspondantes.
o Autant que possible ne jamais dupliquer une mme ligne de code !
Regrouper vos fonctions et procdures en diffrents modules, nomms de manire explicite,
suivant leurs finalits.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 28

Excel-VBA et lIHM
Sont prsentes dans ce qui suit sous forme de tutoriels des fonctionnalits de VBA spcifiques
linterfaage entre lutilisateur et Excel.

Tutoriel : Les vnements

30

Tutoriel : Les entres et sorties standards

32

Tutoriel : Les Objets UserForm

37

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 29

Tutoriel : Les vnements


Un vnement, comme dfini en section 2.6, est une action reconnue par un objet. La
reconnaissance dun vnement par un objet permet de dclencher lexcution dune procdure
lorsque cet vnement survient. Un clic souris ou la frappe dune touche au clavier sont des
exemples dvnements qui peuvent tre interprts par du code VBA.
Nous verrons plus loin que les contrles placs dans une bote de dialogue (boutons de commande,
zones de texte, ...) peuvent rpondre des vnements. Les classeurs et les feuilles de calcul peuvent
galement rpondre des vnements.
Pour quun objet rponde un vnement, il faut crire du code VBA dans la procdure associe
lvnement considr.
Lobjectif de ce tutoriel est dcrire une procdure qui dtecte chaque nouvelle plage de cellules ou
cellule slectionne par lutilisateur dans la feuille de calcul FEUIL1 du classeur nomm ici pour
lexemple TEST-MACRO.XLS et colorie son fond en bleu.
Avant dcrire cette procdure, il faut :

identifier lobjet dont on veut traiter lvnement. Dans notre cas, il sagit de la feuille de calcul
FEUIL1 qui est un objet Worksheet ;
puis identifier lvnement traiter dans la liste des vnements associs lobjet considr.
Dans notre cas, on sintresse chaque nouvelle slection dune plage de cellules ou cellule dans
la feuille de calcul, ce qui correspond lvnement SelectionChange ;
enfin, crire le code VBA appropri dans la procdure associe lvnement choisi.

Pour cela, nous allons :


1) Ouvrir le classeur TEST-MACRO.XLS, puis lditeur de Visual Basic (activer la commande AFFICHAGE
BARRE D'OUTILS VISUAL BASIC et cliquer sur l'objet VISUAL BASIC EDITOR).
2) Dans lexplorateur de projets, slectionner la feuille de calcul FEUIL1 et ouvrir son module de code
laide du clic droit de la souris et de loption CODE.
3) Dans la liste de gauche au sommet du module de code, slectionner loption WORKSHEET. Dans la
liste de droite au sommet du module de code, slectionner lvnement SELECTIONCHANGE.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 30

On voit alors apparatre dans le module de code len-tte de procdure suivant :


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On veut prsent crire les instructions VBA permettant de colorier le fond dune cellule ou dune
plage de cellules en bleue. Pour trouver ces instructions, il existe deux possibilits :

utiliser lenregistreur de macro,


ou explorer les proprits de lobjet Range pour trouver comment modifier sa couleur de fond.

Le moyen le plus facile pour dcouvrir les instructions ncessaires pour accomplir une opration
donne consiste utiliser lenregistreur de macro.

4) Aller dans EXCEL et enregistrer une nouvelle macro MacroCouleurFond qui permet de modifier la
couleur de fond dune cellule.
5) Retourner dans lditeur de Visual Basic et tudier le code de la macro MacroCouleurFond.
Linstruction Selection.Interior.ColorIndex = 41 semble intressante puisquelle parle de couleur.
Pour obtenir de laide sur cette instruction, slectionner dans le code la proprit ColorIndex et
appuyer sur la touche F1. Laide en ligne de lditeur de Visual Basic permet dobtenir les
informations suivantes :

La proprit Interior dun objet Range renvoie un objet Interior qui correspond la couleur de
fond dune plage de cellules.
La proprit ColorIndex dun objet Interior permet de dterminer la couleur de fond.

Pour obtenir de laide sur un objet, une proprit ou une mthode donne, slectionner dans le
code cet objet, cette proprit ou cette mthode et appuyer sur la touche F1.
6) Retourner dans le module de code associ la feuille de calcul FEUIL1 et complter la procdure
Worksheet_SelectionChange comme suit :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Interior.ColorIndex = 41
End Sub
La variable Target qui est un objet Range reprsente la plage de cellules ou cellule slectionne par
lutilisateur dans la feuille de calcul FEUIL1.
7) Enregistrer la procdure et retourner dans EXCEL pour la tester (slectionner une plage de cellules
ou cellule et vrifier que sa couleur de fond devient bleue).

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 31

Tutoriel : Les entres et sorties


standards
Dans ce tutoriel sont prsentes deux fonctions dentres/sorties standards de VBA : la fonction
MsgBox et la fonction InputBox.

1 La fonction MsgBox
La fonction MsgBox affiche un message dans une bote de dialogue, attend que l'utilisateur clique
sur un bouton, puis renvoie un entier indiquant le bouton choisi par l'utilisateur. Elle a la syntaxe
suivante (les arguments entre crochets sont facultatifs) :
MsgBox(prompt[,buttons][,title][,helpfile, context])
o prompt est le message affich dans la bote de dialogue, buttons correspond au type de boutons
de la bote de dialogue et title est le titre de la bote de dialogue (cf. aide en ligne de lditeur de
Visual Basic laide de la touche F1.).
1) Ouvrir le classeur TEST-MACRO.XLS, puis lditeur de Visual Basic.

2) Insrer un nouveau module de code laide de la commande INSERTION MODULE et saisir la macro
suivante :
Sub MacroTestMessage()
Call MsgBox("Bonjour ! ", , "Accueil")
End Sub

3) Excuter la macro laide de la commande EXECUTION EXECUTER SUB/USERFORM ou cliquer sur licne

Les valeurs des arguments de la fonction MsgBox peuvent tre spcifies de deux manires : par
position ou par nom.
Exemple :

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 32

Dans linstruction Call MsgBox("Bonjour ! ", , "Accueil"), les valeurs des arguments sont spcifies
par position : les arguments doivent alors tre saisis dans le bon ordre et des virgules
supplmentaires doivent tre inclues pour les arguments manquants.
Cette instruction peut tre rcrite par nom en spcifiant les valeurs des arguments par nom comme
suit : Call MsgBox(prompt:="Bonjour ! ", Title:="Accueil"). Dans ce cas, comme dans lexemple
prcdent, il faut utiliser le signe := entre le nom de largument et sa valeur.
Lordre entre les arguments na alors plus dimportance et il ny a pas besoin de virgules
supplmentaires pour les arguments manquants.

4) Saisir la macro suivante et lexcuter.


Sub MacroTestMessage2()
Call MsgBox(prompt:="Avez-vous pass une bonne journe? ", Buttons:=4, Title:="Accueil !")
End Sub

Largument Buttons:=4 permet dafficher les boutons Oui et Non. Au lieu dutiliser la valeur
numrique 4 pour largument Buttons, on aurait pu utiliser la constante associe vbYesNo (cf. aide
en ligne de lditeur de Visual Basic), qui rend le code plus lisible.
Call MsgBox(prompt:="Avez-vous pass une bonne journe? ", Buttons:=vbYesNo,
Title:="Accueil !")
Lutilisation de constantes VBA intgres rend le code plus lisible.
Dans lexemple prcdent, une question est pose lutilisateur, mais sa rponse nest pas
rcupre : on ne sait pas sil a pass une bonne journe. Il se pose alors le problme de rcuprer la
valeur de retour de la fonction MsgBox. Pour ce faire, il ne faut pas utiliser linstruction Call pour
appeler MsgBox mais la syntaxe suivante :
reponse = MsgBox(prompt:="Avez-vous pass une bonne journe?")
o reponse est une variable dans laquelle on va stocker temporairement le rsultat.
On peut tester la valeur de retour de la fonction MsgBox (cf. aide en ligne de lditeur de Visual
Basic), comme suit :
Sub MacroTestMessage3()
Dim reponse As String
reponse = MsgBox(prompt:="Avez-vous pass une bonne journe? ",
Buttons:=vbYesNo, Title:="Accueil !")
If reponse = vbYes Then
Call MsgBox("Bonjour ! ", , "Accueil")
Else

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 33

Call MsgBox("Bonsoir ! ", , "Accueil")


End If
End Sub

2 La fonction InputBox
La fonction InputBox affiche une invite dans une bote de dialogue, attend que l'utilisateur tape du
texte ou clique sur un bouton, puis renvoie le contenu de la zone de texte sous la forme d'une chane
de caractre. Elle a la syntaxe suivante (les arguments entre crochets sont facultatifs) :
InputBox(prompt[,title][,default][,xpos][,ypos] [,helpfile,context])

o prompt est le message affich dans la bote de dialogue et title est le titre de la bote de dialogue
(cf. aide en ligne de lditeur de Visual Basic).
Si lutilisateur ne saisit rien dans la zone de texte, la fonction InputBox renvoie la chane de
caractres vide "".

5) Saisir la macro suivante et lexcuter.


Sub MacroTestDialogue()
Dim reponse As String
reponse = InputBox("Quel age avez-vous ?", "Saisie age")
If reponse = "" Then
Call MsgBox("Vous n'avez pas rpondu la question !", , "Erreur")
Else
Call MsgBox("Vous avez " & reponse & " ans", , "Age")
End If
End Sub

Loprateur & permet de concatner des chanes de caractres. Par exemple, si la rponse donne
par lutilisateur est 22, alors on a :
"Vous avez " & reponse & " ans" = "Vous avez 22 ans"

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 34

3 Rcapitulatif sur les parenthses et les listes darguments


Les procdures et les fonctions peuvent avoir des arguments. Voici un petit rcapitulatif sur leur
appel avec arguments.

Pour rcuprer la valeur de retour dune fonction, il ne faut pas utiliser linstruction Call pour
lappeler.
Exemple : reponse = InputBox("Quel age avez-vous ?", "Saisie age")

Pour appeler une procdure ou ne pas rcuprer la valeur de retour dune fonction, il faut utiliser
linstruction Call.
Exemple : Call MsgBox("Bonjour ! ", , "Accueil")

Attention : Il ne faut pas mettre despace entre le nom dune fonction ou dune procdure et la
liste de ses arguments placs entre parenthses.
Il existe un autre moyen pour appeler une procdure ou une fonction dont on ne veut pas rcuprer
la valeur de retour : ne pas utiliser linstruction Call et ne pas placer ses arguments entre
parenthses.
Exemple :
MsgBox "Bonjour ! ", , "Accueil"
Lors de lappel dune procdure ou dune fonction, les valeurs de ses arguments peuvent tre
spcifies par position ou par nom.
Exemple :
arguments spcifis par position
Call MsgBox("Bonjour ! ", , "Accueil")

arguments spcifis par nom


Call MsgBox(prompt :="Bonjour ! ", Title :="Accueil")

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 35

Tutoriel : Les Objets UserForm


Introduction
Les objets UserForm sont des botes de dialogue dfinies par lutilisateur.
Ce tutoriel explique comment crer une bote de dialogue permettant de saisir les clients dune
entreprise, comme le montre la capture dcran suivante :

1) Ouvrir un nouveau classeur et lenregistrer sous SAISIECLIENTS.XLS.


2) Pour renommer la feuille de calcul FEUIL1, cliquer avec le bouton droit sur l'onglet FEUIL1, activer la
commande RENOMMER et taper CLIENTS.

3) Saisir dans la feuille de calcul CLIENTS, les donnes suivantes :

4) Renommer DIVERS la feuille de calcul FEUIL2 et saisir les donnes suivantes :


On peut distinguer deux phases dans la cration dun objet UserForm :
le dessin de lobjet UserForm
Le dessin dun objet UserForm consiste placer des contrles sur lobjet.
Les contrles sont les lments constitutifs dun objet UserForm tels quune case cocher, une
zone de texte, une zone de liste modifiable ou un bouton de commande permettant une intervention
de lutilisateur.
Un contrle est un objet : il possde des proprits, des mthodes et des vnements dfinis.

lassociation de code lobjet UserForm et ses diffrents contrles

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 36

Il sagit de dterminer le comportement de lobjet UserForm et de ses contrles face aux diffrents
vnements utilisateur pouvant laffecter et dcrire le code permettant dexploiter les actions
effectues par lutilisateur.

1 Crer un objet UserForm


1) Ouvrir lditeur de Visual Basic et activer la commande INSERTION USERFORM. Un objet UserForm1
apparat, ainsi qu'une bote outils permettant d'ajouter des contrles lobjet.
Dans lexplorateur de projets, les botes de dialogue sont regroupes dans un dossier FEUILLES

objet USERFORM1 qui est un objet de type FEUILLE et qui permet de dessiner une bote de dialogue

fentre objet associe


lobjet USERFORM1

bote outils qui


apparat lorsque la
fentre objet associe
lobjet USERFORM1 est
slectionne

proprits de l'objet USERFORM1

Lexplorateur de projets permet dafficher le code dun objet USERFORM laide du clic droit de la
souris et de loption CODE ; ou dafficher lobjet lui-mme laide du clic droit de la souris et de
loption AFFICHER LOBJET.
2) Modifier le nom de lobjet UserForm par dfaut, UserForm1, en FenetreSaisieClients dans la
proprit NAME de la fentre PROPRIETES. Ce nom est le nom qui sera utilis dans le code pour faire
rfrence lobjet UserForm.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 37

3) La proprit CAPTION de lobjet UserForm correspond au libell qui apparat dans sa barre de titre.
Modifier cette proprit en Saisie Clients.

Zone de texte

Zone de liste modifiable

Intitul

bouton de
commande

On veut crer lobjet UserForm suivant :


Cet objet est compos des contrles suivants : un INTITULE et une ZONE DE LISTE MODIFIABLE pou saisir le
titre du client (Madame, Mademoiselle ou Monsieur), trois INTITULES et trois ZONES DE TEXTE pour saisir
le nom, le prnom et le tlphone du client et deux BOUTONS DE COMMANDE OK et Annuler.
Pour placer un contrle dans lobjet UserForm, cliquer sur lobjet voulu de la BOITE A OUTILS et le
faire glisser vers lobjet UserForm. Ds quun contrle a t plac sur lobjet UserForm, dfinir son
nom grce la proprit NAME.
Attention : Il est recommand dutiliser des noms vocateurs pour ses contrles, qui permettent
didentifier le type dobjet quils reprsentent et leur utilit.

4) Placer les diffrents contrles de lobjet UserForm et modifier leurs proprits comme suit :
Contrle
proprit NAME proprit CAPTION
INTITUL
IntitulTitre
Titre :
ZONE DE LISTE MODIFIABLE ComboBoxTitre
INTITUL
IntitulNom
Nom :
ZONE DE TEXTE
TextBoxNom
INTITUL
IntitulPrnom Prnom :
ZONE DE TEXTE
TextBoxPrnom
INTITUL
IntitulTl
Tlphone :
ZONE DE TEXTE
TextBoxTl
BOUTON DE COMMANDE ButtonOK
OK
BOUTON DE COMMANDE ButtonAnnuler Annuler
Remarque : Il est possible de copier/coller des contrles.

proprit FONT
police TIMES NEW ROMAN, taille 10
"
"
"
"
"
"
"

Afficher et fermer un objet UserForm

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 38

2.1 Afficher un objet UserForm


Linstruction Load permet de charger un objet UserForm en mmoire sans lafficher. La mthode
Show de lobjet UserForm permet dafficher un objet UserForm et de le charger en mmoire, si
cela na pas dj t fait.
Ecrire la procdure qui permet dafficher la bote de dialogue de saisie dun client.
1) Dans lditeur de Visual Basic, activer la commande INSERTION MODULE. Un module de code
MODULE1 souvre. Renommer le ModuleSaisieClients laide de la proprit NAME.
2) Saisir la procdure suivante dans le module de code :
Sub ProgPrincSaisieClients()
Sheets("Clients").Activate
Clients
FenetreSaisieClients.Show
End Sub

activation de la feuille

3) Excuter cette procdure (pour fermer la bote de dialogue FenetreSaisieClients, cliquer sur son
bouton de fermeture).

2.2 Fermer ou masquer un objet UserForm


Linstruction Unload permet de fermer un objet UserForm et de leffacer de la mmoire, les valeurs
de ses contrles sont alors perdues. La mthode Hide de lobjet UserForm permet de faire
disparatre un objet UserForm de lcran sans le supprimer de la mmoire.
Linstruction Unload ou la mthode Hide sont gnralement places dans les procdures
vnementielles attaches aux boutons de validation de lobjet UserForm, comme par exemple les
boutons de commande OK et Annuler.

3 Associer du code un objet UserForm


Les contrles placs sur un objet UserForm et lobjet UserForm lui mme sont rceptifs aux
vnements utilisateurs qui les affectent (clic souris sur un bouton de commande, saisie d'une valeur
dans une zone de texte). On peut ainsi crer des procdures dites procdures vnementielles, qui
se dclencheront lorsque lvnement correspondant sera repr.
La syntaxe dune procdure vnementielle attache un contrle de nom NomContrle (proprit
NAME) et dclenche par un vnement NomEvnement est la suivante :
Private Sub NomContrle_NomEvnement()
...
End Sub

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 39

Dans le cas dune procdure vnementielle attache un objet UserForm, le nom de lobjet
UserForm (proprit NAME) napparat pas dans les instructions de dclaration de la procdure. Il est
remplac par le mot cl UserForm comme suit :
Private Sub UserForm_Nomvnement ()
...
End Sub

Les vnements sont nombreux et varient dun contrle lautre. En voici, quelques uns :

vnement Change : dtect lors de la modification de la valeur (proprit VALUE) dun contrle
(par exemple une zone de texte).
vnement Click : dtect lorsque lutilisateur clique sur un contrle (par exemple un bouton de
commande).
vnement dblClick : dtect lorsque lutilisateur double-clique sur un contrle.

3.1 Associer du code un bouton de commande


Associer le code ncessaire au bouton de commande OK pour que la bote de dialogue soit ferme
lorsque lon clique dessus.
1) Aller dans lditeur de Visual Basic. Dans lexplorateur de projets, slectionner lobjet UserForm
de nom FenetreSaisieClients et ouvrir son module de code laide du clic droit de la souris et de
loption CODE (ou en double-cliquant dessus).
2) Dans la liste de gauche au sommet du module de code, slectionner loption ButtonOK. Dans la
liste de droite au sommet du module de code, slectionner lvnement Click.

3) Complter la procdure vnementielle ButtonOK_Click qui apparat comme suit :


Private Sub ButtonOK_Click()
Call Unload(Me)
End Sub

La proprit Me de lobjet UserForm renvoie lobjet UserForm actif.


4) Pour tester cette procdure, excuter la procdure ProgPrincSaisieClients du module de code
ModuleSaisieClients.
5) Associer le code ncessaire au bouton Annuler pour que la bote de dialogue soit ferme lorsque
lon clique dessus.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 40

3.2 Initialiser un objet UserForm


Lvnement Initialize dun objet UserForm est dtect lorsque lobjet UserForm est charg,
laide de la mthode Show ou de linstruction Load.
Attention : Lorsque la mthode Show est applique un objet UserForm masqu par la mthode
Hide, lobjet UserForm nest pas recharg mais uniquement affich. Lvnement Initialize nest
alors pas dclench.
La procdure vnementielle associe lvnement Initialize dun objet UserForm sexcute avant
laffichage de lobjet et a la syntaxe suivante :
Private Sub UserForm_Initialize()
...
End Sub

Cette procdure permet deffectuer des rglages dans lobjet UserForm avant son chargement.
Ecrire le code ncessaire pour affecter les valeurs Madame, Mademoiselle et Monsieur la
zone de liste modifiable ComboBoxTitre, en utilisant les valeurs qui se trouvent dans la plage de
cellule A1:A3 de la feuillle de calcul DIVERS.

1) Aller dans lditeur de Visual Basic. Dans lexplorateur de projets, selectionner lobjet UserForm
de nom FenetreSaisieClients et ouvrir son module de code laide du clic droit de la souris et de
loption CODE.
2) Dans la liste de gauche au sommet du module de code, slectionner loption UserForm. Dans la
liste de droite au sommet du module de code, slectionner lvnement Initialize.
3) Complter la procdure vnementielle UserForm_Initialize qui apparat comme suit :
Private Sub UserForm_Initialize()
Dim i As Integer
i = 1
Do Until IsEmpty(Worksheets("Divers").Range("A" & i))
Call Me.ComboBoxTitre.AddItem(Worksheets("Divers"). _
Range("A" & i).Value)
i = i + 1
Loop
End Sub

Remarque : Pour crire une instruction sur plusieurs lignes, il faut, la fin de chaque ligne, taper sur
la barre despace et sur le trait continu (_).
4) Pour tester cette procdure, excuter la procdure ProgPrincSaisieClients du module de code
ModuleSaisieClients.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 41

Pour information : Il existe une autre mthode pour initialiser la zone de liste modifiable
ComboBoxTitre avec les valeurs Madame, Mademoiselle et Monsieur, en la liant la plage de
cellule A1:A3 de la feuillle de calcul DIVERS.
Pour lier un contrle une plage de cellules, il faut renseigner la proprit ROWSOURCE du contrle
avec la plage de cellules voulue (dans notre cas, Divers!A1:A3) ou encore mieux avec le nom de la
plage de cellules voulue, ce qui suppose de nommer cette plage de cellules.
Remarque : La proprit CONTROLSOURCE permet de lier un contrle une seule cellule.
Attention: Cette mthode, contrairement la prcdente, ne pourra pas prendre en compte les
ventuelles modifications faites sur le titre dun client (ajout ou suppression dun titre). La zone de
liste modifiable ComboBoxTitre est lie la plage de cellule fixe A1:A3 de la feuille de calcul DIVERS.

3.3 Accder aux contrles dun objet UserForm


Jusqu prsent, nous avons cr un objet UserForm pour saisir de nouveaux clients, et, ouvert et
ferm cet objet. Cependant, si lutilisateur saisit des donnes dans lobjet UserForm, ces dernires
ne sont pas recopies dans liste de donnes EXCEL correspondante.

La mise jour de la liste de donnes EXCEL correspondant aux donnes du client doit tre faite
lorsque lutilisateur clique sur le bouton OK. Elle consiste insrer une nouvelle ligne dans la liste de
donnes et recopier les valeurs des contrles de lobjet UserForm dans les bonnes cellules de la
nouvelle ligne.
1) Aller dans lditeur de Visual Basic. Dans lexplorateur de projets, slectionner lobjet UserForm
de nom FenetreSaisieClients, ouvrir son module de code et complter la procdure
vnementielle ButtonOK_Click comme suit :
Private Sub ButtonOK_Click()
Sheets("Clients").Rows(2).Insert
Range("A2:D2").Font.Bold = False
Sheets("Clients").Range("A2").Value=Me.ComboBoxTitre.Text
Sheets("Clients").Range("B2").Value = Me.TextBoxNom.Text
Sheets("Clients").Range("C2").Value=Me.TextBoxPrnom.Text
Sheets("Clients").Range("D2").Value = Me.TextBoxTl.Text

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 42

'tri de la liste de donnes dans l'ordre croissant des noms (deuxime


colonne).
Call Sheets("Clients").Range("A1"). _
Sort(Key1:= Sheets ("Clients").Columns("B"), Header:=xlYes)
Call Unload(Me)
End Sub

Attention : Si, dans les procdures vnementielles ButtonOK_Click et ButtonAnnuler_Click, on


utilise la mthode Hide pour masquer lobjet UserForm la place de linstruction Unload, les
ressources mmoires de lobjet UserForm ne sont pas libres. Lors dun nouvel affichage de lobjet
UserForm avec la mthode Show, les diffrents contrles de lobjet ont alors les mmes valeurs
que lorsquil a t masqu.

4 Afficher un objet UserForm partir dun bouton dune feuille de


calcul
On veut pouvoir afficher la bote de dialogue FenetreSaisieClients partir d'un bouton de
commande de la feuille de calcul CLIENTS.
1) Aller dans EXCEL et cliquer sur longlet CLIENTS. Positionner le curseur sur une cellule vide de la
feuille de calcul CLIENTS et activer la commande AFFICHAGE BARRE D'OUTILS FORMULAIRES.
2) Une barre d'outils FORMULAIRES apparat. Cliquer sur l'objet BOUTON, puis cliquer sur la
feuille de calcul CLIENTS.
3) Dans la nouvelle fentre AFFECTER UNE MACRO qui apparat, slectionner la macro
ProgPrincSaisieClients et cliquer sur le bouton OK.
4) Cliquer sur le bouton BOUTON 1 et renommer le SAISIE CLIENTS.

5) Fermer la barre d'outils FORMULAIRES et tester le bouton SAISIE CLIENTS.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 43

Ponts entre applications


Il est possible avec VBA de programmer des fonctionnalits avances pour lensemble des
applications Office et de ce fait de crer des ponts entre ces diffrentes applications. Par
exemple, on peut retranscrire automatiquement dans un document Word le contenu dun fichier
Excel.

Pour cela dans une Macro Excel, il vous faudra :

accder lapplication Word :


rendre la fentre visible :
ouvrir un document :
ajouter un document :
sauvegarder le document :
crire du texte :

CreateObject("Word.Application")
ObjetWord.Visible = True
ObjetWord.Documents.Open
ObjetWord.Documents.Add
ObjetWord.Documents.Save
ObjetWord.Selection.TypeText Text:="le texte"

Le code suivant est fourni en exemple :


Sub CopieWord()
Dim AppWord As Object
Set AppWord = CreateObject("Word.Application")
With AppWord
.Documents.Add
.Selection.TypeText Text:="Liste des Clients"
.Selection.TypeParagraph sauter une ligne
on copie le contenu de A1 dans le document Word
.Selection.TypeText Text:="" & Range("A1").Value
.Documents.Save
.Visible = True
End With
End Sub

Lenregistreur de macro existe galement sous Word et vous permettra de dcouvrir les
instructions utiles vos besoins.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 44

Actions par URL


Dans un programme VBA on peut accder des outils extrieurs tels que des requtes internet par
lintermdiaire de la fonction suivante :
ActiveWorkbook.FollowHyperlink(Url)
Url reprsente ici des donnes concernant le service auquel on souhaite se rfrer. Cette
fonction envoie alors une requte travers le navigateur par dfaut.

Interrogation dun service web


Url du type : http://nom_du_service?requete-eventuelle
Si lon considre par exemple lUrl : http://www.google.com/search?q=ege+agroparistech on pourra
grce la fonction prcdente lancer depuis une macro VBA dans Excel une recherche sur internet
par le service Google pour les mots cls ege et agroparistech .
Tout site internet est accessible par ce biais. Le format des requtes dpend de chaque service
notamment au niveau des mots cls utiliss (pour google q reprsente la recherche formule).

Envoie de mails
Grce linstruction fournie prcdemment, on peut galement dclencher lenvoie dun mail par
lintermdiaire dune url du type :
mailto:adresse_mail?subject=le_sujet&body=le_contenu_du_message
Par exemple, pour lurl suivante mailto:edgar.poe@gmail.com?subject=Oh&body=ca va ?,
edgar.poe@gmail.com reprsente ladresse mail laquelle on souhaite envoyer le message, Oh
reprsente le titre du message et ca va ? son contenu.

Excel VBA DA GIA AgroParisTech Christine MARTIN

Page 45

Vous aimerez peut-être aussi