You are on page 1of 35

Visual Basic pour Application

(VBA)

http ://perso.wanadoo.fr/x.dupre/programmation/

Xavier Dupr

Repres

1.

Introduction

1.1
1.2
1.3
1.4
1.5
2.

Visual Basic et macros . . . .


Premire procdure . . . . . .
Macro lie une feuille Excel
Erreurs . . . . . . . . . . . .
Autres possibillits . . . . . .

Le langage VBA

2.1
2.2
2.3
2.4
2.5
2.6
2.7
3.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

9
9
9
13
14
15
16
18

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Prliminaires . . . . . .
Variables et oprateurs .
Achage . . . . . . . . .
Tests . . . . . . . . . . .
Boucles . . . . . . . . .
Fonctions et procdures
Erreurs . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Exemple de fonctions en VBA sous Excel

.
.
.
.
.
.
.

3
3
3
5
6
7

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

La table des matires est dtaille la n du document.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Chapitre 1
Introduction

1.1 Visual Basic et macros


Excel est un logiciel trs rpandu ds qu'on manipule des chires. Certaines de ces manipulations reviennent
trs souvent et on prouve le besoin de les automatiser. Les logiciels ont fait apparatre les macros :
une succession d'oprations que l'utilisateur pouvait enregistrer puis reproduire. Dans Microsoft Oce,
chaque macro correspond un programme informatique qui dnit les oprations eectues.

Fig. 1.1: Une matrice sous Excel 4x4, on souhaite en calculer la trace.

La gure 1.1 montre une matrice. On veut enregistrer une macro qui va mmoriser les oprations permettant d'entrer la formule de la trace de la matrice. La gure 1.2 montre les trois tapes qui permettent de
crer cette macro.
Une fois que la macro est enregistre, Excel cre un code crit en Visual Basic qui correspond ces
oprations. Pour le voir, on ouvre l'diteur Visual Basic.

1.2 Premire procdure


On cherche ensuite crire une macro qui modie la matrice de faon ce que la somme des coecients sur
chaque ligne soit gale 1. Il est dicile d'enregistrer la succession d'oprations comme dans le paragraphe
prcdent. En eet, la normalisation de la matrice ncessite de calculer d'abord la somme des coecients
sur une ligne et ensuite de diviser chaque coecient par la somme obtenue pour sa ligne. Il est impossible
de raliser ce calcul directement sur la feuille Excel sans recopier la matrice moins de programmer cette

1. Introduction

Fig. 1.2: On lance l'enregistrement d'une macro dans la premire image, on lui donne un nom dans la seconde, on
saisit la formule et on arrte l'enregistrement dans la troisime image.

Fig. 1.3: On ouvre l'diteur Visual Basic dans Excel (cette opration est la mme dans Word, Access ou toute autre
application de la gamme Microsoft Oce). Il faut ensuite cliquer sur Module1 pour voir apparatre le code
de la macro. Les lignes commenant par une apostrophe sont des commentaires et ne sont pas pris en
compte lors de l'excution de la macro. La premire de la macro signie que la case qui doit recevoir le
rsultat est slectionne. La seconde ligne est la saisie de la formule. La troisime ligne est un clic dans
une case voisine.

macro. On retourne donc dans l'diteur Visual Basic pour y ajouter les lignes suivantes :
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Sub normalisation()
' cette fonction renormalise une matrice 4x4
Dim s As Double
Dim cel As String
Dim i As Long
Dim j As Long
For i = 1 To 4
s = 0
For j = 1 To 4
s = s + Worksheets("Feuil1").Cells(i, j)
Next
For j = 1 To 4
Worksheets("Feuil1").Cells(i, j) = Worksheets("Feuil1").Cells(i, j) / s

1. Introduction
15
16
17

Next
Next
End Sub

Une fois cette tape termine, on revient dans la fentre Excel. On souhaite ajouter un bouton la barre
des tches et appeler la macro normalisation lorsqu'on clique sur ce bouton. Pour cela, il faut suivre les
instructions de la gure 1.4.

