Vous êtes sur la page 1sur 51

COURS DE PROGRAMMATION

VBA

Version 4.2
Avril 2019 Semestre 4 www.arsene-ayi.info
contact@arsene-ayi.info
ESPC / Cours de Programmation VBA Semestre 4

Objectifs du Cours
À l’issue de ce cours, les élèves ingenieurs seront capables de :

Créer des macros avec l’enregistreur de macros


Programmer des procédures et des fonctions
Faire interagir un programme avec l’utilisateur

Arsène AYI / www.arsene-ayi.info Page 2 / 51


ESPC / Cours de Programmation VBA Semestre 4

Table des matières


Chapitre I : NOTION DE BASE SUR MS OFFICE EXCEL 2010 / 2013 ............................... 5
I- Présentation .................................................................................................................. 5
1) DEMARRER L’APPLICATION EXCEL 2007................................................................ 6
2) Faisons la connaissance de l’écran d’Excel 2007 ................................................... 6
3) Les références relatives et absolues ........................................................................... 8
4) Créer un classeur ............................................................................................................... 9
5) Ouvrir un classeur existant ............................................................................................. 9
6) Manipulation des feuilles de calcul ........................................................................... 10
7) Enregistrer le classeur sous un autre nom .............................................................. 11
8) La fermeture du logiciel ................................................................................................. 11

Chapitre II : MANIPULATION DES CELLULES D’UN CLASSEUR .............................. 12


I- Saisir et modifier des données ................................................................................. 12

A. Saisir du texte ............................................................................................................. 12

B. Saisir un chiffre........................................................................................................... 12

C. Saisir une date ou une heure ................................................................................ 12

D. Modifier une donnée saisie ................................................................................... 13

E. Se déplacer dans un classeur................................................................................... 13

F. Sélectionner des cellules .......................................................................................... 13


1- Sélectionner une cellule ................................................................................................ 13
2- Sélectionner une plage de cellule .............................................................................. 14
3- Sélectionner plusieurs cellules non adjacentes .................................................... 14
4- Sélectionner une ligne ................................................................................................... 15
5- Sélectionner plusieurs lignes ....................................................................................... 15
6- Sélectionner une colonne.............................................................................................. 15
7- Sélectionner plusieurs colonnes ................................................................................. 15
8- Sélectionner toutes les cellules de la feuille .......................................................... 16

G. Modifier un tableau ................................................................................................ 16


1- Déplacer une cellule ....................................................................................................... 16
2- Recopier une donnée ...................................................................................................... 16
3- Insérer une cellule ........................................................................................................... 17
4- Supprimer une cellule .................................................................................................... 17
Arsène AYI / www.arsene-ayi.info Page 3 / 51
ESPC / Cours de Programmation VBA Semestre 4

CHAPITRE III : FAIRE LES CALCULS SOUS MS OFFICE EXCEL ....................................... 18


I. Créer un calcul simple ............................................................................................... 18

II. Les opérateurs et fonctions Excel ........................................................................... 18

III. Utiliser une fonction de calcul .............................................................................. 19


A- Fonction SOMME ......................................................................................................... 19
B- La fonction MOYENNE ............................................................................................... 20
C- La fonction MAX........................................................................................................... 21
D- La fonction MIN ............................................................................................................ 21
E- La fonction concaténation () ou la fonction & .................................................... 21
F- La fonction NB() ............................................................................................................... 21
G- La fonction NBVAL() ................................................................................................... 22
H- La fonction NB.SI() ...................................................................................................... 22
I- Les fonctions BDNBVAL() et BDSOMME() ............................................................. 22
J- La Fonction Logique Si() ............................................................................................... 23
K- Les fonctions ET() et OU() ........................................................................................ 23
L- La fonction RECHERCHEV()......................................................................................... 24

Travaux Dirigés N° 1........................................................................................................ 25

Chapitre IV : INTRODUCTION AU VISUAL BASIC POUR APPLICATION ... 26


I. Définition ....................................................................................................................... 26
II. Présentation de l’environnement de développement ................................................... 27
1) Les projets ............................................................................................................................ 28
2) Les procédures ..................................................................................................................... 28
3) Les fonctions ........................................................................................................................ 29
4) Les modules .......................................................................................................................... 30
5) Les boîtes de dialogue.......................................................................................................... 31
6) Les modules de classes ........................................................................................................ 31
7) Dialoguer avec l’utilisateur ................................................................................................. 31
III. Principaux mots-clés du langage VBA ........................................................................ 32
A- Les opérateurs ............................................................................................................ 32
1- Opérateurs arithmétiques ................................................................................................... 32
2- Opérateurs de comparaison................................................................................................ 32
3- Opérateurs logiques ............................................................................................................ 32
4- Structures conditionnelles................................................................................................... 32
5- Les Boucles ........................................................................................................................... 33
6- Gestion des programmes..................................................................................................... 34
a) Exit ........................................................................................................................................ 34
b) End et Stop ........................................................................................................................... 35
c) On Error GoTo .................................................................................................................... 35
Arsène AYI / www.arsene-ayi.info Page 4 / 51
ESPC / Cours de Programmation VBA Semestre 4

7- Conversion de types............................................................................................................. 36
Chapitre V : DECLARATION DES VARIABLES ET DES CONSTANTES EN
VBA ............................................................................................................................... 37
I. Les variables .................................................................................................................. 37
II. Les constantes............................................................................................................. 39
III. Les outils d’interactions.............................................................................................. 40
1- La MsgBox ........................................................................................................................... 40
2- L’InputBox ........................................................................................................................... 41
CHAPITRE VII : QUELQUES ASTUCES EN VBA .................................................. 42
I- Mise en forme du projet VBA ........................................................................................ 42
II- L’exécution du programme ........................................................................................ 43
III- Débogage .................................................................................................................... 44
EXERCICES PRATIQUES ............................................................................................ 46
I) Conception de la boîte de dialogue ................................................................................. 46
II) Programmation des contrôles de la boîte .................................................................... 47
III) Améliorations possibles .............................................................................................. 49
IV) Création d'une commande spécifique ......................................................................... 50

Chapitre I : NOTION DE BASE SUR MS OFFICE EXCEL


I- Présentation

Arsène AYI / www.arsene-ayi.info Page 5 / 51


ESPC / Cours de Programmation VBA Semestre 4

MS Excel est un logiciel conçu par la société Microsoft. Il facilite la conception


des tableaux comportant des calculs. C’est un logiciel tableur. Excel permet de réaliser
des tableaux de données sous forme de liste contenant des calculs plus ou moins
complexes, des graphiques de données…
1) DEMARRER L’APPLICATION EXCEL 2007

Pour lancer le logiciel MS Excel 2007, vous avez deux solutions :

✓ La première méthode est de double cliquez sur l’icône suivant situé sur le

bureau :

✓ La deuxième solution consiste à cliquer dans le menu Démarrer sur Programmes


(Tous les programmes) puis sur Microsoft Office et enfin Microsoft Office
Excel 2007

Pour démarrer rapidement un logiciel souvent utilisé, il est conseillé d’avoir un raccourci
sur le Bureau de Windows. Pour le créer, il faut procéder comme suit : Cliquez sur le bouton
« Démarrer », situé sur la barre des tâches (ou bien appuyez sur la touche Windows de
votre clavier).

Cliquez ensuite sur « Tous les programmes ». Puis, faites un clic droit sur le logiciel choisi
et sélectionner « envoyer vers » dans le menu contextuel qui s’affiche. Cliquez enfin sur «
Bureau (Créer un raccourci ». L’icône du logiciel apparaît alors sur le Bureau avec une
petite flèche noire. Vous venez donc de créer le raccourci du logiciel.

Pour lancer votre programme il suffit de Double-cliquez sur son raccourci sur le bureau ou
passer par le menu Démarrer en cliquant sur son icône.

2) Faisons la connaissance de l’écran d’Excel 2007

Arsène AYI / www.arsene-ayi.info Page 6 / 51


ESPC / Cours de Programmation VBA Semestre 4

La fenêtre principale d’un logiciel est ce qui s’affiche à l’écran au démarrage de celui-ci.
Lorsqu’on passe le pointeur sur un bouton ou une étiquette, une « info-bulle » explicative
s’affiche généralement. Une info-bulle est un rectangle qui contient une information
décrivant l’objet pointé.
Pour activer un bouton, il faut cliquez dessus. Il change alors de couleur.
La fenêtre principale comprend divers éléments communs aux logiciels Microsoft
Office 2007 (cf. chapitre précédent)
La barre de titre par exemple située en haut de l’écran, porte le nom du fichier ouvert
suivi du nom du logiciel utilisé.
A son extrémité droite, elle comprend trois boutons servant à réduire, agrandir ou restaurer
et fermer la fenêtre.
La barre de titre est composée du nom du logiciel (ici Microsoft Excel) puis du nom que
l’on va donner au classeur Excel. Par défaut, Excel nomme son premier classeur
« classeur1». Un classeur est Excel c’est la même chose que vous avez chez vous. C’est un
espace de travail mis à votre disposition pour construire vos tableaux. Il est composé de 3
feuilles que l’on peut voir en bas à gauche. On peut ajouter ou retirer des feuilles a ce
classeur.

Arsène AYI / www.arsene-ayi.info Page 7 / 51


ESPC / Cours de Programmation VBA Semestre 4

Une feuille est organisée en lignes et en colonnes. Les lignes sont identifiées par des
nombres (de 1 à 65536) et les colonnes sont identifiées par des lettres (de A à IV soit 256
colonnes).
La cellule est l’élément de base de la feuille et se trouve à l’intersection d’une ligne et
d’une colonne. Chaque cellule est identifiée par une référence spécifique, qui fait appel
aux numéros de ligne et de colonne où elle se trouve dans une feuille. Par exemple, dans
chaque feuille, la cellule qui se trouve à l’intersection de la colonne A et de la ligne 1 est
donc identifiée par sa référence A1.
Une cellule peut recevoir :
✓ Des données numériques ou alphanumériques,
✓ Des formules de calcul,
✓ Des commentaires.
La cellule active est celle qui apparaît en sur brillance à l’écran. C’est la cellule
sélectionnée dans laquelle vous travaillez. On peut voir aussi la référence de la cellule
active dans la barre de formule.

