Académique Documents
Professionnel Documents
Culture Documents
1 Présentation
Visual Basic pour Applications –VBA- est le langage de programmation des applications de
Microsoft Office. Ce langage permet d’automatiser les tâches, de créer des applications
complètes, de sécuriser vos saisies et vos documents, de créer de nouveaux menus et de
nouvelles fonctions. Une macro Excel réalisée en VBA n’est rien d’autre qu’une procédure.
Le langage VBA est accessible à tous. Cependant, une bonne connaissance de l’Excel ainsi
que les structures des algorithmes est nécessaire avant de se lancer dans la création
1
d’application. En effet, il est important de bien maîtriser d’une part les principes des
algorithmes comme les structures de contrôles, les variables, les fonctions les procédures,
etc… et d’autre part les objets Excel que manipule VBA, comme les objets Workbook
(classeur), Worskheet (Feuille de calcul), Range(plage de cellule), etc…
Dans « développeur » cliquer sur insérer puis choisir « bouton (contrôle formulaire).
Insérer le bouton sur la feuille à laquelle vous voulez affecter cette macro. Puis donner un
nom à cette macro puis cliquer sur nouvelle.
2
L’éditeur VB s’ouvre en indiquant le début et la fin de la procédure.
Cette méthode pour afficher l’éditeur VB nous permet de créer une procédure qui sera lié au
bouton de commande qu’on a insérer.
3 Procédure et fonction
Une procédure est une suite d'instructions effectuant des traitements. Elle commence par
Sub + NomDeLaProcédure et se termine par End Sub. Le nom des procédures ne doit pas
contenir d'espaces.
Une fonction est aussi une suite d’instructions effectuant un traitement mais la particularité
c’est que la fonction renvoie une valeur. Si dans une procédure on remarque que nous avons
besoin de reprendre le même traitement (bloc d’instruction) plusieurs fois on peut
l’intégrerdans une fonction. Cette dernière peut être appelée par son nom chaque fois qu’on
a besoin de ce traitement. Chaque fonction a besoin d’un certain nombre d’arguments.
3
Les arguments sont des variables dont les valeurs seront utilisées par la fonction pour quelle
puisse effectuer son traitement. Ces valeurs seront transmises à la fonction dans le
programme principal lorsqu’on appelle cette fonction.
Pour déclarer une fonction, taper Function puis son nom puis taper Entrée. VBA ajoute
automatiquement les parenthèses et la ligne End Function.
Prototype :
Function test(argument 1 as <type argument1>, argument 2 as <type argument2>) as (<type valeur revoyée))
.
.
End Function
Exemple :
Cette fonction permet de sommer deux entiers qui seront transmis en argument de la
fonction Somme() puis renvoie la somme de ces deux entiers
Remarques :
1- Dans le langage VBA pour préciser la valeur renvoyée on doit la stocker dans une variable qui
porte le même nom que celui de la fonction.
Exemple :
4
Dans l’exemple précédent on peut écrire :
Sub calculer()
Dim x as Integer, y as Integer
X=sheets("feuil1").cells(2,2)
Y=sheets("feuil1").cells(3,2)
sheets("feuil1").cells(5,2)=somme(x,y)
end sub
3- Activez le menu Fichier, puis Enregistrer classeur... Dans la zone Type de fichier,
sélectionnez la dernière option, complément Excel (*.xla) et sauvegardez votre fichier
après l'avoir nommé.
4- Retournez dans Excel et dans l’onglet Développeur activez l’Outils complément Excel.
Le nom de votre fichier de macro complémentaire devrait normalement apparaître
dans votre liste cochez-le. De cette manière, les fonctions personnalisées seront
disponibles dans tous vos classeurs !
4 Les variables
Lors d'une procédure, les variables servent à stocker toutes sortes de données (des valeurs
numériques, du texte, des valeurs logiques, des dates ...). Elles peuvent également faire
référence à un objet. Suivant les données que la variable recevra, on lui affectera un type
différent. Les différents types de variables de VB sont donnés par le tableau suivant :
5
La déclaration explicite d'une variable se fait par le mot Dim (abréviation de Dimension). Le
nombre maximum de caractères du nom de la variable est de 255. Il ne doit pas commencer
par un chiffre et ne doit pas contenir d'espaces.
Pour rendre obligatoire la déclaration de variables, placez l'instruction "Option Explicit" sur
la première ligne du module.
La syntaxe est :
Dim NomDeLaVariable As Type.
Dans le VBA si on déclare pas une variable elle sera par défaut de type « variante ».
Exemple :
Function Calcul_plus(Nbre1 As Integer, Nbre2 As Integer) As Integer
Dim SommeVal As Integer, Val1 As Integer, Val2 As Integer
Val1 = 5
Val2 = 2
SommeVal = Val1 + Val2
Calcul_plus = Nbre1 + Nbre2+SommeVal
End Function
6
Une variable est dite locale si elle est déclarée à l'intérieur d'une procédure ou d’une
fonction. Dès que la procédure ou la fonction est terminée, la variable n'est plus chargée
en mémoire sauf si elle est déclarée par le mot Static. Une variable Locale est
généralement placée juste après la déclaration de la procédure.
Une variable peut garder toujours la même valeur lors de l'exécution d'un programme.
Dans ce cas, elle est déclarée par les mots Const ou Global Const.
Option Explicit
Global Const Pi = 3.14159265358979
IF <condition> THEN
[<bloc d'instructions>]
END IF
Remarques.
Si le bloc d'instructions contient une seule instruction la structure de contrôle s'écrit sur
une seule ligne et ceci sans END IF (voir l'ex. 2).
2) Le bloc d'instructions n'est pas obligatoire! Bien évidemment, dans cette situation, si
la condition est vraie aucune instruction n'est exécutée.
3) Une structure de contrôle If ... Then peut contenir une ou plusieurs autres structures
de contrôle If ... Then.
Exemple :
Les exemples suivants vont déterminer la valeur que prendra la variable Mention par
rapport à des notes. Le tableau des notes est :
Note Mention
0 Nul
1à5 faible
6 à 10 Passable
7
11 à 15 Bien
16 àn19 Très bien
20 Excellent
Cet algorithme n’est pas optimal puisqu’on va passer par tous les tests logiques. Il faut
appliquer une structure qui va nous permettre d’exécuter un seul traitement suivant la
valeur de Note.
Dans le cas de conditions multiples, comme dans notre exemple, on préférera le bloc
d'instruction
8
faire une opération
Case Valeur n
faire une opération
End Select
Exemple :
La variable i peut également être décrémentée. Dans ce cas, le mot Step est obligatoire.
9
Sum_entier3 = Resultat
End Function
A l'intérieur d'un bloc d'instruction For…Next, l'instruction Exit For, peut quitter la
boucle avant que la variable n'est atteint sa dernière valeur
10
Resultat = Resultat + i^2
'Ne pas oublier d'incrémenter le compteur sinon 'la boucle ne pourra pas s'arrêter.
i=i+1
loop
Sum_entier_carre = Resultat
End Function
6 Les Tableaux
Contrairement aux variables classiques qui contiennent une seule valeur, un tableau est
une variable qui peut contenir un ensemble de valeurs de même type.
Les valeurs stockées dans tableau sont repérées par des indices. Le nombre des indices
va définir le nombre de dimension du tableau. En général l’indice de la première case du
tableau est 0
La déclaration du tableau se fait, comme les variables traditionnelles, dans la partie Dim.
On peut déclarer un tableau à une dimension (un seul indice) ou un tableau à n
dimensions (n indice)
11
6.1 Tableau statique
Dans un tableau statique la déclaration doit se faire en précisant le nombre de valeur
que nous voulons stocker dans ce tableau.
Dans le plus part du temps on ne connait pas à l’avance le nombre de valeur qu’on doit
stocker dans le tableau. Ce nombre peut être trouvé à partir d’un traitement.
Exemple :
Ci-dessous une fonction qui permet de sommer n valeur d’un vecteur d’entier. Les
valeurs du vecteur sont saisies dans une feuille Excel :
12
Dans cette exemple nous transmettons à la fonction somme_vecteur() les valeurs de du
vecteur V() ainsi que la valeur de n qui représente le nombre de valeur stockée dans le
tableau V(). Les valeur de V() serons initiées dans la procédure « prog_principale() ».
Nous pouvons appeler les fonctions avec des paramètres dont le nom est différent que
ceux avec lesquelles nous avons déclaré ces fonctions. Mais nous devons respecter
l’ordre qu’on a donné à ces paramètres dans la déclaration des fonctions. Dans l’exemple
précédent nous avons déclaré la fonction par somme_vecteur(V(), n) et nous avons
appelé cette dernière par somme_vecteur(T(), n).
En VBA Excel un objet est une entité externe que le programme VBA peut manipuler. Par
exemple une cellule d’une feuille Excel est un objet que VBA le manipule en utilisant une
instance de la classe Range.
Une classe est une catégorie d'objets. Le programme VBA peut manipuler une cellule
précise (ou un groupe de cellule), mais pas le concept de cellule.
Chaque objet possédé des propriétés qui le décrivent. Les objets d’une même classe
possèdent les mêmes propriétés.
Une méthode est une action que peut réaliser un objet. La liste des méthodes varie d'une
classe à l'autre, mais tous les objets d'une même classe ont les mêmes méthodes.
Par exemple, la méthode Copy d'une cellule permet de copier le contenu de cette cellule
dans le presse-papier (ou dans une autre cellule).
13
Nombre de colonnes de la plage
Columns.Count
Range("B4:H6").Columns.Count vaut 7
Row Numéro de la première ligne du haut de la plage
Rows.Count Nombre de lignes de la plage
Count Nombre de cellules de la plage
CurrentRegion Plage continue (limitée par des lignes et des colonnes vides) dont fait partie la cellule.
Cellule de la dernière ligne à la fin de la zone qui contient la plage. Correspond aux
End(xlDown)
touches Fin+Bas.
Cellule de la dernière colonne à la fin de la zone qui contient la plage. Correspond aux
End(xlToRight)
touches Fin+Droite.
Text Valeur AFFICHÉE de la cellule, donc évaluée et formatée.
Value Valeur ÉVALUÉE de la cellule.
Worksheet Objet Worksheet qui est la feuille qui contient la plage
La plupart des opérations que l'utilisateur peut faire en Excel peuvent être
programmées en VBA grâce aux méthodes des différents objets du modèle objet Excel.
14
déplacement du curseur Excel est rarement souhaitable pendant
l'exécution d'un programme VBA.
15