Académique Documents
Professionnel Documents
Culture Documents
Intro Prog Vba PDF
Intro Prog Vba PDF
Peltier
E-Mail : Mathieu.Peltier@netcourrier.com
Homepage : http://altern.org/peltierm/welcome.htm
Mise jour du 6/2/2000 Typographie LATEX 2"
Ce guide est une introduction succincte la programmation VBA sous
Microsoft Excel 97. Loin d'tre exhaustif, il a pour ambition de fournir au
dbutant une premire approche de VBA.
Ce document est libre de droit. Vous pouvez le modier et le diuser
comme vous l'entendez. Une version en ligne est galement disponible sur le
site dont l'adresse est indique ci-dessus. N'hsitez pas me faire part de vos
commentaires et de vos conseils clairs !
Table des matires
Pour commencer . . . . . . . . . .
Qu'est-ce que VBA? . . . . . . . .
Notion de programmation objet . .
Avantages et inconvnients de VBA
2 L'environnement de programmation
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Variables et constantes
3.1
3.2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
3
4
5
5
5
5
5
6
6
7
7
7
7
8
3.3
3.4
3.5
4.2
4.3
4.4
4.5
Les oprateurs . . . . . . . . . . .
4.1.1 Oprateurs arithmtiques. .
4.1.2 Oprateurs de comparaison.
4.1.3 Oprateurs logiques. . . . .
Structures conditionnelles . . . . .
4.2.1 If Then Else ElseIf . . . . .
4.2.2 Select Case . . . . . . . . .
Boucles . . . . . . . . . . . . . . .
4.3.1 Do While Loop . . . . . . .
4.3.2 Do Until Loop . . . . . . .
4.3.3 For Step Next . . . . . . . .
4.3.4 For Each In Next . . . . . .
Gestion des programmes . . . . . .
4.4.1 Exit . . . . . . . . . . . . .
4.4.2 End et Stop . . . . . . . . .
4.4.3 On Error GoTo . . . . . . .
Conversion de types . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Procdures et fonctions
5.1
5.2
5.3
5.4
Les procdures . . . . . . . . . . . . .
Les fonctions . . . . . . . . . . . . . .
Passage d'arguments par valeur ou par
Les procdures vnements . . . . . . .
6 Conception de programme
6.1
6.2
6.3
6.4
Quelques conseils . . . . . .
Utiliser des rfrences . . .
Dbogage de programme . .
Les macros complmentaires
7 Un exemple pratique
7.1
7.2
7.3
7.4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . .
. . . . . .
rfrence
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
10
10
10
11
11
11
11
12
12
12
12
13
13
13
13
14
14
15
15
15
16
16
17
17
17
18
18
19
19
20
21
23
24
24
24
24
Pour chaque objet est dni un ensemble de ce que l'on appelle des
proprits et des mthodes, auxquelles on accde au moyen des instructions :
<Objet>.<Proprit> et <Objet>.<Mthode>
Les mthodes sont les actions rattaches l'objet en question. Par exemple,
la mthode close de l'objet WorkBooks("Classeur1") sert fermer le classeur :
WorkBooks("Classeur1").close
L'ENVIRONNEMENT DE PROGRAMMATION
L'environnement de programmation
L'ENVIRONNEMENT DE PROGRAMMATION
VARIABLES ET CONSTANTES
Variables et constantes
VARIABLES ET CONSTANTES
Outre ces types lmentaires, il est galement possible de crer des tableaux et des types personnaliss. Les deux exemples de dclarations suivantes illustrent le fonctionnement de ces deux types de donnes :
Dim tab[1 to 20] As Integer
Type personne
nom As String * 20
adresse As String * 50
anniversaire As Date
End Type
De plus, ils ne peuvent pas excder 255 caractres. Pour faciliter la lisibilit des programmes, on s'eorcera d'utiliser des minuscules pour les variables
utilises par le programme.
16. Le problme du passage l'an 2000 est pris en compte !
VARIABLES ET CONSTANTES
Les variables globales ont une dure de vie beaucoup plus importante que
les variables locales : leur contenu est en eet conserv jusqu' l'initialisation
du programme 20 .
17. Cocher la case Dclaration explicite des variables dans la bote de dialogue obtenue
par la commande
sous VBE (onglet Editeur ).
18. En fait, il existe d'autres possibilits (cf. section 3.4, page 9).
19. cf. section 5, page 15.
20. Cette initialisation n'est pas automatique. Elle a lieu la premire excution du
programme et peut tre obtenu grce l'instruction end.
Outils/Options...
10
Des conits entre les direntes variables peuvent apparatre dans certains programmes. Dans ce cas, VBA applique une rgle simple : les variables
prises en compte sont celles qui ont le domaine de validit le plus restreint.
Pour le nom des constantes, les mmes rgles que dans le cas des variables
s'appliquent.
Il est noter qu'au sein de VBA sont dnies un grand nombre de
constantes auxquelles on peut accder, dans n'importe quel programme. Ces
constantes ont t implmentes pour faciliter la tache des programmeurs,
qui peuvent par exemple utiliser des constantes prdnies au nom explicite
pour exploiter certaines valeurs retournes par des fonctions prprogrammes. Consulter l'aide en ligne pour obtenir plus d'informations.
4
21. Il existe en particulier des instructions permettant de grer les chiers, les entres/sorties, etc.
11
De plus, les oprateurs Mod et n permettent de dterminer respectivement le reste et le quotient d'une division entire. Enn & permet de
concatner deux chanes de caractres 22 .
Il n'y a donc pas de dirence entre l'oprateur d'aectation et l'oprateur de comparaison. Les oprateurs Like et Is permettent, de plus, respectivement de comparer deux chanes de caractres et deux variables de type
objet. Consulter l'aide en ligne pour plus de prcisions.
Lorsque la condition est ralise, la premire suite d'instructions est excute. Dans le cas contraire, c'est bien sr la deuxime suite d 'instructions
qui est excute. Noter que l'instruction Else est facultative.
Dans le cas o il est ncessaire d'imbriquer plusieurs structures conditionnelles, on peut utiliser l'instruction ElseIf :
If <condition> Then
<instructions>
ElseIf <condition>
<instructions>
End If
12
4.3 Boucles
4.3.1 Do While Loop
L'instruction Do While Loop permet de raliser une boucle conditionnelle.
La syntaxe est la suivante :
Do While <condition>
<instructions>
Loop
13
Step sert indiquer le pas d'itration. Cette prcision est toutefois facultative : par dfaut, la valeur du pas utilis est 1.
14
End If
...
End Sub
PROCDURES ET FONCTIONS
15
Procdures et fonctions
PROCDURES ET FONCTIONS
16
...
End Sub
Private Sub ma_procdure()
'dclarations des variables ventuelles
...
'corps d'une procdure prive
...
End Sub
CONCEPTION DE PROGRAMME
17
End Sub
Sub valeur(ByVal i As Integer)
'passage par valeur
i = 2
End Sub
'procdure principal
Sub essai()
Dim i As Integer
i = 0
Call valeur(i)
'i vaut 0, malgr l'appel prcdent
Call rfrence(i)
'i vaut 1 maintenant
End Sub
Conception de programme
CONCEPTION DE PROGRAMME
18
UN EXEMPLE PRATIQUE
19
Dans la plupart des cas, il est possible de corriger en temps rel les erreurs
dtectes. On peut alors relancer l'excution du programme sans tre oblig
d'initialiser le programme. Avant de tester l'excution d'un programme, utiliser la commande Dbogage/Compiler <projet> 31 et corriger les erreurs
signales, pour gagner du temps.
Enn, la touche ESC permet d'interrompre le programme pendant son
excution.
Un exemple pratique
UN EXEMPLE PRATIQUE
20
Fig.
Une fois la bote de dialogue cre, il reste aecter des noms personnaliss aux dirents contrles utiliss. Cette opration n'est pas obligatoire
32. L'intrt d'un tel programme est avant tout pdagogique...
33. Ces deux proprits dnissent quel bouton est activ par les touches RETURN et
ESC. Aecter ici Cancel True pour le bouton Annuler et Default False pour le bouton
OK. Procder l'opration inverse pour le bouton Annuler
34. La commande
permet de dnir l'ordre dans
lequel l'utilisateur pourra se dplacer parmi les contrles grce la touche TAB.
Achage/Ordre de tabulation
UN EXEMPLE PRATIQUE
21
mais facilitera la programmation par la suite. Pour cela, acher les proprits de chaque objet 35 et modier le champ nom. On choisira par exemple les
noms suivants :
A-
UN EXEMPLE PRATIQUE
22
Pour remplir la liste droulante, on peut galement crire les trois champs
concerns dans une feuille de calcul et aecter les plages concernes la proprit RowSource de la liste droulante. Si on saisit par exemple les champs
dans les cellules A1, A2 et A3 de la feuille Feuil2, on peut aecter directement la valeur Feuil2!A1:A3 cette proprit.
A noter que dans le module de classe, il est implicite que les objets cits
font rfrence la bote de dialogue. Il n'est donc pas ncessaire de prciser
le nom de la bote de dialogue chaque fois qu'on manipule un contrle, en
crivant par exemple :
Sheets("Feuil1").Range("A1").Value = Bote_saisie.qualit.Text
UN EXEMPLE PRATIQUE
23
Cette procdure doit tre publique pour pouvoir tre excute par exemple
par la commande Outils/Macro/Macros....
24
Else
'message d'erreur
i = MsgBox("Veuillez entrer les donnes manquantes!", _
vbCritical, "Erreur")
End If
End Sub
25