3) Les références relatives et absolues


a. Les références relatives

Lorsque vous créez une formule, les références de cellules ou de plages de


cellules sont généralement basées sur leur position par rapport à la cellule qui contient
la formule. Dans l'exemple suivant, la cellule B2 contient la formule =A1 ; Microsoft Excel
recherche la valeur située une cellule au-dessus et une cellule à gauche de la cellule B2.
Il s'agit là d'une référence relative.

Lorsque vous copiez une référence utilisant des références relatives, Excel ajuste
automatiquement les références contenues dans la formule collée pour faire référence
aux différentes cellules par rapport à la position de la formule. Dans l'exemple suivant, la
formule =A1 qui est dans la cellule B2 a été copiée dans la cellule B3. Excel a ajusté la
formule de la cellule B3 en la changeant en =A2, qui fait référence à la cellule située à
une cellule au-dessus et une cellule à gauche de la cellule B3.

b. Les références absolues

Arsène AYI / www.arsene-ayi.info Page 8 / 51


ESPC / Cours de Programmation VBA Semestre 4

Si vous ne voulez pas que Excel ajuste les références lorsque vous copiez une
formule dans une autre cellule, utilisez une référence absolue.
Par exemple, si votre formule multiplie la cellule A5 par la cellule C1 (=A5*C1) et que vous
la copiez dans une autre cellule, Excel ajuste les deux références. Vous pouvez créer une
référence absolue en plaçant le signe $ avant les éléments de la référence qui ne doivent
pas être modifiés.
Par exemple, pour créer une référence absolue à la cellule C1, ajoutez les signes $ à la
formule : =A5*$C$1

4) Créer un classeur
Par défaut, au démarrage du logiciel un classeur vierge contenant trois feuilles de calcul

vierges est ouvert à l’écran. Si ce n’est pas le cas, cliquez sur le bouton au
niveau du bouton office pour ouvrir un nouveau classeur Excel. La boîte de dialogue
suivante apparaît alors :

Dans cette boîte de dialogue, choisissez un modèle de classeur (vierge ou que vous avez
créé) ou un modèle conçu par Microsoft.
Remarque : Si vous choisissez la dernière solution (Modèle conçu par Microsoft), il
faudra que vous ayez un accès Internet pour pouvoir vous connectez à Microsoft
Online. Puis cliquez sur le bouton Créer .
5) Ouvrir un classeur existant

Pour ouvrir un classeur existant soit vous cliquez sur le bouton suivant dans le
menu affiché par le bouton démarrer. La boîte de dialogue suivante apparaît :

Arsène AYI / www.arsene-ayi.info Page 9 / 51


ESPC / Cours de Programmation VBA Semestre 4

Il suffit alors de naviguer dans vos dossiers pour trouver le fichier que vous souhaitez
ouvrir. Vous double cliquez sur ce fichier pour l’ouvrir à l’écran.
Vous pouvez sélectionner un support de stockage différent (clé USB, CD ROM (D) …) en
cliquant sur l’explorateur de Windows dans la colonne à l’extrême gauche. Par défaut ces
dans mes documents que MS Excel vous envoie.
Vous pouvez ouvrir un dossier en cliquant sur son nom puis en cliquant sur le bouton Ouvrir
ou en double cliquant sur son nom.
Vous pouvez ouvrir un fichier en cliquant sur son nom puis en cliquant sur le bouton Ouvrir
ou en double cliquant sur son nom. Le document se charge alors.
6) Manipulation des feuilles de calcul
a) Renommer une feuille de calcul
Vous avez deux solutions pour renommer une feuille de calcul :
✓ Vous choisissez l’onglet Accueil puis le groupe cellule puis vous
sélectionnez renommer la feuille dans le menu Format
✓ Vous double cliquez sur l’onglet de la feuille à renommer en bas à gauche

L’onglet de la feuille passe alors en mode modification comme le montre la photo


précédente. Il suffit de saisir maintenant le nom de la feuille est de valider par la touche
ENTREE du clavier.
b) Changer la feuille active
Pour changer de feuille du classeur et trouver une feuille vierge, il suffit de cliquer
sur l’onglet « Feuil2 ».

Arsène AYI / www.arsene-ayi.info Page 10 / 51


ESPC / Cours de Programmation VBA Semestre 4

c) Ajouter une feuille de calcul au classeur


Pour ajouter une feuille de calcul au classeur il y a trois méthodes :

➢ il suffit de cliquer sur le bouton situé juste à côté du nom des feuilles
➢ vous allez dans le groupe cellule de l’onglet Accueil puis vous sélectionnez
insérer une feuille dans le menu insérer.
➢ Vous pouvez aussi utiliser la combinaison des touches MAJ + F11 du clavier

d) Déplacer une feuille


Comme le montre l’image ci-dessous, la feuille 4 n’est pas placée au bon endroit. Pour la
mettre derrière la feuille 3, il suffit de cliquez-glisser l’onglet de la feuille à l’endroit

voulu.
e) Supprimer une feuille de calcul d’un classeur
Pour supprimer une feuille de calcul d’un classeur, il faut se placer sur la feuille que
l’on veut supprimer. Ensuite, il suffit de choisir Supprimer une feuille dans le groupe
cellule de l’onglet Accueil.
Remarque : Toutes les données présentes sur votre feuille supprimées seront
définitivement perdues après enregistrement du classeur.

7) Enregistrer le classeur sous un autre nom


Pour enregistrer un classeur sous un autre nom, il suffit de choisir Enregistrer sous dans
le menu affiché par le bouton démarré. Il faut choisir un autre nom que le nom que vous
avez déjà proposé et/ou changer le lieu de stockage. Pour finir, cliquez sur le bouton
Enregistrer.

8) La fermeture du logiciel
Pour fermer le fichier en cours, cliquez sur la croix en haut à droite (case rouge). S’il était
le seul fichier ouvert, on quitte également l’application. Pour le fermer sans quitter
l’application : bouton Office > cliquez sur la commande Fermer.
Pour fermer tous les documents ouverts dans l’application, et pour quitter l’application :
bouton Office > Quitter l’application (bouton × situé en bas à droite de la fenêtre).
D’une façon générale, une croix sur une fenêtre ou un volet permet de le fermer.

Arsène AYI / www.arsene-ayi.info Page 11 / 51


ESPC / Cours de Programmation VBA Semestre 4

Chapitre II : MANIPULATION DES CELLULES D’UN CLASSEUR


I- Saisir et modifier des données
A. Saisir du texte
Nous allons créer un modèle de facture dans un nouveau classeur. La cellule A1
est la cellule active dans tout nouveau classeur. Nous allons nous positionner dans la
cellule C1 grâce au clavier (flèches directionnelles) ou à la souris. Dans cette cellule, nous
allons taper le mot FACTURE. A chaque fois que vous avez fini de saisir une donnée dans
une cellule, il faut la valider. Pour cela, vous avez deux possibilités :
✓ La première consiste à appuyer sur la touche ENTREE et la cellule active
devient C2.
✓ La deuxième consiste à utiliser les flèches de direction. Par exemple si vous
prenez la flèche de direction qui va vers la droite, vous validez la cellule C1 mais
la cellule active devient D1.
Lorsque le texte est trop long comme le montre l’image du dessous, celui-ci empiète sur
la cellule de droite. Le texte est néanmoins contenu dans sa totalité dans la cellule où il a
été tapé.
Par défaut, les textes sont alignés à gauche.

B. Saisir un chiffre
Pour saisir un chiffre, utilisez le pavé numérique situé sur la partie droite du clavier. Il faut
que le bouton VERR NUM soit allumé pour que les chiffres apparaissent.
Par défaut, les chiffres sont alignés à droite. Il est inutile de saisir les zéros après la virgule
car Excel ne les mémorisent pas.

C. Saisir une date ou une heure

Arsène AYI / www.arsene-ayi.info Page 12 / 51


ESPC / Cours de Programmation VBA Semestre 4

Pour saisir une date, il faut saisir les barres de fractionnement entre les le jour, le mois et
l’année (/). Pour saisir une heure, il faut ajouter les deux points entre les heures et les
minutes.

NB : En appuyant sur la touche CTRL et la touche « point – point-virgule » (. - ;), vous


insérez la date système. En appuyant sur la touche CTRL et la touche « slash – deux
points » (/ - :), vous insérez l’heure système.

D. Modifier une donnée saisie


Pour modifier une donnée saisie, il faut se placer sur la cellule à modifier avec les
flèches de direction ou en cliquant sur la cellule. Ensuite, pour modifier la cellule, vous
avez deux solutions :

✓ En appuyant sur la touche F2 pour passer en mode « saisie / modification », le


curseur se place alors en fin de cellule. Il suffit alors de déplacer le curseur à
l’endroit où l’on veut corriger l’erreur. Ensuite, il faut supprimer le ou les mauvais
caractères et le ou les remplacé(s).
✓ En cliquant dans la barre de formule. Il suffit alors de déplacer le curseur à l’endroit
où l’on veut corriger l’erreur. Ensuite, il faut supprimer le ou les mauvais caractères
et le ou les remplacé(s).
Pour valider la modification, vous devez obligatoirement appuyer sur la touche ENTREE du
clavier.
E. Se déplacer dans un classeur
Pour se déplacer d’une feuille à une autre dans un classeur Microsoft Excel, il suffit
de cliquer sur l’onglet « Feuil » situé en bas à gauche de la fenêtre Excel. Vous verrez
apparaître alors une feuille complètement vierge.

F. Sélectionner des cellules


1- Sélectionner une cellule
Pour sélectionner une cellule, il faut se déplacer soit avec les flèches de direction
soit en cliquant sur la cellule en question.

Si vous voulez sélectionner par exemple la cellule DE12012, vous pouvez le faire avec les
flèches de direction mais ça sera assez long. Excel nous offre une possibilité d’atteindre

Arsène AYI / www.arsene-ayi.info Page 13 / 51


ESPC / Cours de Programmation VBA Semestre 4

