Вы находитесь на странице: 1из 17

Crer des macros sous Visual Basic pour Excel

Par Henry P. Aubert

Sommaire
1

Quest quune macro ?

Enregistrer la squence des oprations rpter

Visualiser le code dune macro

Ecrire ou modifier le code dune macro

Consulter laide de Microsoft VBA

Les deux types de macro dExcel

Importer un module dans un classeur

Crer le fichier Perso.xls

Supprimer un module

10 Exporter un module

11 Renommer un module

12 Associer un bouton ou un lment de menu une procdure

10

13 Crer un nouveau menu personnalis

13

14 Crer une nouvelle barre doutils personnalise

14

15 Associer un raccourci clavier une procdure

15

16 Supprimer des boutons personnaliss

16

17 Supprimer une barre doutils

16

18 Editer le rsultat de lexportation dun module

17

Visual Basic pour Excel. Crer des macros.

page 2

Quest quune macro ?


Les macros(1), dans Excel, sont des oprations sur les classeurs Excel qui ont t enregistres dans
un programme parce quelles sont longues et fastidieuses excuter la souris ou au clavier. Les
macros permettent aussi de raliser des oprations sur les classeurs impossibles la souris ou au
clavier. Ces programmes sont eux-mmes enregistrs comme des sous-programmes dExcel, au
choix :
Dans le classeur dans lequel on veut pouvoir les utiliser.
Dans le classeur Perso.xls de macros, dites personnelles, d'Excel.
Dans un classeur de macros complmentaires, dont lextension est .xla.
Il suffit ensuite de "lancer" la macro pour que les oprations quelle contient soient excutes trs
grande vitesse, comme indiqu au paragraphe 6, page 5 ci-dessous.
Les oprations sont enregistres dans un langage de programmation appel Visual Basic for
Applications, en abrviation VBA. On parle alors dinstructions.
Pour crer une macro on a trois possibilits :
Enregistrer la squence des oprations au clavier, comme expliqu au paragraphe 2, page 2, cidessous.
Dans ce cas certaines oprations intressantes sont impossibles raliser.
Importer, comme expliqu au paragraphe 7, page 6, ci-dessous, dans le classeur o lon veut la
stocker, une macro propose sur le site de la page ExcelEnse :
http://www-rocq.inria.fr/axis/modulad/excel.htm
ou sur tout autre site Internet de confiance, car une macro peut aller modifier le registre, donc le
fonctionnement du systme, ou de tout autre programme, effacer ou crer des fichiers, etc.
Modifier, comme expliqu au paragraphe 4, page 4, ci-dessous, le code dune macro dj
existante pour lamliorer.
Ecrire directement le code dune macro, comme expliqu au paragraphe 4, page 4, ci-dessous.

Enregistrer la squence des oprations rpter


Cliquer sur le menu Outils, puis sur loption Macro, puis sur loption Nouvelle Macro La bote
de dialogue Enregistrer une macro souvre :

Figure 1 : Bote de dialogue Enregistrer une macro


Dans la zone de texte Nom de la macro :, taper un nom de macro ou laisser Macro1.
Dans la liste droulante Enregistrer la macro dans :, slectionner loption Classeur de macros
personnelles.
. La barre doutils Arrter lenregistrement saffiche :
Cliquer sur le bouton

Effectuer sur le classeur Excel la squence de toutes les oprations que lon souhaite
enregistrer.

(1)
Dune faon gnrale les "macro-commandes" ou macros, sont des squences de commandes informatiques enregistres dans des fichiers
reconnus comme tels par le systme ou une application, et quil suffit donc de "lancer" pour excuter ces oprations. Ainsi des anciens fichiers dont
lextension tait .bat pour les commandes DOS.
Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

Cliquer sur le bouton


ci-dessus.

page 3

Arrter lenregistrement de la barre doutils Arrter lenregistrement

On peut ensuite visualiser le code, cest--dire les instructions du programme qui en rsulte, et
commencer comprendre le langage Microsoft Visual Basic for Applications (VBA) pour apprendre
modifier, puis crire directement des macros.

Visualiser le code dune macro


Appuyer simultanment sur les touches Alt et F11. Lditeur de macros pour Excel,
Visual Basic Editor, souvre.

Appuyer simultanment sur les touches Ctrl et R(2). On obtient :

Figure 2 : Fentre de lditeur de macros Excel divis en deux panneaux


Dans lExplorateur de projet (le panneau de droite) dvelopper le dossier VBA Project
(PERSO.XLS). On obtient :

Figure 3 : Dveloppement du dossier VBA Project (PERSO.XLS)

(2) Ce raccourci clavier ne sert qu afficher lexplorateur de projet (le panneau de droite de la Figure 5 ci-dessus). Une fois affich, il le sera la
prochaine ouverture de lditeur.
Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 4