Fig. 1.4: On clique d'abord sur le clic droit de la souris au niveau de la barre des tches puis sur Personnaliser
(premire image). Une fentre apparat, il faut cliquer sur l'onglet Commande puis sur Macro (deuxime
image). La troisime tape consiste dplacer (on clique dessus et on relche l'endroit dsir) le bouton
personnalis dans une barre des tches. Il s'insre alors dedans. A nouveau un clic droit de la souris sur ce
nouveau bouton, puis on clique sur Aecter une macro (troisime image). Une dernire fentre apparat
(dernire image), il sut de slectionner normalisation pour associer cette procdure au nouveau bouton.
De retour dans Excel, on clique sur le nouveau bouton. La procdure s'excute et la matrice est aussitt
modie.

1.3 Macro lie une feuille Excel


Il est possible, au milieu d'une feuille Excel, d'insrer un bouton lui-mme reli une macro. Lorsque vous
changez la valeur d'une cellule, Excel calcule nouveau toutes les formules qui en dpendent. Parfois, ces
calculs sont compliqus, et lorsqu'il faut changer dix valeurs, ils sont eectus dix fois. La manipulation

1. Introduction

d'Excel s'en trouve ralentie. Il est alors possible d'insrer un bouton l'intrieur d'une feuille Excel de
sorte que, lorsque ce bouton est press, c'est une macro qui est excute et qui eectue ces coteux calculs
lorsque vous l'avez dcid.
La gure 1.5 montre les tapes suivre pour insrer un bouton dans une feuille de calcul. La gure 1.6
montre comment modier le nom du bouton et le rattacher une macro.

Fig. 1.5: La premire tape consiste dessiner le bouton dans la feuille de calcul. Il faut faire d'abord apparatre
une barre d'outils nomm Control ToolBox en cliquant sur le bouton droit de la souris au niveau des
barres d'outils (premire image). Il faut ensuite prciser Excel qu'on dsire insrer un bouton (ou plus
gnralement un contrle). On clique pour cela comme indiqu sur la seconde image pour tre en Design
Mode. On clique alors sur un icne ressemblant un bouton (troisime image). Il ne reste plus qu' dessiner
le bouton sur la feuille (quatrime image). On clique un endroit puis on maintient appuy jusqu' ce que
le bouton soit assez grand. Il est possible par la suite de le dplacer (uniquement en Design Mode. (suite
gure 1.6, page 7)

1.4 Erreurs
Il arrive parfois qu'une procdure ne fonctionne pas ou plante. Dans le cas prsent, pour faire planter la
procdure renormalisation, il sut de modier la premire ligne de la matrice pour n'y mettre que des
zros. Un nouveau clic sur le bouton associ cette macro et une erreur est provoque comme le montre la
gure 1.7. Le logiciel Excel est assez souple puisqu'il autorise la programmation et les erreurs ne provoque
pas l'arrt d'Excel.

1. Introduction

Fig. 1.6: Aprs avoir fait apparatre un menu local en cliquant sur le bouton droit de la souris au niveau du bouton,
la premire image de cette srie montre o faut il aller pour modier le nom du bouton. Une fois que cela
est fait, on fait apparatre de nouveau ce mme menu local (seconde image) et on clique sur View Code
pour faire apparatre le code de la macro associe au bouton. La macro apparat dans l'diteur Visual
Basic (troisime image), il ne reste plus qu' la dnir. A chaque fois que le bouton sera press, c'est cette
macro qui sera excute. La dernire image est l pour rappeler qu'une fois toutes ces tapes termines,
il ne faut pas oublier de revenir dans Excel et de sortir du mode Design Mode pour utiliser normalement
Excel et surtout pouvoir cliquer sur le bouton.

1.5 Autres possibillits


Visual Basic permet la ralisation de petits programmes. Mme si les calculs sont possibles, ils sont plus
lents qu'avec un langage comme le C++. Nanmoins, l'avantage est qu'Excel dispose d'une interface dans
laquelle il est facile d'acher les rsultats d'un calcul ou de construire un graphique. Il est mme possible
d'introduire des botes de dialogue.
Excel n'est pas la seule application, Word, Access, Outlook sont toutes des applications qui peuvent
tre pilotes avec Visual Basic. Toutefois Excel et Access (base de donnes) sont les deux applications
principales avec lesquels on crit des programmes en VBA.
Pour Excel, je citerai le livre [Riva2005]. Il illustre l'utilisation de VBA et Excel au travers de la ralisation
d'un pricer de produits nanciers. Il s'tend peu sur le langage VBA mais le livre commence par un rsum
sur le langage et les objets manipuls dans les programmes qui suivent en exemple.

1. Introduction

Fig. 1.7: Une erreur survient car la somme des coecients de la premire ligne est nulle ce qui implique une division
par zro. C'est opration est impossible et provoque l'ouverture de la fentre de la premire image. Aprs
avoir cliqu sur Dbogage, on se retrouve dans l'diteur Visual Basic avec une ligne en jaune : c'est la ligne
qui a provoqu l'erreur. Le menu Achage (ou View en anglais) permet de faire apparatre une fentre
Watch. Cette fentre facilite la mise au point des programmes car lorsque le programme s'arrte en cours
d'excution, il est possible d'acher le contenu des variables en cours d'utilisation.

Chapitre 2
Le langage VBA

Le VBA est semblable tout autre langage de programmation, il contient des boucles, tests, fonctions ou
encore procdures. Il dire un peu par les types de variables qu'il propose, les objets qu'il manipule, lis
aux applications Microsoft Oce. Ce chapitre rsume la syntaxe de ce langage.
Tout programme crit en VBA peut tre rparti sur plusieurs modules bien que ceux-ci soient enregistrs
dans un seul chier (une feuille Excel, un document Word, ...).
Il ne faut pas oublier l'aide fournie par Microsoft. Lorsque vous avez un doute sur une fonction ou un motcl, il vous sut de l'crire et d'appuyer sur la touche F1. Vous aurez alors automatiquement l'aide associ
ce mot, s'il existe. Une autre manire d'obtenir des informations sur ce langage consiste enregistrer
une macro en rapport avec la tche programmer et d'extraire du code VBA produit par Microsoft Oce
les informations dsires.

2.1 Prliminaires
Les commentaires commencent par une apostrophe et se termine par la n de la ligne. Il n'y a pas de
sparateur d'instructions en VBA, le langage impose une instruction par ligne. Lorsque l'une d'elle est trop
longue et qu'il est prfrable pour des raisons de lisibilit d'tendre une instruction sur plusieurs lignes,
chacune d'elles except la dernire doit se terminer par _.
MsgBox "premire partie" & _
"seconde partie\n" & _
"troisime partie"

2.2 Variables et oprateurs


2.2.1 Types prdnis
La dclaration d'une variable se fait toujours selon le mme schma :
Dim nom_variable as nom_type

Les principaux types de variables sont regroups dans la table 2.1. Voici quelques exemples de dclarations :

2. Le langage VBA

10

Dim a As Integer
Dim s As String
Dim v As Variant

Le langage VBA ncessite la dclaration des variables avant leur utilisation. Toutefois, lorsqu'elle n'est
pas prsente, Excel ou tout autre application de Microsoft Oce ne remarque pas toujours l'erreur car
il est possible que le programme ait un sens mme dans ce cas. Il est donc conseill d'ajouter au dbut
de tout module l'instruction Option Explicit. De cette manire, l'oubli d'une dclaration sera dtect
avant mme l'excution du programme.
VBA autorise galement les tableaux. Ils possdent une ou plusieurs dimensions. Le premier indice est 0
et le dernier dim1. La dclaration se fait comme suit :
Dim nom_variable (dim1, dim2, ...) as nom_type

VBA permet aussi de changer les indices d'un tableau de debut fin inclus :
Dim nom_variable (debut To fin, ...) as nom_type

Pour accder un lment du tableau, il faut utiliser les parenthses. Quelques exemples :
' mois est un tableau de chanes de caractres
' dont les indices vont de 0 12 inclus
Dim Mois(12) As String
' Matrice est un tableau deux dimensions d'entiers
Dim Matrice(3, 4) As Integer
' Matrice2 est un tableau de rels deux dimensions pour lesquels
' les indices dsirs sont explicitement spcifis
Dim Matrice2(1 To 5, 4 To 9, 3 To 5) As Double
' accs un paramtre
Dim t(3 To 6) As Integer
t(3) = 4

type
Byte
Boolean
Integer
Long
Double
Date
String
Variant

dnition

octet, entier de 0 255


boolen, True ou False
entier de -32768 32768
entier de -2.147.483.648 et 2.147.483.647
rel, 14 chires de prcision, exposant allant jusqu' 308
date
chane de caractres
quivalent tout type, en particulier les tableaux
Tab. 2.1: Principaux types de variables en VBA.

2. Le langage VBA

11

2.2.2 Oprateur
Les oprations sont les oprations standards +,-,/,*, (puissance), Mod (congruence). On peut concatner
les chanes de caractres grce l'oprateur &.
3 + 4
31 Mod 5
2^4
"un" & "deux"

'
'
'
'

vaut
vaut
vaut
vaut

7
1
16
undeux

Les oprateurs de comparaisons sont <,>,<=,>=,=1 . Les oprations logiques And et Or permettent de
combiner les comparaisons.
((3 < 4) And (5 < 6)) Or (2 > 1)

Remarque 2.2.1: chane de caractres, caractres spciaux

Lorsqu'on veut insrer un passage la ligne dans une chane de caractres, il faut concatner le symbol

vbCrLf.

s = "premire ligne" & vbCrLf & "seconde ligne"

2.2.3 Conversion
Les conversions sont parfois implicitement eectues. Lorsqu'elles ne marchent pas, il faudra faire appel
des fonctions de conversions explicites. Pour faire simple, il en existe deux qui sont souvent utilises :
1. La fonction Str convertit n'importe quoi en chane de caractres.
2. La fonction Val convertit n'importe quoi en une valeur numrique.
Exemple :
Dim
Dim
s =
a =

s As String
a As Double
Str (3.14)
Val ("3.14")

2.2.4 Types dnis par l'utilisation


Il est possible de crer des types en combinant plusieurs types dj existant, comme les structures en
langage C. On utilise le mot-cl Type et la syntaxe obit au format suivant :
Type Contacts
Nom As String
Prenom As String
Age As Integer
End Type
Sub procedure ()
Dim ct As Contacts
1

L'oprateur de comparaison ne contient qu'un seul signe =.

2. Le langage VBA

12

ct.Nom = "Microsoft"
ct.Prenom = "VBA"
ct.Age = 10
' environ
End Sub

Cet exemple fait apparatre le mot-cl Sub qui dsigne le dbut d'une procdure2 . La dnition d'un type
ne peut tre faite l'intrieur d'un sous-programme (fonction ou procdure).
Lorsque le nom de la variable est trop long3 ou simplement qu'on dsire viter sa rptition, on utilise le
mot-cl With et la syntaxe quivalente suivante :
Type Contacts
Nom As String
Prenom As String
Age As Integer
End Type
Sub essai()
Dim ct As Contacts
With ct
.Nom = "Microsoft"
.Prenom = "VBA"
.Age = 10
End With
End Sub

Il n'est pas possible avec le mot-cl Type de dnir une classe mais le paragraphe suivant aborde ce point.

2.2.5 Classes
La dclaration d'une classe s'eectue dans un module part : un module de classe. La gure 2.1 montre
comment crer un module de classe.
A l'intrieur de ce module de classe, les attributs de la classe sont dclars comme une variable globale via
le mot-cl Public. Voici un exemple de module de classe incluant un attribut et une mthode. Son nom
est ClassNom :
Public nom As String
Sub essai()
nom = "inconnu"
End Sub

La dclaration des variables de types classes dire aussi de celle des autres types, il faut ajouter le mot-cl
New. New
Dim c As New ClassNom
c.nom = "eeee"
c.essai
2
3

ou fonction ne retournant aucun rsultat


cas frquent lorsqu'on manipule les objets de Microsoft

2. Le langage VBA

13

Fig. 2.1: Cration d'un module de classe en cliquant sur le clic droit de la souris dans la fentre VBAProject. La
premire image montre comment crer le module de classe. La seconde et la troisime montrent comment
donner un nom la classe cre. Le nom choisi est ici ClassNom.

VBA ore la possibilit d'ajouter un constructeur et un destructeur. Ils possdent des noms particuliers :
Private Sub Class_initialize()
' code du constructeur
End Sub
Private Sub Class_Terminate()
' code du destructeur
End Sub

2.3 Achage
L'achage du rsultat d'un calcul dpend de l'application dans laquelle on excute le programme VBA. Ce
sera dans la case d'une feuille Excel, dans un paragraphe d'un document Word, dans un mail d'Outlook,
dans une table d'Access. Avant d'aborder ces applications, il existe un moyen simple de faire apparatre
l'cran un message l'intrieur d'une bote de dialogue. La gure 2.2 montre ce qui surgit l'cran.
MsgBox "message"

Lorsque le message est long, il est ncessaire d'insrer des sauts de lignes, il faut utiliser le symbole vbCrLf
(voir remarque 2.2.1). La bote de dialogue peut inclure plusieurs boutons en ajoutant un second paramtre
lors de l'appel de la fonction MsgBox.

2. Le langage VBA

14

Fig. 2.2: Bote de dialogue dans laquelle apparat message. Le programme s'arrte puis reprend lorsque le bouton
OK est press.

Reponse = MsgBox ("Voulez-vous continuer ?", vbYesNo)

Les direntes valeurs possibles sont vbAbortRetryIgnore, vbOKCancel, vbRetryCancel, vbYesNo,


vbYesNoCancel. La valeur retourne dpend du bouton press, cette valeur peut tre vbOK, vbCancel,
vbAbort, vbRetry, vbIgnore, vbYes, vbNo.
Il est aussi possible de demander un renseignement l'utilisateur avec la fonction InputBox. Le rsultat
est une chane de caractres. C'est le moyen le plus simple mais VBA ore la possibilit de dnir des
botes de dialogue plus complexe appeles formulaire qui permettent de saisir plusieurs informations dans
la mme fentre.
Dim Message As String
Message = InputBox("intitul de la question", "nom de la bote de dialogue", _
"rponse par dfaut")

2.4 Tests
2.4.1 Tests avec If
Les tests sont crits grce aux mots-cl If et Then :
If condition Then
' faire..
End If

S'il n'y qu'une instruction excuter lorsque le test est vri, il est possible de l'crire sur une ligne et la
dernire ligne End If disparat :
If condition Then

' faire

Il peut y avoir une contre partie :


If condition Then
' faire..
Else
' sinon faire...
End If

On peut aussi enchaner les tests :

2. Le langage VBA

15

If condition1 Then
' faire..
ElseIf condition2 Then
' faire...
Else
' sinon faire...
End If

2.4.2 Tests avec Select Case


Il existe une autre manire d'crire des tests lorsque les instructions excuter dpendent de la valeur
d'une variable discrte.
Dim NiveauEau As Integer
Dim Mention As String
NiveauEau = 10
Select Case NiveauEau
Case 0
Mention = "sec"
Case 1 To 5
Mention = "presque sec"
Case 6 To 10
Mention = "normal"
Case 11 To 15
Mention = "trop d'eau"
Case 16 To 19
Mention = "inondations"
Case Else
Mention = "on dmnage"
End Select

2.5 Boucles
2.5.1 Boucle For
Dim
Dim
s =
For

s as Integer
i as Integer ' dclarer la variable de la boucle
0
i = 1 To 10
s = s + 1
Next i
' passer au i suivant

Il est possible de faire en sorte que la variable de boucle soit incrmente d'une valeur positive ou ngative
chaque itration.
Dim s as Integer
Dim i as Integer ' dclarer la variable de la boucle
s = 0

2. Le langage VBA

For i = 1 To 10 Step 2 ' i = 1 3 5 ... 9


s = s + 1
Next i
' passer au i suivant

Pour sortir de la boucle For avant sa n prvue, il faut utiliser l'instruction Exit For.

2.5.2 Boucle While


Dim s
Dim i
s = 0
i = 1
While
s
i
Wend

as Integer
as Integer ' dclarer la variable de la boucle
i <= 10
= s + 1
= i + 1

Il n'est pas possible de sortir d'une boucle While.

2.5.3 Boucle Loop


Dim s as Integer
Dim i as Integer ' dclarer la variable de la boucle
s = 0
i = 1
Do While i <= 10
s = s + 1
i = i + 1
Loop

Pour sortir de la boucle Do While avant sa n prvue, il faut utiliser l'instruction Exit Do.
Mme chose mais la condition est place et value la n de la boucle :
Dim
Dim
s =
i =
Do

s as Integer
i as Integer ' dclarer la variable de la boucle
0
1

s = s + 1
i = i + 1
Loop While i <= 10

2.6 Fonctions et procdures


2.6.1 Procdures
C'est une fonction qui ne retourne pas de rsultat.

16

2. Le langage VBA

17

Sub exemple_procedure ()
' code de la procdure
End Sub

Il est possible de sortie prmaturment de la procdure en crivant Exit Sub. Contrairement d'autres
langages, il ne faut pas mettre de parenthses autour des paramtres d'une procdure lorsqu'on l'appelle.
Sub exemple_procedure (ByVal param1 As Long)
' code de la procdure
End Sub
Sub main ()
' appel de la procdure
exemple_procedure 3
End Sub

2.6.2 Fonctions
Function exemple_fonction () As Integer
' code de la procdure
...
' retourner le rsultat
exemple_fonction =
End Function

Il est possible de sortir prmaturment de la procdure en crivant Exit Function. Toutefois, avant
d'excuter une telle instruction (qui est facultative), il ne faut pas oublier de prciser quel est son rsultat
en crivant le nom de la fonction suivant du signe = et du rsultat retourner.

2.6.3 Variables statiques


Les variables statiques sont cres une seule fois au cours de l'excution du programme et conservent
la dernire valeur qui leur a t aecte lorsque le programme quitte la procdure ou la fonction qui la
contient. Au prochain appel de cette procdure ou fonction, la variable statique a retenu sa prcdente
valeur.
Sub proc ()
Static i As Integer
End Sub

2.6.4 Passages des paramtres


Comme dans tous les langages, il existe manires de transmettre des paramtres une fonction :
1. Le passage par valeur : les paramtres sont recopis et peuvent tre modis dans la fonction ou la
procdure sans consquence l'extrieur du sous-programme.
2. Le passage par adresse : les paramtres ne sont pas recopis. Lorsqu'ils sont modis dans la fonction
ou la procdure, ces modications demeurent aprs que le sous-programme est termin.
Dans l'exemple qui suit, le premier paramtre est pass par valeur, le second par rfrence.

2. Le langage VBA

18

Function exemple_fonction (ByVal s As String, ByRef v As Variant) As Long


' ...
End Function

En rgle gnrale, les petits paramtres (Long, Double, String) sont passs par valeur car leur copie ne
cote pas grand-chose. Les paramtres plus gros comme les tableaux ou n'importe quel objet Microsoft
Oce, sont passs par rfrence car leur copie est coteuse en temps d'excution. Il arrive mme que
certains objet n'accepte pas les copies et donc les passages par valeur.
Les paramtres passs par valeur acceptent des valeurs par dfaut.

2.6.5 Surnom : Set


Certaines variables ont parfois des noms longs qu'il est ennuyeux de recopier chaque utilisation. Il est
possible de leur donner un surnom grce au mot-cl Set.
Dim nom_tres_tres_long As String
Dim s As String
Set s = nom_tres_tres_long
' par la suite, s et nom_tres_tres_long dsignent la mme variable

2.7 Erreurs
Les exceptions n'existent pas en VBA mais un autre mcanisme le remplace.
Sub proc
On Error
'
' code
'
Exit Sub
erreur:
'
' en cas
'
End Sub

()
Goto erreur
susceptible de produire une erreur

d'erreur

Chapitre 3
Exemple de fonctions en VBA sous Excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

'
' divise une chane de caractres en plusieurs petites spars par une chane
' sparatrice
'
' @param
str
chane diviser
' @param
sep
chane sparatrice
' @return
tableau de chane de caractres
'
Function SplitString(str As String, sep As String) As Variant
Dim res As Variant
Dim l, lsep As Long
Dim k As Long
lsep = Len(sep)
l = Len(str)
If l < lsep Then
SplitString = res
Exit Function
End If
Dim occ As Long
occ = 0
For k = 1 To l - lsep + 1
If Mid(str, k, lsep) = sep Then
occ = occ + 1
End If
Next
ReDim res(occ)
Dim last As Long

3. Exemple de fonctions en VBA sous Excel


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

last = 1
occ = 0
For k = 1 To l - lsep + 1
If Mid(str, k, lsep) = sep Then
If k > last Then
res(occ) = Mid(str, last, k - last)
End If
last = k + lsep
occ = occ + 1
End If
Next
If last <= l Then
res(occ) = Mid(str, last, l - last + 1)
End If
SplitString = res
End Function
'
' retourne la dimension d'un tableau
'
'
@param
arr
tableau
'
@return
dimension du tableau
'
Function HalArrayDimension(ByRef arr As Variant) As Long
On Error GoTo FinalDimension
Dim dimnum As Long
Dim ErrorCheck As Long
For dimnum = 1 To 60000
ErrorCheck = LBound(arr, dimnum)
Next dimnum
HalArrayDimension = dimnum - 1
Exit Function
FinalDimension:
HalArrayDimension = dimnum - 1
End Function
'
' copie un tableau dans une table partir
' si le tableau est une dimension, copie
' termine le tableau par une ligne blanche
'
'
@param
feuille
'
@param
y
'
@param
x
'
@param
arr
'

des indices x,y,


le tableau verticalement,
nom de la feuille
ligne
colonne
tableau

20

3. Exemple de fonctions en VBA sous Excel


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

21

Sub HalArrayCopy(ByRef feuille As String, ByVal y As Long, ByVal x As Long, ByRef arr As Variant
If (VarType(arr) & vbArray) > 0 Then
Dim d As Long
d = HalArrayDimension(arr)
If d = 2 Then
Dim
Dim
Dim
Dim

ddu1
ddl1
ddu2
ddl2

ddu1
ddl1
ddu2
ddl2

=
=
=
=

As
As
As
As

Long
Long
Long
Long

UBound(arr,
LBound(arr,
UBound(arr,
LBound(arr,

1)
1)
2)
2)

If Not IsEmpty(arr) Then


Worksheets(feuille).Range(Cells(y, x), Cells(y + ddu1 - ddl1, x + ddu2 - ddl2))
Worksheets(feuille).Range(Cells(y + ddu1 - ddl1 + 1, x), _
Cells(y + ddu1 - ddl1 + 1, x + ddu2 - ddl2)) _
.ClearContents
End If
ElseIf d = 1 Then
Dim ddu As Long
Dim ddl As Long
ddu = UBound(arr, 1)
ddl = LBound(arr, 1)
If Not IsEmpty(arr) Then
Worksheets(feuille).Range(Cells(y, x), Cells(y + ddu - ddl, x)) = arr
Worksheets(feuille).Range(Cells(y + ddu - ddl + 1, x), Cells(y + ddu - ddl + 1,
End If
End If
Else
Dim ta As String
Dim res As Long
res = MsgBox("arr is not an array", vbOKOnly, "Error", ta, 1000)
End If

3. Exemple de fonctions en VBA sous Excel


135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

22

End Sub
'
' retourne le nom de la feuille active
'
' @return
nom de la feuille active
'
Function HalGetSheetActivated() As String
Dim sh
For Each sh In Windows(1).SelectedSheets
HalGetSheetActivated = sh.name
Next
End Function
'
' fonction retournant la liste des cases slectionnes
'
' @param
i
tableau contenant les lignes
' @param
j
tableau contenant les colonnes
' @param
f
tableau contenant les feuilles correspondantes
' @return
nombre de cases slectionnes
'
Function HalSelectionCellGet(ByRef i As Variant, ByRef j As Variant) As Long
Dim nb As Long
Dim ch
nb = 0
For Each ch In Selection
nb = nb + 1
Next
ReDim i(nb)
ReDim j(nb)
ReDim f(nb)
nb = 1
For Each ch
i(nb) =
j(nb) =
nb = nb
Next ch

In Selection
ch.Row
ch.Column
+ 1

HalSelectionCellGet = nb - 1
End Function
'
'
'

cre une barre d'outils si elle n'existe pas

3. Exemple de fonctions en VBA sous Excel


185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234

23

' @param
name
nom de la barre d'outils
'
Sub HalCreateToolBarName(name As String)
On Error GoTo createcommandbar
Dim mybar
Set mybar = CommandBars(name)
Exit Sub
createcommandbar:
Set mybar = CommandBars.Add(name:=name, Position:=msoBarFloating, Temporary:=False)
With mybar
.Width = 39
.Visible = True
.Height = 20
.RowIndex = msoBarRowFirst
End With
End Sub
'
' cherche un bouton dont la lgende est... dans une barre d'outils
'
' @param
name
barre d'outils
' @param
str
nom du bouton chercher
' @return
vrai ou faux
'
Function HalSearchToolBar(name As String, str As String) As Boolean
On Error GoTo createcommandbar
Dim mybar
Dim b
Set mybar = CommandBars(name)
For Each b In mybar.Controls
If b.Caption = str Then
HalSearchToolBar = True
Exit Function
End If
Next
HalSearchToolBar = False
Exit Function
createcommandbar:
HalSearchToolBar = False
End Function
'
' positionne les boutons en colonne dans une barre d'outils
'
' @param
name
barre d'outils
'
Sub HalColumnToolBar(name As String)
CommandBars(name).Position = msoBarFloating

3. Exemple de fonctions en VBA sous Excel


235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284

24

CommandBars(name).Width = 1
' Dim HalControl As CommandBarButton
' For Each HalControl In CommandBars(name).Controls
' Next
End Sub
'
'
'
'
'
'
'
Sub

cre un bouton dans une barre d'outils si celui-ci n'existe pas


@param
@param
@param

name
func
cap

nom de la barre d'outils


nom de la fonction appeler lorsque le bouton est e
lgende

HalCreateToolBarButtonName(name As String, func As String, cap As String)


HalCreateToolBarName name
Dim mybar
Set mybar = CommandBars(name)

If Not HalSearchToolBar(name, cap) Then


Dim mybut
Set mybut = mybar.Controls.Add(Type:=msoControlButton)
With mybut
.BeginGroup = True
.Caption = cap
.FaceId = 0
.OnAction = func
.Style = msoButtonIconAndCaption
End With
HalColumnToolBar name
Else
Set mybut = mybar.Controls(cap)
With mybut
'.BeginGroup = True
'.Caption = cap
'.FaceId = 0
.OnAction = func
'.Style = msoButtonIconAndCaption
End With
End If
End Sub
'
' recherche la premire case vide dans une colonne
'
' @param
str
feuille de calcul
' @param
i
ligne
' @param
j
colonne
' @return
ligne de la premire case vide

3. Exemple de fonctions en VBA sous Excel


285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334

25

'
Function HalLastLine(str As String, ByVal i As Long, ByVal j As Long) As Long
Dim e As Boolean
e = True
While e
If IsEmpty(Worksheets(str).Cells(i, j)) Or Worksheets(str).Cells(i, j) = "" Then
e = False
Else
i = i + 1
End If
Wend
HalLastLine = i
End Function

'
' vrifie si une colonne est vide ou non
'
' @param
f
feuille de calcul
' @param
i
premire ligne
' @param
j
colonne
' @param
last
dernire ligne
' @return
true, la colonne est vide, false, la colonne n'est pas vide
'
Function HalEmptyColumn(f As String, ByVal i As Long, ByVal j As Long, ByVal last As Long) As Bo
Dim res
Dim v
res = Worksheets(f).Range(Cells(i, j), Cells(last, j))
On Error GoTo impossible:
v = Application.WorksheetFunction.var(res)
If v = 0 Then
HalEmptyColumn = True
Else
HalEmptyColumn = False
End If
Exit Function
impossible:
HalEmptyColumn = True
End Function

3. Exemple de fonctions en VBA sous Excel


335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384

26

'
' vrifie si un tableau possde une colonne vide
'
' @param
f
feuille de calcul
' @param
i
premire ligne
' @param
j
colonne
' @param
last
dernire ligne
' @param
lastc
dernire colonne
' @return
-1 ou l'indice de la colonne qui pose problme
'
Function HalCheckRange(f As String, ByVal i As Long, ByVal j As Long, ByVal last As Long, ByVal
Dim k As Long
For k = j To lastc
If HalEmptyColumn(f, i, k, last) Then
HalCheckRange = k - j + 1
Exit Function
End If
Next
HalCheckRange = -1
End Function
'
' lit ou crit un paramtre statique
'
' @param
k1
cl 1
' @param
k2
cl 2
' @param
k
nom
' @param
v
valeur
' @param
def
valeur par dfaut
' @param
m
true pour modifier, false pour obtenir la valeur
'
Sub StaticParameter(k1 As String, k2 As String, k As String, ByRef v As String, _
def As String, m As Boolean)
Dim
Dim
Dim
Dim
Dim
Dim

key1 As Variant
key2 As Variant
name As Variant
value As Variant
b As Variant
r As Long

key1 = k1
key2 = k2
name = k
value = v
b = m

3. Exemple de fonctions en VBA sous Excel


385
386
387
388
389
390
391
392
393
394
395

r = ExtHalStaticVariable(key1, key2, name, value, b)


If Not b Then
If r = 0 Then
v = def
Else
v = value
End If
End If
End Sub

27

Bibliographie

[Riva2005] Fabrice Riva, Applications Financires sous Excel en Visual Basic, Economica (2005)

Table des gures

1.1 Une matrice sous Excel 4x4, on souhaite en calculer la trace. . . . . . . . . . . . . . . . . .


1.2 On lance l'enregistrement d'une macro dans la premire image, on lui donne un nom dans
la seconde, on saisit la formule et on arrte l'enregistrement dans la troisime image. . . .
1.3 On ouvre l'diteur Visual Basic dans Excel (cette opration est la mme dans Word, Access
ou toute autre application de la gamme Microsoft Oce). Il faut ensuite cliquer sur Module1
pour voir apparatre le code de la macro. Les lignes commenant par une apostrophe sont
des commentaires et ne sont pas pris en compte lors de l'excution de la macro. La premire
de la macro signie que la case qui doit recevoir le rsultat est slectionne. La seconde ligne
est la saisie de la formule. La troisime ligne est un clic dans une case voisine. . . . . . . .
1.4 On clique d'abord sur le clic droit de la souris au niveau de la barre des tches puis sur
Personnaliser (premire image). Une fentre apparat, il faut cliquer sur l'onglet Commande
puis sur Macro (deuxime image). La troisime tape consiste dplacer (on clique dessus
et on relche l'endroit dsir) le bouton personnalis dans une barre des tches. Il s'insre
alors dedans. A nouveau un clic droit de la souris sur ce nouveau bouton, puis on clique
sur Aecter une macro (troisime image). Une dernire fentre apparat (dernire image),
il sut de slectionner normalisation pour associer cette procdure au nouveau bouton.
De retour dans Excel, on clique sur le nouveau bouton. La procdure s'excute et la matrice
est aussitt modie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 La premire tape consiste dessiner le bouton dans la feuille de calcul. Il faut faire d'abord
apparatre une barre d'outils nomm Control ToolBox en cliquant sur le bouton droit de
la souris au niveau des barres d'outils (premire image). Il faut ensuite prciser Excel
qu'on dsire insrer un bouton (ou plus gnralement un contrle). On clique pour cela
comme indiqu sur la seconde image pour tre en Design Mode. On clique alors sur un icne
ressemblant un bouton (troisime image). Il ne reste plus qu' dessiner le bouton sur la
feuille (quatrime image). On clique un endroit puis on maintient appuy jusqu' ce que
le bouton soit assez grand. Il est possible par la suite de le dplacer (uniquement en Design
Mode. (suite gure 1.6, page 7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Aprs avoir fait apparatre un menu local en cliquant sur le bouton droit de la souris au
niveau du bouton, la premire image de cette srie montre o faut il aller pour modier le
nom du bouton. Une fois que cela est fait, on fait apparatre de nouveau ce mme menu
local (seconde image) et on clique sur View Code pour faire apparatre le code de la macro
associe au bouton. La macro apparat dans l'diteur Visual Basic (troisime image), il ne
reste plus qu' la dnir. A chaque fois que le bouton sera press, c'est cette macro qui sera
excute. La dernire image est l pour rappeler qu'une fois toutes ces tapes termines, il
ne faut pas oublier de revenir dans Excel et de sortir du mode Design Mode pour utiliser
normalement Excel et surtout pouvoir cliquer sur le bouton. . . . . . . . . . . . . . . . . .

3
4

Table des gures

30

1.7 Une erreur survient car la somme des coecients de la premire ligne est nulle ce qui implique
une division par zro. C'est opration est impossible et provoque l'ouverture de la fentre
de la premire image. Aprs avoir cliqu sur Dbogage, on se retrouve dans l'diteur Visual
Basic avec une ligne en jaune : c'est la ligne qui a provoqu l'erreur. Le menu Achage
(ou View en anglais) permet de faire apparatre une fentre Watch. Cette fentre facilite la
mise au point des programmes car lorsque le programme s'arrte en cours d'excution, il
est possible d'acher le contenu des variables en cours d'utilisation. . . . . . . . . . . . .

2.1 Cration d'un module de classe en cliquant sur le clic droit de la souris dans la fentre
VBAProject. La premire image montre comment crer le module de classe. La seconde
et la troisime montrent comment donner un nom la classe cre. Le nom choisi est ici
ClassNom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Bote de dialogue dans laquelle apparat message. Le programme s'arrte puis reprend
lorsque le bouton OK est press. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
14

Liste des tableaux

2.1 Principaux types de variables en VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

Table des matires

1.

Introduction

1.1
1.2
1.3
1.4
1.5
2.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Visual Basic et macros . . . .


Premire procdure . . . . . .
Macro lie une feuille Excel
Erreurs . . . . . . . . . . . .
Autres possibillits . . . . . .

Le langage VBA

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1 Prliminaires . . . . . . . . . . . . .
2.2 Variables et oprateurs . . . . . . . .
2.2.1 Types prdnis . . . . . . .
2.2.2 Oprateur . . . . . . . . . . .
2.2.3 Conversion . . . . . . . . . .
2.2.4 Types dnis par l'utilisation
2.2.5 Classes . . . . . . . . . . . . .
2.3 Achage . . . . . . . . . . . . . . . .
2.4 Tests . . . . . . . . . . . . . . . . . .
2.4.1 Tests avec If . . . . . . . . .
2.4.2 Tests avec Select Case . . .
2.5 Boucles . . . . . . . . . . . . . . . .
2.5.1 Boucle For . . . . . . . . . .
2.5.2 Boucle While . . . . . . . . .
2.5.3 Boucle Loop . . . . . . . . . .
2.6 Fonctions et procdures . . . . . . .
2.6.1 Procdures . . . . . . . . . .
2.6.2 Fonctions . . . . . . . . . . .
2.6.3 Variables statiques . . . . . .
2.6.4 Passages des paramtres . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

3
3
3
5
6
7
9
9
9
9
11
11
11
12
13
14
14
15
15
15
16
16
16
16
17
17
17

3.

Table des matires

33

2.6.5 Surnom : Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


2.7 Erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18
18

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

Exemple de fonctions en VBA sous Excel

Index

Goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
On. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
With. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

barre d'outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

classe
attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
mthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
commentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
constructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

destruteur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

fonction
InputBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
MsgBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
formulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

oprateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

paramtre
passage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
valeur par dfaut. . . . . . . . . . . . . . . . . . . . . . . . .18
passage
par adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
par valeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
procdure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

ligne trop longue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
mot-cl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
And . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
As . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Dim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Else. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
ElseIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

remarque
chane de caractres, caractres spciaux . 11
rfrences
Riva2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 28

type
Boolean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Double. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
34

Index

Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
Variant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

variable
dclaration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
VBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

35

You might also like