une cellule rapidement. Choisissez Atteindre dans le groupe Edition contenu dans l’onglet
Accueil. La boîte de dialogue suivante apparaît :

Dans la zone référence, saisissez la référence de la cellule que vous voulez atteindre, puis
cliquez sur le bouton OK. Excel, vous place alors à l’endroit que vous lui avez indiqué.

2- Sélectionner une plage de cellule


La sélection de plusieurs cellules permet de changer par exemple la police
d’écriture ou la taille et évite ainsi de faire et refaire les mêmes manipulations pour
chaque cellule. Pour sélectionner une plage de cellule, vous avez deux solutions :
✓ Avec le clavier : Sélectionnez la première cellule puis tout en maintenant la touche
SHIFT enfoncée (celles au-dessus des touches CTRL), déplacez-vous avec les
flèches de direction
✓ Avec la souris : Placez-vous sur la première cellule qui fera partie de la sélection.
Puis en cliquant et en tenant cliquez, déplacez la souris jusqu'à la fin de votre
sélection.
L’image suivante montre une plage de cellule sélectionnée :

Pour enlever la sélection, il suffit soit de cliquer à un endroit sur la feuille, soit se déplacer
avec une des flèches de direction.

3- Sélectionner plusieurs cellules non adjacentes


Les cellules non adjacentes se sont des cellules qui ne se touchent pas. La
sélection des cellules non adjacentes se fait en même temps avec le clavier et la souris.
Pour sélectionner des cellules non adjacentes, il faut sélectionner la première cellule puis

Arsène AYI / www.arsene-ayi.info Page 14 / 51


ESPC / Cours de Programmation VBA Semestre 4

tout en maintenant la touche CTRL enfoncée, il faut cliquer sur les cellules que l’on veut
sélectionner. L’image suivante vous montre la sélection de cellule non adjacente :

4- Sélectionner une ligne


Pour sélectionner une ligne, il suffit de cliquer sur le numéro de la ligne que l’on
veut sélectionner. L’image suivante vous montre la sélection d’une ligne :

5- Sélectionner plusieurs lignes


Pour sélectionner plusieurs lignes, il suffit de cliquer sur la première ligne que l’on
veut sélectionner. Tout en maintenant le clic enfoncé, il suffit de déplacer la souris sur la
ligne du dessus ou du dessous : L’image suivante vous montre la sélection de plusieurs
lignes :

6- Sélectionner une colonne


Comme pour sélectionner une ligne, il faut cliquer sur le numéro de la colonne que
l’on veut sélectionner. L’image suivante vous montre la sélection d’une colonne :

7- Sélectionner plusieurs colonnes

Arsène AYI / www.arsene-ayi.info Page 15 / 51


ESPC / Cours de Programmation VBA Semestre 4

Comme pour la sélection de plusieurs lignes, il faut cliquer sur la première colonne
que l’on veut sélectionner. Tout en maintenant le clic enfoncé, il suffit de déplacer la souris
vers la droite ou vers la gauche. L’image suivante vous montre la sélection de plusieurs
colonnes :

8- Sélectionner toutes les cellules de la feuille


Pour sélectionner toutes les cellules d’une feuille, il suffit de placer la souris à
l’intersection de la première ligne et de la première colonne. C’est un petit carré gris se
situant juste en dessous de la cellule de la référence active dans la barre de formule.
L’image suivante vous montre la sélection de toutes les cellules de la feuille :

G. Modifier un tableau
1- Déplacer une cellule
Si vous avez saisi du texte dans une cellule et que vous vous êtes trompés de
cellule, il n’est pas nécessaire de supprimer tout ce qu’il y a dans la cellule et de le retaper
dans une autre cellule. Pour déplacer une cellule, sélectionner la cellule que vous voulez
déplacer. Mettez votre souris sur un des bords de la cellule puis cliquer. Tout en
maintenant cliquer, déplacer la cellule sur la cellule en question.

2- Recopier une donnée


a- Recopier une donnée
Pour recopier une donnée (donnée alphanumérique ou numérique) d’une cellule à
une autre cellule, il suffit de sélectionner la cellule la cellule que l’on veut copier puis de
choisir Copier dans le groupe Presse-papiers contenu dans l’onglet Accueil (ou en
appuyant sur les touches CTRL+C du clavier). Ensuite, il faut se placer à l’endroit où l’on
veut placer ce que nous venons de copier et de choisir Coller dans le groupe Presse-
papiers contenu dans l’onglet Accueil (ou en appuyant sur les touches CTRL+V du
clavier).

b- Créer une série de données


Vous avez la possibilité avec Excel de créer une série de données. Une série de
donnée c’est une suite logique. Par exemple Lundi, Mardi, … où 01 janvier, 02 janvier. Pour
créer une série de donnée, saisissez dans une cellule Lundi puis validez la cellule et retournez-
y dessus. Maintenant, placez la souris en bas à droite de la cellule sélectionnée sur un petit
Arsène AYI / www.arsene-ayi.info Page 16 / 51
ESPC / Cours de Programmation VBA Semestre 4

carré noir. La souris devient un petit + noir. Maintenant, cliquez et déplacez dans les cellules
de droites ou du dessous. Normalement, une suite logique vient de se former.

Remarque : Cette technique est très employée pour copier des formules de calcul assez
complexe.

3- Insérer une cellule


Insérer une cellule entre une autre cellule permet de libérer une place entre deux
cellules. Pour insérer une cellule, il suffit de cliquer sur la flèche situé juste à côté de l’outil
Insérer dans le groupe Cellules localisé dans l’onglet Accueil. Sélectionnez ensuite

insérer des cellules dans le menu déroulant.


La boîte de dialogue suivante apparaît :

Choisissez le bouton « Décaler les cellules vers la droite » ou « décaler les cellules vers le
bas » puis cliquez sur le bouton OK.
4- Supprimer une cellule
Pour supprimer une cellule de la feuille sur laquelle vous êtes en train de travailler,
il suffit de cliquer sur la flèche situé juste à côté de l’outil Supprimer dans le groupe
Cellules localisé dans l’onglet Accueil. Sélectionnez ensuite Supprimer des cellules dans
le menu déroulant. Voici les boîtes de dialogue due vous devez avoir :

Comme pour l’insertion de cellule, choisissez l’option que vous voulez.

Arsène AYI / www.arsene-ayi.info Page 17 / 51


ESPC / Cours de Programmation VBA Semestre 4

CHAPITRE III : FAIRE LES CALCULS SOUS MS OFFICE EXCEL


I. Créer un calcul simple
1ère règle : Tout calcul commence obligatoirement par le signe =
2ème règle : On ne calcul les nombres qui se trouvent à l’intérieur des cellules mais on
calcul les cellules c’est-à-dire que l’on additionne par exemple la cellule A1+B1. On ne
regarde pas les nombres qui se trouvent à l’intérieur des cellules.
3ème règle : Le calcul se fait dans une cellule différente des cellules qui permettent de
réaliser le calcul.
4ème règle : Pour valider un calcul, il faut obligatoirement appuyer sur la touche ENTREE
Exemple : Placez la valeur 10 dans la cellule A1 puis déplacez-vous avec la flèche de
direction qui va vers la droite sur la cellule B1. La cellule A1 a été alors validée et saisissez
20 puis déplacez-vous avec la flèche de direction qui va vers la droite sur la cellule C1. La
cellule B1 a été validée.
Nous allons donc réaliser le calcul dans la cellule C1. Dans celle-ci, tapez le signe
= puis soit avec la souris soit avec la flèche de direction qui va vers la gauche (en appuyant
deux fois dessus), positionnez-vous sur la cellule A1. La cellule A1 est entourée de
pointillé et dans la cellule C1, il est inscrit =A1. Nous voulons additionner les deux cellules
donc, il faut taper le signe +. Dans la cellule C1, il est inscrit =A1+. Maintenant, il nous
reste plus qu’à additionner la cellule B1. Avec la souris ou la flèche de direction qui va vers
la gauche (en appuyant une fois dessus), positionnez-vous sur la cellule B1. Dans la
cellule C1, il est inscrit =A1+B1. L’image suivante vous montre le calcul final :

Maintenant, il ne vous reste plus qu’à appuyer sur la touche ENTREE.

II. Les opérateurs et fonctions Excel


opérateurs opérateurs
Commentaires Commentaires
arithmétiques logiques

+ addition = égal à
> supérieur à
- soustraction < inférieur à
* multiplication >= supérieur ou égal à
/ Division <= inférieur ou égal à
^ élévation à la puissance <> différent de

Arsène AYI / www.arsene-ayi.info Page 18 / 51


ESPC / Cours de Programmation VBA Semestre 4

Exemples de
Fonctions Commentaires
syntaxe
addition =B7+B8 additionne le contenu des cellules B7 et B8
soustraction =C5-C8 soustrait le contenu de la fonction C8 du contenu
de la cellule C5
multiplication =A5*A7 multiplie le contenu de la cellule A5 par celui de la
cellule A7
division =F5/F6 divise le contenu de la cellule F5 par celui de la
cellule F6
somme =SOMME(A5:A8) effectue la somme des cellules A5 à A8
produit =PRODUIT(E4:E9) effectue le produit des cellules E4 à E9
maximum =MAX(R5:R9) sélectionne le plus grand contenu des cellules R5
à R9
Minimum =MIN(E5:E12) sélectionne le plus petit contenu des cellules E5 à
E12
moyenne =MOYENNE(A2:A15) calcule la moyenne arithmétique des cellules A2 à
A15

III. Utiliser une fonction de calcul


Une fonction de calcul est un assistant qui va vous permettre de réaliser des calculs
compliqués simplement. Pour utiliser, l’assistant calcul il suffit de choisir Fonctions dans

le menu Insertion ou de cliquer sur l’icône suivant dans l’onglet Formules. La boîte
de dialogue suivante apparaît :

Il suffit de sélectionner une catégorie pour voir les fonctions de cette catégorie apparaître
au bas de la fenêtre. Voici quelques fonctions intéressantes :

A- Fonction SOMME

Arsène AYI / www.arsene-ayi.info Page 19 / 51


ESPC / Cours de Programmation VBA Semestre 4