Encore dans le panneau de droite, dvelopper le dossier Modules du projet VBA Project
(PERSO.XLS) :

Figure 4 : Dveloppement du dossier Modules du dossier VBA Project (PERSO.XLS)


Figure 5 : Fentre de lditeur de macros Excel
Double cliquer sur le module Module1 qui contient la macro Macro1 enregistre :

Figure 6 : Visualisation du code dune macro enregistre

Ecrire ou modifier le code dune macro


Ouvrir lditeur de macros pour Excel, Visual Basic Editor comme au paragraphe 3 ci-dessus.
Dvelopper le dossier VBA Project (PERSO.XLS) comme au paragraphe 3, page 3.
Dvelopper le dossier Modules du projet VBA Project (PERSO.XLS) comme au paragraphe 3,
page 3.
Cliquer du bouton droit sur le module contenant la macro modifier ou devant contenir la
macro crire, par exemple Module1.
Ecrire ou modifier le code en sinspirant dautres macros de laide en ligne, et du manuel VBA
pour Excel et Word bientt disponible sur http://hpa.free.fr.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 5

Consulter laide de Microsoft VBA


Slectionner, dans une macro, un mot dune instruction(3), par exemple ActiveCell.
Appuyer sur la touche F1. La fentre de Microsoft Visual Basic : Aide souvre :

Figure 7 : Fentre de Microsoft Visual Basic : Aide

Les deux types de macro dExcel

Il y a, pour Excel, deux types de macros :

Les procdures, dont le code dbute par Sub( ) et se termine par End Sub.
Elles peuvent tre enregistres, modifies, ou directement crites.
Elles ne sont excutables quau travers de la bote de dialogue Macro. Pour cela :
o Appuyer simultanment sur les touches Alt et F8 (ou cliquer sur le menu Outils puis sur le
sous-menu Macros puis sur loption Macros). La bote de dialogue Macro souvre :

o
o

Figure 8 : Slection dune macro pour lExcuter, la Modifier ou la Supprimer


Slectionner la macro excuter.
Cliquer sur le bouton Excuter.

Les fonctions dont le code dbute par Function( ) et se termine par End Function.
Elles ne peuvent pas tre enregistres : elles doivent tre crites directement.
Elles ne peuvent qutre insres dans une cellule. Pour cela :
ou appuyer simultanment sur Shift (ou Maj) et
o Cliquer sur le bouton
F3. La bote de dialogue Insrer une fonction souvre.

(3)
Il suffit de placer le pointeur de la souris au milieu du mot sur lequel on veut obtenir de laide.
Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 6

Slectionner la catgorie Personnalises de la liste des catgories :. On obtient :

Figure 9 : Slection dune fonction personnalise insrer dans une cellule


Slectionner la fonction insrer.

Les procdures et les fonctions peuvent tre regroupes et dplaces de faon tout fait quelconque
dans un ou plusieurs modules.

Importer un module dans un classeur

Une procdure ou une fonction ne peut tre lance que dans le classeur dans lequel elle est
enregistre.
Une procdure ou une fonction enregistre dans le classeur PERSO.XLS peut tre lance dans tout
classeur ouvert.
On suppose quon veut importer un module dans le classeur Perso.xls. Dans ce cas, il faut que
celui-ci existe. Pour importer le module dans un classeur autre que Perso.xls, il faut quil soit
ouvert.
Dans tous les cas, ouvrir un classeur Excel.
Ouvrir lditeur de macros pour Excel, Visual Basic Editor comme au paragraphe 3, page 3.
Si on veut importer le module dans le classeur Perso.xls et que le projet VBA Project
(PERSO.XLS) napparat pas dans le panneau de droite comme dans la Figure 5, page 4,
fermer lditeur de macros, puis crer PERSO.XLS comme au paragraphe 8, page 7 puis,
aprs, rouvrir lditeur de macros.
Pour importer le module dans un des classeurs ouverts, la manuvre suivante est
identique, au nom du classeur prs.
Cliquer du bouton droit sur un module quelconque. Un menu contextuel souvre :

Figure 10 : Le menu contextuel de gestion des modules Visual Basic

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 7

Cliquer sur Importer un fichier La bote de dialogue Importer un fichier souvre :

Figure 11 : Bote de dialogue Importer un fichier


Rechercher le dossier, puis le puis le fichier .bas contenant la ou les macros importer.
Cliquer sur le bouton Ouvrir. Le module est plac dans le dossier Modules.
Le nom du module est automatiquement modifi si un module de mme nom existe dj.

Crer le fichier Perso.xls


Enregistrer une macro Macro1 quelconque, comme au paragraphe 2, page 2, mais sans aucune
opration.
Supprimer le module Module1 dans lequel la macro Macro1 a t enregistre, comme indiqu au
paragraphe 9, page 7 ci-dessous.

Supprimer un module