La fonction SOMME additionne, une liste de cellule les unes à la suite des autres.
C’est comme si on faisait une addition.

Les lignes 1 et 2 font l’addition des colonnes A, B et C. Grâce à la fonction SOMME, le


calcul est fait beaucoup plus rapidement. On peut remarquer aussi que lorsqu’on insère
une fonction le signe = se place automatiquement dans la barre de formule suivie du nom
de la fonction. Derrière le nom de la fonction une parenthèse est ouverte. Ici, on va
chercher la première cellule que l’on veut additionner (A2) puis Excel ajoute les deux points
(:) qui veut dire « jusqu'à » puis on fait glisser la souris jusqu'à la dernière cellule à
additionner (C2). Il suffit de cliquer ensuite sur le bouton OK.
C’est une fonction qui additionne tous les nombres contenus dans une plage de cellules.
Syntaxe : =SOMME(nombre1; nombre2;...)
nombre1, nombre2, ... représentent de 1 à 30 arguments dont vous voulez calculer la
valeur totale ou somme.
B- La fonction MOYENNE
La fonction MOYENNE permet de calculer la moyenne de plusieurs cellules. Nous
voulons calculer la moyenne de la cellule A1 à C1 :
Si Excel ne vous propose pas les bonnes cellules qui vont vous permettre de calculer une
moyenne, il faut que vous les sélectionnées. Une fois sélectionnée, il suffit de cliquer sur
le bouton OK. En cellule D1, apparaîtra, la moyenne de ces 3 cellules.

L’image suivante vous montre comment s’écrit la fonction moyenne :

Arsène AYI / www.arsene-ayi.info Page 20 / 51


ESPC / Cours de Programmation VBA Semestre 4

Cette fonction renvoie la moyenne (arithmétique) des arguments.


Syntaxe : =MOYENNE(nombre1; nombre2 ;...)
nombre1,nombre2, ... représentent les 1 à 30 arguments numériques dont vous voulez
obtenir la moyenne.

C- La fonction MAX
La fonction MAX donne la valeur maximale d’une plage de cellule. Si dans la plage
sélectionnée, il n’y a aucune valeur, la fonction MAX renvoie la valeur 0.

Dans la cellule D1, la valeur qui sera renvoyée par la fonction MAX sera 15.

D- La fonction MIN
La fonction MIN donne la valeur minimale d’une plage de cellule. Si dans la plage
sélectionnée, il n’y a aucune valeur, la fonction MIN renvoie la valeur 0.

Dans la cellule D1, la valeur qui sera renvoyée par la fonction MIN sera 6.

E- La fonction concaténation () ou la fonction &


Assemble plusieurs chaînes de caractères afin d’en former qu’une seule chaîne.
Syntaxe : =concatene(chaîne1 ; chaîne2, ….) ou chaîne 1 & chaîne 2 &…..
Où chaîne est une chaîne de caractères ou une référence à une cellule contenant du texte.
Dans Excel, toute chaîne de caractères doit être écrite entre guillemets. Par exemple :
″Bonjour″ & ″ ″ & ″ Véro″ donnera comme résultat la chaîne : ″Bonjour Véro″.

F- La fonction NB()

Arsène AYI / www.arsene-ayi.info Page 21 / 51


ESPC / Cours de Programmation VBA Semestre 4

Il permet d’obtenir le nombre d’entrées numériques dans un champ numérique d’une plage
ou d'une matrice de nombres.
Syntaxe : =NB(valeur1;valeur2;...)
valeur1,valeur2, ... représentent les 1 à 30 arguments qui peuvent contenir ou référer
à différents types de données, mais seuls les nombres sont comptés.

G- La fonction NBVAL()
Cette fonction compte le nombre de cellules qui ne sont pas vides.
Syntaxe : =NBVAL(valeur1;valeur2;...)
valeur1,valeur2, ... représentent les 1 à 30 arguments correspondant aux valeurs à
compter
H- La fonction NB.SI()
Compte le nombre de cellules à l'intérieur d'une plage qui répondent à un critère donné.
Syntaxe : =NB.SI(plage; critère)
Plage : représente la plage de cellules dans laquelle vous voulez compter les cellules.
Critère : représente le critère, ex primé sous forme de nombre, d'expression ou de texte,
qui détermine les cellules à compter.
Exemple :
=NB.SI(plage,"pommes") : Nombre de cellules contenant pommes dans la plage

=NB.SI(palge,">55") : Nombre de cellules dont la valeur est supérieure à 55 dans la plage

I- Les fonctions BDNBVAL() et BDSOMME()


Compte (resp. somme) toutes les cellules non vides contenues dans une colonne d'une
liste ou d'une base de données qui répondent aux conditions spécifiées.
Syntaxe : =BDNBVAL(base de données; champ; critères)

• base de données : représente la plage de cellules qui constitue la liste ou la base de


données. Une base de données est une liste de données liées dans laquelle les lignes
d'informations liées sont des enregistrements et les colonnes de données sont des
champs. La première ligne de la liste contient les étiquettes de chaque colonne.

• champ : indique la colonne utilisée dans la f onction. Vous pouvez spécifier l'argument
champ sous forme de texte en mettant l'étiquette de colon ne entre guillemets, par
exemple, "Age" ou "Rendement", ou sous forme d'un nombre représentant la position de
la colonne dans la liste : 1 pour la première colonne, 2 pour la deuxième colonne et ainsi
de suite.

• critères : représente la plage de cellules qui contient les conditions spécifiées. Vous
pouvez utiliser n' importe quelle plage comme argument critères, à condition toutefois

Arsène AYI / www.arsene-ayi.info Page 22 / 51


ESPC / Cours de Programmation VBA Semestre 4

qu'elle comprenne au moins une étiquette de colonne et au moins une cellule située
sous l'étiquette de colonne pour spécifier la condition.

J- La Fonction Logique Si()