On suppose quil sagit dun module du classeur Perso.xls. Pour les autres modules, la manuvre
est identique, au nom du classeur prs.
Ouvrir lditeur de macros pour Excel, Visual Basic Editor comme au paragraphe 3, page 3.
Dvelopper le dossier VBA Project (PERSO.XLS) comme au paragraphe 3, page 3.
Dvelopper le dossier Modules du projet VBA Project (PERSO.XLS) comme au paragraphe 3,
page 3.
Cliquer du bouton droit sur le module supprimer, par exemple Module1. Un menu contextuel
souvre :

Figure 12 : Le menu contextuel dun module Visual Basic

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 8

Slectionner puis cliquer sur loption Supprimer Module1. Une boite de dialogue souvre :

Figure 13 : Boite de dialogue pour exporter un module avant de le supprimer

Cliquer sur le bouton

10 Exporter un module
Il est prudent de sauvegarder les modules crs en les exportant.
Lexportation se fait dans un fichier texte dont lextension est .bas.
On suppose quil sagit dun module du classeur Perso.xls. Pour les autres modules, la manuvre
est identique, au nom du classeur prs.
Ouvrir lditeur de macros pour Excel, Visual Basic Editor comme au paragraphe 3, page 3.
Dvelopper le dossier VBA Project (PERSO.XLS) comme au paragraphe 3, page 3.
Dvelopper le dossier Modules du projet VBA Project (PERSO.XLS) comme au paragraphe 3,
page 3.
Cliquer du bouton droit sur le module supprimer, par exemple Module1. Un menu contextuel
souvre :

Figure 14 : Le menu contextuel dun module Visual Basic

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 9

Slectionner puis cliquer sur loption Exporter un fichier. La bote de dialogue Exporter un
fichier souvre :

Figure 15 : Bote de dialogue Exporter un fichier


Slectionner le dossier dans lequel on souhaite enregistrer le fichier .bas contenant la ou les
macros.
Cliquer sur le bouton Enregistrer.
Remarque : Changer le nom du fichier .bas, si lon ne veut pas remplacer une prcdente
sauvegarde. Le nom du fichier .bas est indpendant du nom du module.

11 Renommer un module

Ouvrir lditeur de macros pour Excel, Visual Basic Editor comme au paragraphe 3, page 3.
Dvelopper le dossier VBA Project (PERSO.XLS) comme au paragraphe 3, page 3.
Dvelopper le dossier Modules du projet VBA Project (PERSO.XLS) comme au paragraphe 3,
page 3.
Cliquer du bouton droit sur le module renommer, par exemple Module1.
Appuyer sur la touche F4. La fentre Proprits de lobjet souvre, et affiche les proprits de
lobjet slectionn, ici, le module Module1 :

Figure 16 : Lditeur de macros pour Excel avec la fentre Proprits


Double cliquer sur la valeur Module1 de Name, la seule proprit du module, son nom.
Taper le nouveau nom. La modification est immdiate.
Pour fermer la fentre Proprit, cliquer sur son bouton .

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 10

12 Associer un bouton ou un lment de menu une procdure


Il est impossible dassocier une fonction un bouton.
Cliquer sur le menu Outils. Slectionner loption Personnaliser. On obtient :

Cliquer sur cette option. La bote de dialogue Personnaliser souvre :

Figure 17 : Bote de dialogue Personnaliser


On peut aussi cliquer du bouton droit nimporte o dans la zone des menus et des barre doutils,
pour trouver loption Personnaliser, et ouvrir la bote de dialogue ci-dessus.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 11

Dans la liste Catgories :, slectionner Macros :

Figure 18 : Les commandes disponibles pour la personnalisation avec des macros

Dans la liste Commandes, slectionner indiffremment Bouton Personnalis ou Element de


menu personnalis pour ajouter une procdure une barre doutils existante ou un menu
existant. Le rsultat est, la prsentation de dpart prs, le mme.

Traner la commande slectionne lendroit de la barre doutils existante ou du menu existant


o on veut la placer. Exemple :

Figure 19 :
Dans cet exemple, un Bouton personnalis et un Elment de menu personnalis ont t ajouts
la Barre des menus, et dans le menu Fentre.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 12

Cliquer du bouton droit de la souris sur llment ou le bouton personnalis ajout. Un menu
contextuel saffiche :

Figure 20 : Menu contextuel de personnalisation dun Bouton ou un Elment de menu personnalis


La seule diffrence est que, pour un Bouton personnalis, loption Par dfaut est slectionne,
comme ci-dessus, alors que pour un Elment de menu personnalis cest loption Texte seul
pour ce bouton qui lest. On passe de lun lautre en cliquant sur une de ces deux options.

Cliquer sur loption Affecter une macro La bote de dialogue Affecter une macro souvre :

Figure 21 : Bote de dialogue Affecter une macro


Slectionner la "macro" cest--dire la procdure affecter au Bouton ou Elment de menu
personnalis.

cliquer sur le bouton

Personnaliser (Image du bouton, Nom, etc.) le au moyen du menu contextuel prcdent.


Dans la bote de dialogue Personnaliser, cliquer sur
.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 13

13 Crer un nouveau menu personnalis


Les procdures personnalises peuvent aussi tre associes des lments dun menu personnalis.
Pour cela :
Ouvrir la bote de dialogue Personnaliser, comme au paragraphe 12, page 10, ci-dessus.
Dans la liste Catgories :, slectionner Nouveau Menu :

Figure 22 : La bote de dialogue Personnalisation


Dans la liste Commandes : slectionner puis traner loption Nouveau menu lemplacement
souhait :

Figure 23 : Ajout dun nouveau menu dans la barre des menus

Personnaliser ce nouveau menu en cliquant dessus du bouton droit de la souris.


Ajouter des boutons personnaliss associs des procdures ou des commandes Excel ce
menu, comme au paragraphe 12, page 10, ci-dessus.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 14

14 Crer une nouvelle barre doutils personnalise


Les procdures personnalises peuvent aussi tre associes des boutons dune barre doutils
personnalise. Pour cela :
Ouvrir la bote de dialogue Personnaliser, comme au 13, ci-dessus.
Slectionner longlet Barres doutils. On obtient :

Figure 24 : Feuille Barre doutils de la bote de dialogue Personnalisation

Cliquer sur le bouton

Figure 25 : Bote de dialogue Nouvelle barre doutils


Donner un nom cette barre.

Rdig par Henry P. Aubert pour Excel'Ense

. On obtient :

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

Cliquer sur le bouton

page 15

. Une nouvelle barre doutils sans boutons saffiche :

Figure 26 : Une nouvelle barre doutils sans boutons saffiche


Et cette nouvelle barre est liste et coche dans la liste Barres doutils :.

Cliquer sur le bouton

Ajouter des boutons personnaliss ou des commandes Excel cette barre, comme au
paragraphe 12, page 10, ci-dessus.

de la bote de dialogue Personnalisation.

15 Associer un raccourci clavier une procdure

Appuyer simultanment sur les deux touches Alt et F8. La bote de dialogue Macro souvre :

Figure 27 : Bote de dialogue Macro


Slectionner la procdure laquelle associer un raccourci clavier.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 16

Cliquer sur le bouton

Figure 28 : Bote de dialogue Options de macro


Taper une lettre ou un chiffre et, ventuellement une description.

cliquer sur le bouton

. La bote de dialogue Options de macro souvre :

16 Supprimer des boutons personnaliss

Ouvrir la bote de dialogue Personnaliser, comme au paragraphe 12, page 10, ci-dessus.
Traner llment supprimer en dehors de la zone des menus et des barres doutils.
de la bote de dialogue Personnalisation.
Cliquer sur le bouton

17 Supprimer une barre doutils

Ouvrir la bote de dialogue Personnaliser, comme au paragraphe 12, page 10, ci-dessus.
Slectionner longlet Barres doutils.
Dans la liste des barres doutils, slectionner la barre doutils personnalise supprimer.
Cliquer sur le bouton. La bote de dialogue ci-dessous saffiche.

Figure 29 : Bote de dialogue de suppression dune barre doutils personnalise


.
cliquer sur le bouton

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Visual Basic pour Excel. Crer des macros.

page 17

18 Editer le rsultat de lexportation dun module

Ouvrir le fichier .bas qui rsulte de lexportation du module du mme nom effectue au
paragraphe 10, page 8 ci-dessus, avec lditeur de texte NotePad.exe. On obtient, pour Module1
par exemple :

Figure 30 : Edition du fichier texte rsultant de lexportation du module Module1

Modifier le texte en argument dans linstruction :


Attribute VB_Name = "Module1"
pour modifier le nom du module en cas de rimportation.

Modifier le texte en argument dans linstruction :


Attribute Macro1.VB_Description =
"Macro enregistre le 31/03/2005 par Henry AUBERT"
pour modifier la description de la procdure en cas de rimportation. Ce texte correspond
celui quon saisit dans la zone Description de la bote de dialogue de cration ou de
modification des options de la procdure, comme la Figure 28, page 16, ci-dessus.

Modifier lespace du texte en argument dans linstruction :


Attribute Macro1.VB_ProcData.VB_Invoke_Func = " \n14"
pour attribuer un raccourci clavier la procdure. Le caractre saisi correspond celui quon
saisit dans la zone Touche de raccourci de la bote de dialogue de cration ou de modification
des options de la procdure, comme la Figure 28, page 16, ci-dessus.

Rdig par Henry P. Aubert pour Excel'Ense

Mise jour du 31/03/2005 21:29

Вам также может понравиться