Elle est composée de 3 arguments :
▪ le test
▪ ce qui apparaitra dans la cellule où l'on construit la formule si la réponse au test
est
OUI (ou VRAI)
▪ ce qui apparaîtra dans a cellule où l'on construit la formule si la réponse au test est
NON (ou FAUX)
Syntaxe: =SI(Condition; action si condition vérifiée; action si condition non vérifiée)
La condition (ou test) se fait toujours en comparant 2 choses (2 cellules entre elles, le
contenu d'une cellule avec un nombre ou un texte, 2 calculs, etc... Au niveau des conditions
plusieurs opérateurs sont utilisables : l’égalité (=), supérieur à (>), inférieur à (<),
différent de (<>), supérieur ou égal (>=), à inférieur ou égal à (<=).
La réponse à la question posée dans le test ne pourra avoir que 2 résultats : VRAI ou FAUX.
C’est une fonction qui n’autorise que 2 réponses possibles VRAI ou FAUX. Si le problème
à résoudre comporte 3 réponses possibles, il faudra procéder par élimination en utilisant,
successivement, 2 fonctions SI(). Les 2 fonctions seront alors imbriquées.
Syntaxe: =SI(Test1; vrai test 1; SI (test2; vrai test2; faux test2))
La 2ème fonction SI() s'exécutera si (et seulement si) la réponse au TEST1 est "FAUX"

K- Les fonctions ET() et OU()


Elles s'utilisent en combinaison avec la fonction SI(). La fonction SI() cherche à déterminer
quelle action sera réalisée en fonction d'une condition (ou test) posée.

Les fonctions ET() et OU() vont être utilisées dans la condition (ou test) posée en fonction
du résultat attendu

➢ La fonction ET().
Les conditions posées seront multiples et pour que la réponse aux conditions soit "VRAI",
il faudra qu’elles se vérifient toutes.
Syntaxe: =SI(ET(Cond1;Cond2;...;CondN);action à réaliser si les N conditions sont
satisfaites;action à réaliser si au moins une des conditions n'est pas satisfaite)

➢ La fonction OU()
Les conditions posées seront multiples et pour que la réponse aux conditions soit "VRAI",
il faudra que l'une au moins se vérifie.

Arsène AYI / www.arsene-ayi.info Page 23 / 51


ESPC / Cours de Programmation VBA Semestre 4

Syntaxe: =SI(OU(Cond1;Cond2;...;CondN);action à réaliser si au moins une des


conditions est satisfaite;action à réaliser si aucune des conditions n'est satisfaite)

L- La fonction RECHERCHEV()
Cherche une valeur donnée dans la colonne située à l'extrême gauche d'une matrice et
renvoie une valeur correspondante dans une autre colonne. Utilisez la fonction
RECHERCHEV lorsque les valeurs sont en colonne et RECHERCHEH lorsque vos valeurs
de comparaison se trouvent en ligne.
Syntaxe : =RECHERCHEV(valeur_cherchée; table_matrice; no_index_col;
valeur_proche)
▪ valeur_cherchée est la valeur à trouver dans la première colonne de la matrice.
L'argument valeur_cherchée peut être une valeur, une référence ou une chaîne de
texte.
▪ table_matrice est la table de données dans laquelle est exécutée la recherche
de la valeur. Utilisez une référence à une plage ou un nom de plage, par exemple
Base de données ou Liste.
▪ no_index_col est le numéro de la colonne de l'argument table_matrice dont la
valeur correspondante doit être renvoyée. Si l'argument no_index_col est égal à 1,
la fonction renvoie la valeur dans la première colonne de l'argument table_matrice
; si l'argument no_index_col est égal à 2, la valeur est renvoyée dans la deuxième
colonne de l'argument table_matrice, et ainsi de suite. Si l'argument no_index_col
est inférieur à 1, la fonction RECHERCHEV renvoie la valeur d'erreur #VALEUR! Et
si l'argument no_index_col est supérieur au nombre
de colonnes de l'argument table_matrice, la fonction RECHERCHEV renvoie la
valeur d'erreur #REF!
• valeur_proche représente une valeur logique indiquant si vous souhaitez que la
fonction RECHERCHEV recherche une valeur exacte ou voisine de celle que vous avez
spécifiée. Si cet argument est VRAI ou omis, une donnée proche est renvoyée.
En d’autres termes, si aucune valeur exacte n’est trouvée, la valeur immédiatement
inférieure à valeur_cherchée est renvoyée. Si valeur_proche est FAUX, la fonction
RECHERCHEV renvoie exactement la valeur recherchée. Si aucune valeur ne correspond,
la valeur d'erreur #N/A est renvoyée.

Arsène AYI / www.arsene-ayi.info Page 24 / 51


ESPC / Cours de Programmation VBA Semestre 4

Travaux Dirigés
Mlle NATI dirige la société Palace spécialisé dans la vente de parfums et des produits de
beauté. Il désire informatiser le salaire des commerciaux. La société dispose d’une
vingtaine de commerciaux.

Les commerciaux sont rémunérés sur la base d’un salaire fixe de 8 000 FCFA par mois et
d’une prime de 12% du chiffre d’affaire réalisé par mois.

Une prime de 5% du chiffre d’affaire est ajoutée au salaire de chaque employé si le Chiffre
d’Affaire mensuel est supérieur ou égal à 70 000 FCFA.

En fin d’année un bonus de 7% du chiffre d’affaire est accordé aux commerciaux dont le
chiffre d’Affaire est supérieur ou égal à 840 000 FCFA. Ce bonus est directement ajouté
au salaire du mois de Décembre sur la fiche de l’application.

Voici la Maquette de l’application de la société Palace :

Etablir la liste des formules permettant de calculer les primes, les salaires mensuels, le
Chiffre d’Affaire Total et le Montant du bonus annuel.

Arsène AYI / www.arsene-ayi.info Page 25 / 51


ESPC / Cours de Programmation VBA Semestre 4

Chapitre IV : INTRODUCTION AU VISUAL BASIC POUR


APPLICATION
I. Définition
L’ensemble des logiciels de la suite Microsoft Office utilise un langage de programmation
intégré appelé Visual Basic for Applications (VBA). C’est un langage Visual Basic simplifié
couplé au modèle objet de l’application Office qui le contient.
Le VBA (Visual Basic for Applications) est un langage proche du Visual Basic qui nécessite
une application hôte pour s'exécuter (Excel dans notre cas).
Grâce au VBA nous allons pouvoir réaliser à peu près tout ce que l'on souhaite avec Excel
...
Mais avant de commencer, commençons par afficher les outils qui nous seront utiles.
Si vous utilisez la version 2007 d'Excel (ou une version supérieure), cliquez sur l’Onglet
Accueil (Fichier) > Options > Personnaliser le Ruban puis cochez "Développeur". Un
nouvel onglet sera ajouté

Si vous utilisez une version d'Excel antérieure à 2007, ajoutez les barres "Boîtes à
outils Contrôles" et "Formulaires" :

Arsène AYI / www.arsene-ayi.info Page 26 / 51


ESPC / Cours de Programmation VBA Semestre 4

Pour travailler avec du code VBA, nous avons besoin d'un éditeur, celui-ci est déjà
installé et vous pouvez l'ouvrir avec le raccourci "Alt F11" :

II. Présentation de l’environnement de développement


L’environnement de développement de VBA est intégré à l’application Office. Il
existe deux façons d’y accéder volontairement. Généralement on y accède en choisissant
l’onglet ‘’ développeurs ou par le raccourci clavier Alt + F11.
▪ Pour l’office 2007 on n’a :

▪ Pour l’office 2010 ou 2013 on n’a :

L’éditeur se présente comme suit :

Arsène AYI / www.arsene-ayi.info Page 27 / 51


ESPC / Cours de Programmation VBA Semestre 4

1) Les projets
Une application sous Excel est appelée projet. Un projet regroupe, un ensemble
d'éléments comprenant des objets Microsoft Excel, qui sont les feuilles de calcul du
classeur considéré, des boîtes de dialogue, des modules et des modules de classe. Un
projet est rattaché en fait à chaque classeur, et contient toutes les feuilles du classeur,
mais aussi les éventuels modules, les boîtes de dialogue, etc. comme on le verra par la
suite. Tout programme VBA un tant soit peu complexe contient plusieurs de ces éléments.
La commande Affichage/Explorateur de projet fait apparaître une fenêtre permettant
d'explorer les projets de tous les classeurs ouverts. Par défaut, le projet associé à un
classeur quelconque s'appelle VBA Project.

2) Les procédures
En Visual Basic, une unité de programme s’appelle une procédure, ou une macro. Une
procédure est une liste d’instructions, en nombre généralement restreint, respectant la
syntaxe du langage Visual Basic, et auxquelles on a donné un nom.
Une procédure commence par Sub et termine par End Sub. Elle exécute des actions mais
ne renvoie pas de valeurs.
Une macro comporte une suite d’instructions qui vont s’exécuter les unes après les
autres. La première ligne indique le nom de la macro et (éventuellement) les variables
qu’elle doit traiter et la dernière ligne termine toujours par End Sub.

Arsène AYI / www.arsene-ayi.info Page 28 / 51


ESPC / Cours de Programmation VBA Semestre 4

Exemple1:
Sub Essai()
Suite d’instructions
‘commentaires éventuels
End Sub
Exemple 2: Procédure pour dire bonjour
Sub AfficherBonjour()
MsgBox "Bonjour M.AYI"
End Sub
NB
Lorsque vous taper une apostrophe ‘ le texte qui suit n’est pas considéré comme une
instruction exécutable, mais comme un commentaire. Cela permet de préciser certaines
informations utiles au programmeur.

3) Les fonctions
Une fonction répète une action bien précise. Nous allons programmer une fonction et apprendre à
l'utiliser. On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par
simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement
appelée fonction (ou procédure) dans la plupart des langages de programmation.
Une fonction accepte un ou plusieurs arguments en entrée et retourne un argument.
Elle commence par Function et se termine par End Function
En VBA, on distingue deux types de procédures :
• Les procédures Sub, ensemble d'instructions ne retournant pas de valeur
• Les procédures Function, ensemble d'instructions retournant une valeur en sortie
Les procédures permettent d'exécuter dans plusieurs parties du programme une série
d'instructions, cela permet une simplicité du code et donc une taille de programme minimale.
D'autre part, une fonction peut faire appel à elle-même, on parle alors de fonction récursive (il
ne faut pas oublier de mettre une condition de sortie au risque sinon de ne pas pouvoir arrêter
le programme...).
VBA comporte des fonctions financières et mathématiques, etc dont on peut trouver la liste
dans l’explorateur d’objets, à l’intérieur de la librairie VBA.
Néanmoins comme le montre la figure ci-dessous pour les fonctions mathématiques, le nombre
de fonctions est très modeste. Ceci est évidemment la conséquence du fait que l’on a déjà à
notre disposition l’ensemble des fonctions mathématiques, statistiques, financières, etc.
d’Excel. Pour faire appel à ces fonctions sous VBA, il convient soit de taper
Application.WorksheetFunction ou plus simplement WorksheetFunction en appliquant ceci soit
à un nombre, soit à une variable, soit à une plage. Ainsi pour calculer la racine carrée de 49, on
pourra si l’on utilise la fonction Racine (Sqrt en anglais) d’Excel soit taper directement :
WorksheetFunction.Sqrt(49)
Si 49 est par exemple la valeur contenue dans la cellule B4 alors on pourra écrire :

WorksheetFunction.Sqrt(Range(‘‘B4’’))
Arsène AYI / www.arsene-ayi.info Page 29 / 51
ESPC / Cours de Programmation VBA Semestre 4

Ou encore :

WorksheetFunction.Sqrt(Cells(4,2))
Si 49 est la valeur affectée à une variable de type Double appelée x alors on a:

WorksheetFunction.Sqrt(x)

4) Les modules
Les modules contiennent le code d'une application. Il est possible de structurer les
programmes en plusieurs modules. Chaque module contiendra alors le code rattaché à
une action particulière. Excel offre des caractéristiques très intéressantes, qui facilitent
l'édition du code. Ainsi, le code est affiché avec différentes couleurs permettant de
différencier les mots clés ou réservés, les commentaires, etc.
De plus, la syntaxe est automatiquement vérifiée en arrière-plan et les procédures et
fonctions sont clairement séparées.
Lorsque vous quittez le module de programmation, cette macro sera incluse dans la liste
des macros, et vous pourrez en demander l’exécution. Cette macro sera liée au classeur

Arsène AYI / www.arsene-ayi.info Page 30 / 51


ESPC / Cours de Programmation VBA Semestre 4

en cours, mais son exécution pourra concerner des données contenues dans d’autres
classeurs.
5) Les boîtes de dialogue
Les boîtes de dialogue ou userforms sont des feuilles particulières, destinées à
gérer les interactions entre l'utilisateur et le programme. Lors de la conception de la boîte
de dialogue, le programmeur dispose d'un certain nombre d'objets, qu'il peut insérer dans
la boîte de dialogue. Ces objets font partie de la boîte à outils que l'on active par la
commande Affichage/Boîte à outils. Il suffit alors de sélectionner l'élément désiré et de
les créer dans la boîte de dialogue. Il appartient ensuite au programmeur d'écrire les
procédures permettant de gérer la boîte de dialogue obtenue, par exemple pour récupérer
la valeur d'une saisie réalisée dans une zone de saisie. Le code ad hoc est à placer dans
le module de classe associé à la boîte de dialogue, que l'on active par exemple par le
bouton ad hoc dans l'explorateur de projet, si la boîte en question est sélectionnée.

6) Les modules de classes


Les modules de classe sont des modules particuliers où est placé le code VBA
rattaché à un objet particulier. Un exemple typique est le module de classe ThisWorkbook
: ce contient toutes les procédures gérant le classeur en cours. Il est par exemple possible
d'écrire procédure événement associée à l'ouverture du classeur. Une telle procédure,
dont le nom est Workbook_open, devra être écrite dans le module de classe ThisWorkBook.
Un autre exemple de module de classe est le module où est stocké le code associé à
chaque boîte de dialogue. C'est également dans ce module que seront programmées les
procédures qui gèrent la boîte de dialogue.

7) Dialoguer avec l’utilisateur


✓ Pour donner une information à l’utilisateur on utilise la fonction :
MsgBox(message)
Exemple 1 :
MsgBox(« opération terminée »)
Une boite de dialogue apparaît, et reste visible jusqu’à que l’utilisateur clique « ok ». On
peut créer d’autres formes de dialogue avec MsgBox.
Exemple 2 :

✓ Pour demander une information à l’utilisateur on utilise la fonction :


InputBox(message, titre, défaut)

Arsène AYI / www.arsene-ayi.info Page 31 / 51


ESPC / Cours de Programmation VBA Semestre 4

Sub DemandeNombre(Nbre As Integer)


Dim Message as string, Titre as string, Defaut as string, Reponse as string
Message = "Entrez le nombre voulu :"
Titre = "Démonstration de InputBox" ' Définit le titre.
Defaut = "1" ' Définition la valeur par défaut.
' Affiche le message, le titre et la valeur par défaut.
Reponse = InputBox(Message, Titre, Defaut)
‘attente d’un click sur OK
Nbre = Val(Reponse)
End sub
III. Principaux mots-clés du langage VBA
VBA comprend un grand nombre d'instructions. Cette section présente quelques mots clés
importants et couramment utilisés. La plupart des mots clés présentés ici sont en fait les mêmes
que ceux utilisés dans la plupart des langages. Attention, de nombreuses instructions utiles ne
sont pas citées dans cette section rubrique Mots clés.

A- Les opérateurs
1- Opérateurs arithmétiques
Les opérateurs suivants permettent de réaliser les opérations élémentaires : + ; - ; * ; /
De plus, les opérateurs Mod et / permettent de déterminer respectivement le reste et le quotient
d'une division entière. Enfinn & permet de concaténer deux chaînes de caractères.
2- Opérateurs de comparaison
Les opérateurs suivants permettent de réaliser les comparaisons classiques : = ; <> ;< ;> ; <= ;
>=
Il n'y a donc pas de différence entre l'opérateur d'affectation et l'opérateur de comparaison. Les
opérateurs Like et Is permettent, de plus, respectivement de comparer deux chaînes de
caractères et deux variables de type objet.
3- Opérateurs logiques
Les principaux opérateurs suivants permettent les opérations classiques : Not ; And ; Or ; Xor
4- Structures conditionnelles
a) If Then Else ElseIf
L'instruction If Then Else permet d'écrire une structure conditionnelle.
La syntaxe est la suivante :
If <condition> then
<instruction1>
Else
<instruction2>
End If
Arsène AYI / www.arsene-ayi.info Page 32 / 51
ESPC / Cours de Programmation VBA Semestre 4

Lorsque la condition est réalisée, la première suite d'instructions est exécutée. Dans le cas
contraire, c'est bien sûr la deuxième suite d’instructions qui est exécutée. Noter que l'instruction
Else est facultative.
Dans le cas où il est nécessaire d'imbriquer plusieurs structures conditionnelles, on peut utiliser
l'instruction ElseIf :
If <condition> Then
<instructions>
ElseIf <condition>
<instructions>
End If
Remarque :
La structure conditionnelle ne présente qu'une instruction, il est également possible de l'écrire
sur une seule ligne en omettant l'instruction End If. La syntaxe proposée ici a l'avantage d'être
plus claire et de permettre le rajout ultérieur d'instructions supplémentaires.
b) Select Case
L'instruction Select Case permet d'écrire une structure conditionnelle dans laquelle une
expression doit être comparée à plusieurs valeurs. Elle remplace alors avantageusement
l'instruction ElseIf. La syntaxe est la suivante :
Select Case <variable>
Case valeur1:
<instructions>
Case valeur2:
<instructions>
...
Case Else:
<instructions>
End Select
Lorsque la variable est égale à une valeur répertoriée, les instructions correspondantes sont
exécutées, et l'instruction Select Case se termine. La ligne Case Else permet d'inclure toutes les
occurrences de la variable non répertoriées auparavant. Elle est facultative.
5- Les Boucles
a) Do While Loop
L'instruction Do While Loop permet de réaliser une boucle conditionnelle. La syntaxe est la
suivante :
Do While <condition>
<instructions>
Loop
La condition est évaluée au début du traitement. Si elle est vraie, les instructions sont exécutées.
Ensuite la condition est réévaluée, et ainsi de suite.
b) Do Until Loop

Arsène AYI / www.arsene-ayi.info Page 33 / 51


ESPC / Cours de Programmation VBA Semestre 4

L'instruction Do Until Loop est similaire à Do While Loop. Cependant, les instructions
contenues dans le corps de l'instruction sont d'abord exécutées, à la suite de quoi la condition
est évaluée. La syntaxe est donc la suivante :
Do
<instructions>
Loop Until <condition>
c) For Step Next
L'instruction For Step Next est utilisée pour répéter une action selon un nombre d'itérations
déterminé. La syntaxe est la suivante :
For <variable> = valeur1 To valeur2 Step <pas>
<Instructions>
Next <variable>
Step sert à indiquer le pas d'itération. Cette précision est toutefois facultative : par défaut, la
valeur du pas utilisé est 1.
d) For Each In Next
For Each In Next est une variante de l'instruction For Step Next. Elle permet de réaliser une
itération en parcourant tous les objets contenus dans une collection. La syntaxe est la suivante:
For Each <objet> In <collection>
<instructions>
Next <object>
Le code suivant permet par exemple de renommer toutes les feuilles de calcul du classeur actif:
Dim i As Integer
Dim feuille As sheet
...
i=0
For Each feuille In ActiveWorkbook.Sheets
i=i+1
'Cstr (i) permet de convertir l'entier i en une chaîne de caractères
feuille.Name = "Feuil" + CStr(i)
Next feuille
A noter dans le programme ci-dessus la ligne de commentaire introduite par une apostrophe.
6- Gestion des programmes
a) Exit
Arsène AYI / www.arsene-ayi.info Page 34 / 51
ESPC / Cours de Programmation VBA Semestre 4

L'instruction Exit permet de sortir de la séquence en cours. Par exemple, pour terminer
prématurément une procédure, on écrira :
Sub essai()
...
If <condition> Then
Exit Sub
End If
...
End Sub
De même, les commandes Exit Do et Exit Next permettent de quitter une structure
conditionnelle et une boucle For Next.
b) End et Stop
L'instruction End permet de mettre fin à une séquence, comme on l'a déjà vu avec les
instructions End Sub, End Function ou End If.
L'emploi de End de façon isolée est plus intéressant et permet de mettre fin au programme en
cours, en éliminant de la mémoire les variables utilisées, les boîtes de dialogue éventuellement
chargées, les fichiers ouverts par la commande Open, etc.
En effet, par défaut, toutes ces informations sont conservées en mémoire à la fin de l'exécution
d'un programme.
L'instruction Stop stoppera de façon analogue le programme en cours, mais conservera cette
fois l'ensemble des informations en cours.
c) On Error GoTo
L'instruction On Error Goto permet de gérer les erreurs qui peuvent apparaître dans un
programme. Le programmeur a ainsi la possibilité de prévoir les erreurs possibles, en réagissant
en conséquence. La syntaxe est la suivante :
Sub essai()
On Error GoTo <étiquette>
...
<étiquette>:
'traitement de l'erreur
End Sub
L'instruction On Error GoTo 0 permet à tout moment d'invalider le contrôle des erreurs par la
séquence On Error GoTo. Pour traiter correctement l'erreur, il est possible d'utiliser la
propriété Number de l'objet Err.

Arsène AYI / www.arsene-ayi.info Page 35 / 51


ESPC / Cours de Programmation VBA Semestre 4

Celle-ci renvoie le numéro d'erreur. Enfin, l'instruction Resume permet de reprendre le cours
normal du programme en ignorant la cause de l'erreur et la commande On Error Resume Next
permet d'ignorer systématiquement les erreurs, en sautant les instructions correspondantes.
Voici une illustration du mécanisme de traitement des erreurs
Sub essai()
Dim i As Integer
On Error GoTo erreur
'ouverture du fichier 'classeur1.xls'
Workbooks.Open ("classeur1.xls")
...
erreur:
'message d'information
i = MsgBox("Impossible d'ouvrir le fichier 'classeur1.xls'!", vbCritical)
'reprise du programme
Resume
End Sub
7- Conversion de types
Il est parfois nécessaire d'opérer des conversions de types. VBA permet d'effectuer ces
opérations grâce à une série d'instructions, dont voici quelques exemples :
▪ CInt : conversion en type de données entier ;
▪ CStr : conversion en type de données string ;
▪ CBdl : conversion en type de données double ;
▪ CDate : conversion en type de données date ;
▪ CVar : conversion en type de données variant.

Arsène AYI / www.arsene-ayi.info Page 36 / 51


ESPC / Cours de Programmation VBA Semestre 4

Chapitre V : DECLARATION DES VARIABLES ET DES


CONSTANTES EN VBA
I. Les variables
En programmation, on entend par variable une donnée définie dans un contexte
donné ayant un type défini. Une variable est la représentation d’une valeur donnée.
On appelle déclaration le fait de définir la variable avant de l’utiliser: le fait de lui
donner un nom et un type. Une variable permet de stoker une valeur pouvant être
modifié au cours de l’exécution du programme.

En VB, la déclaration des variables n’est pas obligatoire tant que l’option Explicit
n’est pas activée. La déclaration des variables en VB est de la forme suivante :

Instruction de déclaration - Nom de la variable - As – Type de la variable

• Les Types de la variable


Les différents types de variables les plus utilisés :
BOOLEAN : ne peut prendre que 2 valeurs : true (1 ou -1) ou false (0)
INTEGER : nombre entier (entre - 32768 et 32768)
LONG : entier long
DOUBLE : nombre décimal ( : double précision)
STRING : chaîne de caractères alphanumériques
Une variable a un nom (X, Y, Taille, Nom), un type et un contenu. Il faut
dimensionner (déclarer) une variable avant de l’utiliser, avec l’instruction DIM

Cette instruction réserve un emplacement en mémoire pour la variable déclarée.


On peut imaginer une variable comme un « récipient » qui a un nom et un contenu.
• Exemple :
DIM X as double, Y as double
X = 10
La variable X de type décimal, contient la valeur 10
Le X fait référence au nom de la variable (le récipient)
Y = X*3.1
La variable Y de type décimal contient 31
Le Y fait référence au nom de la variable (le récipient)
Le X fait référence au contenu du récipient nommé X,

Arsène AYI / www.arsene-ayi.info Page 37 / 51


ESPC / Cours de Programmation VBA Semestre 4

X=X+1
La variable X contient 11
Ici, le X à gauche du signe = fait référence au « récipient » tandis que le X à
droite fait référence à son contenu.

Remarque
Le signe « = » est une instruction d’affectation (et non de comparaison). Cette
instruction se lit donc comme : « mettre dans le récipient X son contenu plus 1 »
Il est évident qu’on ne peut pas mettre dans une variable des valeurs d’un autre
type
Par exemple :
DIM X as Integer
X = « Hello », produit une erreur car on essaie de mettre une chaîne de caractères
dans une variable de type numérique de même :
DIM Montexte as String
Montexte = 10

Cette deuxième déclaration va également produit une erreur.

Il faut donc faire attention lorsqu’on veut mettre le contenu d’une cellule dans une
variable.
Le nom d’une variable doit commencer par une lettre, et ne doit ensuite contenir que des
lettres ou des chiffres (surtout pas d’espace, ni de lettre accentuées comme é, à, …)
Les lettres minuscules ou majuscules ne sont pas différenciées
Il est conseillé de donner des noms qui évoquent le contenu de la variable (exemple : Moy).
Cela facilite simplement la lecture du programme mais ce n’est pas obligatoire.
Les types de données utilisés pour les variables en VBA sont récapitulés dans le tableau
ci-dessous :

Arsène AYI / www.arsene-ayi.info Page 38 / 51


ESPC / Cours de Programmation VBA Semestre 4

II. Les constantes


Une constante permet d’attribuer un nom à une valeur fixe. Elle a la même portée qu’une
variable.
Au cours de l’exécution d’un programme, la valeur d’une variable peut être redéfinie. Si l’on
veut maintenir constante la valeur d’un paramètre, il est alors souhaitable de la définir comme
une constante. Elle se déclare à l’aide du mot clé Const comme suit :
Const NomConstante [As Type] = valeur
Ainsi par exemple si le taux de remise sur les commandes d’un client est supposé avoir une
valeur constante égale à 5%, on pourra au début du programme écrire par exemple :

Const remise=0.05
Dans l’exécution du programme il sera alors impossible d’exécuter une nouvelle affectation de
valeur à la variable remise.
Il existe aussi des constantes prédéfinies. Selon qu’elles sont des constantes d’Excel, de VBA
ou d’Office, elles comportent le préficexe xl, vb ou mso.
Ainsi, sous VBA, les couleurs sont définies par les constantes vbRed, vbGreen, vbGrey,etc. .
Sous Excel, les directions des déplacements verticaux vers le haut ou vers le bas sont définies
par les constantes xlUp et xlDown, tandis que les directions horizontales vers la gauche et vers
la droite sont définies par les constantes xlToLeft et xlToRight.

Arsène AYI / www.arsene-ayi.info Page 39 / 51


ESPC / Cours de Programmation VBA Semestre 4

III. Les outils d’interactions


Dans l’exécution d’un programme, il est parfois nécessaire que l’utilisateur fixe la valeur de
certains paramètres. Pour réaliser cette interaction entre l’ordinateur et l’utilisateur, Visual
Basic sous Excel met à la disposition plusieurs outils d’interaction dont les deux plus simples
sont :
• la MsgBox ;
• l’InputBox.
1- La MsgBox
MsgBox est une boite de dialogue qui permet en réponse à une question d’apporter différentes
réponses codées (oui, non, etc.). Les arguments sous VBA de la commande MsgBox sont
notamment :

❖ le message lui-même (seul argument obligatoire) ;


❖ les boutons à afficher ;
❖ le titre de la boîte de dialogue ;
La disposition pour ces trois éléments est la suivante:

MsgBox(message,[boutons],[titre],[autresvariables])

où les variables entre crochets sont optionnelles.


Le message est une variable de type string (chaîne de caractères) qui peut simplement être une
question entre guillemets.
Les boutons sont codifiés et peuvent notamment prendre les valeurs suivantes:

• vbYesOnly (la boîte de dialogue comprend un seul bouton) ;


• vbYesNo (la boîte de dialogue comprend deux boutons oui et non) ;
• vbYesNoCancel (la boîte de dialogue comprend trois boutons oui, non et annulation).
Le titre est une variable de type string à préciser.
Les différentes apparences de la boîte de dialogue selon les arguments de MsgBox sont :
✓ MsgBox(“message”)

✓ MsgBox(“message”,“sélection”)

Arsène AYI / www.arsene-ayi.info Page 40 / 51


ESPC / Cours de Programmation VBA Semestre 4

✓ MsgBox(“message”,vbYesNo,“sélection”)

✓ MsgBox(“message ”,vbYesNoCancel,“sélection”)

Lorsque les boutons comportent un choix, par exemple pour vbYesNo ou vbYesNoCancel, il
est nécessaire de stocker la réponse dans un objet (soit une variable de type string, soit de type
variant). La valeur stockée sera alors soit vbYes, soit vbNo, soit vbCancel et on peut alors
utiliser cette valeur pour construire une boucle de contrôle conditionnellement à cette valeur
dans le programme.

2- L’InputBox
MsgBox permet seulement des réponses codées binaires (oui/non) ou ternaires
(oui/non/annulation). Parfois il est nécessaire de renvoyer une réponse qui soit un nombre ou
un mot. Pour donner ces réponses, on peut utiliser l’autre boîte de dialogue qu’est l’inputBox.
Un exemple utilisant l’InputBox est celui représenté sur la figure ci-dessous :

L’input comporte un titre (”nom de la feuille ”), un contenu (”Entrez le nom de la feuille que
vous voulez activer ”), une zone de saisie où l’on peut taper la réponse souhaitée, et enfin deux
boutons pour terminer l’utilisation de l’inputBox (avec les deux boutons OK, annuler). Même
si d’autres arguments peuvent être définis, ceux cités peuvent suffire pour la plupart des
applications. Pour obtenir l’inputBox de la feuille, on a tapé :
q=InputBox(’’ Entrez le nom de la feuille que vous voulez activer ’’, ’’ nom de la feuille ’’)
q est la variable dans laquelle on va stocker la réponse. Elle peut être soit une variable de type
variant, soit selon la nature de la réponse une variable de type string (pour les chaînes de
caractère), de type integer, double pour les nombres, etc.

Arsène AYI / www.arsene-ayi.info Page 41 / 51


ESPC / Cours de Programmation VBA Semestre 4

CHAPITRE VII : QUELQUES ASTUCES EN VBA

I- Mise en forme du projet VBA


Les programmes réalisés en VBA, dans le cadre de projets, ne sont pas nécessairement courts.
La figure ci-dessous nous donne ainsi un aperçu sur les fenêtres du VBE d’un projet visant à
récupérer les informations relatives aux mutual funds américains sous Yahoo ! Finance.
Comme on peut le voir dans la fenêtre de l’explorateur de projet (en haut à gauche VBA project
), le classeur mutualFundsPerf.xls comporte 7 feuilles de travail dont les noms sont requete,
intro, etc.. Le répertoire des modules comporte lui-même 8 répertoires : contenu, fnProcDivers,
etc. .

Lorsque le projet devient suffisamment important il est alors conseillé tout d’abord de multiplier
les commentaires au sein de chaque procédure, comme le montre la figure ci-dessous, pour
rappeler la version du programme et rendre aussi lisible que possible les différentes étapes du
programme.

Arsène AYI / www.arsene-ayi.info Page 42 / 51


ESPC / Cours de Programmation VBA Semestre 4

Ensuite il est souvent souhaitable d’expliciter les différentes parties de chaque programme,
voire de séparer le programme en plusieurs procédures.
Enfin, si le projet comporte de multiples procédures, il est conseillé de les lister dans un
module (appelé par exemple contenu) en y précisant l’objet de chaque procédure et
sa place dans la hiérarchie du programme, comme le montre la figure ci-après :

II- L’exécution du programme


La vitesse d’exécution n’est pas un des points forts de VBA pour Excel comparé à d’autres
logiciels que l’on peut utiliser en ingénierie (par exemple Matlab, Gauss). Encore une fois,
l’intérêt de ce logiciel vient de la facilité de son langage et surtout de l’utilisation quasi-
universelle du tableur Excel.
Pour gérer la lenteur d’exécution de VBA, au surplus, il est possible d’augmenter
substantiellement celle-ci en empêchant l’incessant rafraichissement de l’écran d’Excel par la
commande :

Application.ScreenUpdating=False
à laquelle correspondra à la fin du programme la commande inverse :

Application.ScreenUpdating=True
Comme ce gel de l’image peut enlever à l’utilisateur des repères au cours de l’exécution, il
convient parfois de substituer à l’image des messages apparaissant sur la barre de statut d’Excel
en utilisant des syntaxes du genre :
Arsène AYI / www.arsene-ayi.info Page 43 / 51
ESPC / Cours de Programmation VBA Semestre 4

Application.StatusBar=‘‘début de la première partie du programme’’


Il est nécessaire à la fin de l’exécution de rendre la main à l’ordinateur sur la barre d’état en
écrivant à la fin du programme :

Application.StatusBar=False
Enfin, pour gérer la possible absence de la barre d’état à l’écran, il peut être utile de la faire
apparaître en codant au début du programme :

Application.DisplayStatusBar=True
III- Débogage
Sauf miracle, la rédaction de chaque programme comportera toujours des erreurs qui
provoqueront des dysfonctionnements lors des premières exécutions, et l’affichage d’agaçantes
fenêtres comme celle-ci.

Comme on peut le voir sur cet exemple, elle offre la possibilité d’un débogage. L’activation de
cette option conduira l’ordinateur à faire pointer une flèche jaune sur la ligne comportant
l’erreur.

Si l’on pointe sur les éléments de cette ligne, la bulle information donnera alors soit la valeur
des éléments, soit l’erreur à l’origine du bug. Ainsi dans l’exemple, la variable y est un vecteur
colonne comportant 5 composantes alors que la boucle For...Next itère sur 6 composantes.
Aussi pour i = 6, il est impossible d’affecter sin(22 _ i=56) au vecteur y. D’où le message :
<L’indice n’appartient pas à la sélection>, qui était également le message de la fenêtre d’erreur
initiale (mais sans avoir l’information qu’elle s’appliquait à la variable y.
Pour accélérer la détection des bugs, il est cependant conseillé avant tout lancement du
programme de procéder à un debugage. Le menu de debugage offre la possibilité entre plusieurs
options.

Arsène AYI / www.arsene-ayi.info Page 44 / 51


ESPC / Cours de Programmation VBA Semestre 4

Le debugage pas à pas détaillé permet d’itérer le programme ligne par ligne. En utilisant le
raccourci clavier de la touche F8.

On passe ainsi de ligne en ligne, en vérifiant que le code s’exécute correctement ou non. Si le
programme est trop long, ou s’il comporte des boucles longues, il convient alors d’introduire
des points d’arrêt qui permettront l’exécution normale jusqu’au point d’arrêt. Ainsi sur la figure
ci-dessous, en cliquant sur le bord de la fenêtre de code au niveau du début de la seconde boucle,
on a introduit un point d’arrêt (en rouge). Si l’on déclenche normalement le programme il
s’exécutera (sauf présence d’erreurs) jusqu’à ce point puis s’arrêtera on pourra alors soit le
relancer normalement, soit en cliquant la touche F8 passer en débogage au pas par pas détaillé.

Arsène AYI / www.arsene-ayi.info Page 45 / 51


ESPC / Cours de Programmation VBA Semestre 4

EXERCICES PRATIQUES
On se propose de réaliser une macro permettant la saisie d'informations à l'écran. Plus
précisément, on souhaite concevoir une boîte de dialogue dans laquelle l'utilisateur rentrera son
nom, sa qualité et sa date de naissance. Les informations saisies devront alors être reportées
dans une feuille de calcul Excel.

I) Conception de la boîte de dialogue

La première étape consiste à créer la boîte de dialogue. Pour cela, insérer une nouvelle boîte de
dialogue sous l'éditeur en utilisant la commande Insertion/UserForm. Faire ensuite apparaître
la boîte à outils grâce à la commande Affichage/boîte à outils. Créer deux zones d'édition
(Text-Box) pour la saisie du nom et de la date de naissance, en indiquant avec deux zones de
texte (Label) le nom du champ considéré. Pour la saisie de la qualité, une liste déroulante
permettant le choix entre plusieurs champs prédéfinis (Mlle, Mme et M.) est tout indiqué. Créer
enn les deux boutons classiques OK et Annuler.
Penser à dénir correctement les propriétés Cancel et Default des boutons.
Ne pas oublier aussi de donner un titre à la boîte de dialogue (propriété Caption) et également
de se préoccuper de l'ordre de tabulation.
Lors de la conception d'une boîte de dialogue, utiliser la barre d'outils Userform et le menu
Format de l'éditeur pour améliorer sa mise en forme.
La boîte de dialogue finale devrait ressembler à la figure ci-dessous :

Une fois la boîte de dialogue créée, il reste à affecter des noms personnalisés aux différents
contrôles utilisés. Cette opération n'est pas obligatoire mais facilitera la programmation par la
suite. Pour cela, afficher les propriétés de chaque objet et modifier le champ nom. On choisira
par exemple les noms suivants :
❖ zone de saisie du nom : nom ;
❖ zone de saisie de la date de naissance : date_naissance ;
❖ zone déroulante : qualité ;
❖ bouton OK: bouton_ok ;
❖ bouton Annuler : bouton_annuler ;

Arsène AYI / www.arsene-ayi.info Page 46 / 51


ESPC / Cours de Programmation VBA Semestre 4

❖ boîte de dialogue elle-même : boîte_saisie.


Il est inutile d'affecter un nom aux zones de texte, dans la mesure où elles ne seront pas
manipulées dans le code par la suite.

II) Programmation des contrôles de la boîte

Une fois la boîte créée, il est nécessaire de programmer le comportement des différents
contrôles. Il faut pour cela inclure du code dans le module de classe associé à la boîte de
dialogue.
Il est nécessaire tout d'abord de prévoir, lors de l'initialisation de la boîte de dialogue, le
remplissage de la zone déroulante. Ensuite, il faut programmer le comportement des deux
boutons créés.
Lorsque l'utilisateur appuie sur Annuler, il faut fermer la boîte de dialogue. Un clic sur OK
devra provoquer la fermeture de la boîte de dialogue et l'écriture des informations saisies dans
une feuille de calcul. Voici le code permettant de réaliser ces traitements :
'force la déclaration explicite des variables
Option Explicit
'procédure évènement gérant un clic sur le bouton OK
Private Sub bouton_ok_Click()
'écriture des saisies dans la feuille de calcul
'Feuil1 (cellules A1, B1 et C1)
With Sheets("Feuil1")
.Range("A1").Value = qualité.Text
.Range("B1").Value = nom.Text
.Range("C1").Value = date_naissance.Text
End With
'fermeture de la boîte de dialogue
Hide
End Sub
'procédure évènement gérant un clic sur le bouton Annuler
Private Sub bouton_annuler_Click()
'fermeture de la boîte de dialogue
Hide
End Sub

Arsène AYI / www.arsene-ayi.info Page 47 / 51


ESPC / Cours de Programmation VBA Semestre 4

'procédure évènement s'exécutant à l'apparition de la boîte de dialogue


Private Sub UserForm_Initialize()
'remplissage de la zone déroulante
With qualité
.AddItem ("Mlle")
.AddItem ("Mme")
.AddItem ("M.")
'valeur par défaut
'les valeurs d'une liste déroulante sont repérées avec des indices
'dont le premier commence à 0. Ecrire 1 pour "Mme" et 2 pour "M."
.ListIndex = 0
End With
End Sub
Pour remplir la liste déroulante, on peut également écrire les trois champs concernés dans une
feuille de calcul et affecter les plages concernées à la propriété RowSource de la liste
déroulante. Si on saisit par exemple les champs dans les cellules A1, A2 et A3 de la feuille
Feuil2, on peut affecter directement la valeur Feuil2!A1:A3 à cette propriété.
A noter que dans le module de classe, il est implicite que les objets cités font référence à la
boîte de dialogue. Il n'est donc pas nécessaire de préciser le nom de la boîte de dialogue à
chaque fois qu'on manipule un contrôle, en écrivant par exemple :
Sheets("Feuil1").Range("A1").Value = Boîte_saisie.qualité.Text
Le langage VBA permet de nombreuses écritures implicites de ce type. Par exemple, dans le
code ci-dessus, la référence à la feuille Feuil1 sous-entend qu'il s'agit de la feuille Feuil1 du
classeur actif.
Il est enfin nécessaire de créer une procédure servant à afficher la boîte de dialogue de saisie.
C'est en quelque sorte le programme principal. Cette procédure n'est pas rattachée à un objet
quelconque. On doit donc la programmer dans un module général
Voici la procédure en question :
Public Sub saisie()
'lancement de la boîte de dialogue
Boîte_saisie.Show
End Sub
Cette procédure doit être publique pour pouvoir être exécutée par exemple par la commande
Outils/Macro/Macros....
Arsène AYI / www.arsene-ayi.info Page 48 / 51
ESPC / Cours de Programmation VBA Semestre 4

III) Améliorations possibles

Le programme précédent est satisfaisant. Cependant, il présente quelques imperfections. Par


exemple, il serait souhaitable que le programme vérifie que l'utilisateur a bien saisi les
informations demandées.
De plus, il serait bon de vérifier que l'utilisateur a bien rentré une date compréhensible par
Excel. Voici le code de la nouvelle procédure bouton_ok_Click tenant compte de ces
modifications :
'procédure évènement gérant un clic sur le bouton OK

Private Sub bouton_ok_Click()

Dim i As Integer

If nom.Text <> "" And date_naissance.Text <> "" Then

'vérifie si la date entrée est valide

If Not (IsDate(date_naissance.Value)) Then

'message d'erreur

'MsgBox sert à afficher un message au moyen d'une boîte

'de dialogue automatique, consulter l'aide en ligne pour

'plus de renseignements

i = MsgBox("La date saisie est incorrecte!", vbCritical)

'effacement de la saisie et positionnement du focus sur

'le contrôle date_naissance

With date_naissance

.SetFocus

.Text = ""

End With

'fin de la procédure

Exit Sub

End If

'écriture des saisies dans la feuille de calcul

'Feuil1 (cellules A1, B1 et C1)

With Sheets("Feuil1")

.Range("A1").Value = qualité.Text

.Range("B1").Value = nom.Text

Arsène AYI / www.arsene-ayi.info Page 49 / 51


ESPC / Cours de Programmation VBA Semestre 4

.Range("C1").Value = date_naissance.Text

End With

'fermeture de la boîte de dialogue

Hide

Else

'message d'erreur

i = MsgBox("Veuillez entrer les données manquantes!", _

End If

End Sub

vbCritical, "Erreur")

IV) Création d'une commande spécifique

On souhaite maintenant créer une commande spécifique qui déclencherait la procédure de


saisie. Il est possible de réaliser cette opération manuellement ou par programmation. Voyons
ici la méthode manuelle :
• activer la commande Affichage/Barres d'outils/Personnaliser... ;
• créer une nouvelle barre d'outils (utilisez le bouton Nouvelle... de l'onglet Barre
d'outils);
• cliquer sur l'onglet Commandes et choisir la catégorie Macros;
• cliquer sur la commande Élément de menu personnalisé et, tout en laissant appuyé le
bouton de la souris, déplacer l'élément dans la nouvelle barre d'outils
• modifier le nom du nouveau menu introduit et lui affecter la macro saisie en utilisant le
menu contextuel du nouveau menu.

Arsène AYI / www.arsene-ayi.info Page 50 / 51


ESPC / Cours de Programmation VBA Semestre 4

Arsène AYI / www.arsene-ayi.info Page 51 / 51

Vous aimerez peut-être aussi