Cours Visual Basic pour Excel, tutoriel & guide de travaux pratiques en pdf.
Utiliser des variables
Visual Basic n’est utile que dans la mesure où il peut traiter des informations que lui communique l’utilisateur. Pour cela il utilise des variables où il va stocker les données. Nous allons prendre l’exemple d’une macro qui permet de calculer le produit de deux nombres. Supposons donc que nous ayons créé une feuille se nommant Produit et se présentant de la manière suivante.
Nous allons stocker le premier nombre dans une variable que nous appellerons a et le deuxième dans une variable que nous appellerons b. Le résultat sera stocké dans une variable c. La macro Calcul fera le calcul et fera apparaître 90 dans la cellule B3 :
- Sub Calcul()
- Set f = Sheets(« Produit »)
- a = f.Range(« B1 »)
- b = f.Range(« B2 »)
- c = a * b
- f.Range(« B3 ») = c
- End Sub
Dans cette macro nous avons d’abord introduit une variable f. C’est une variable dite variable objet car elle ne représente pas une valeur mais un objet, qui est ici la feuille Calcul. Cette variable doit être introduite par l’instruction Set. Nous introduisons ensuite les deux variables a et b auxquelles nous attribuons les valeurs des cellules B1 et B2. Ces deux variables ne doivent pas être introduites par l’instruction Set car elles sont destinées à contenir des valeurs. Remarquons que f.Range(« B1 ») représente le champ B1 de la feuille f, c’est-à-dire de la feuille Produit. Le produit est ensuite stocké dans la variable c et affiché dans la cellule B3. Notons ici que l’instruction c=a*b n’est pas une équation, elle signifie simplement que le contenu de la partie droite du signe égal est affecté à la variable située à gauche du signe égal, mais on ne pourrait pas écrire, par exemple, c+1=a*b
Les variables peuvent également contenir des textes, par exemple le programme suivant :
- Sub Calcul()
- Set f = Sheets(« Produit »)
- a = f.Range(« B1 »)
- b = f.Range(« B2 »)
- c = a * b
- f.Range(« B3 ») = c
- d = « La somme de » & a & » et » & b & » est égale à » & a + b f.Range(« A4 ») = d
Dans cette macro & est l’opérateur de concaténation, il permet de combiner des textes et même des textes et des nombres car ceux-ci sont alors convertis en texte.
Travailler avec des boucles
L’une des forces principales des programmes et donc des macros est de permettre de réaliser très simplement des calculs itératifs. Ils utilisent pour cela des boucles. Supposons que nous cherchions à faire la somme des dix nombres de la feuille Somme suivante
Le programme suivant :
- Sub Somme()
- Set f = Sheets(« Somme »)
- t = 0
- For i = 1 To 10
- a = f.Cells(i, 2)
- t = t + a
- Next i
- f.Cells(12, 2) = t
- End Sub
fait apparaître la somme 549 en cellule B12.
Dans cette macro, la variable t qui est destinée à recevoir la somme est d’abord initialisée à zéro, ce qui n’est pas obligatoire dans ce cas précis puisqu’une nouvelle variable est initialisée à zéro, mais c’est une règle de précaution lorsque l’on procède par itérations. La boucle correspond l’instruction For … Next. Cette instruction fait appel à une variable de comptage, ici i qui va prendre successivement toutes les valeurs comprises entre 1 et 10. Toutes les instructions comprises entre For et Next seront exécutées successivement pour chaque valeur de i, c’est-à-dire 1, 2, 3 … 9, 10.
f.Cells(i,2) désigne la cellule située à la ième ligne de la deuxième colonne de la feuille f, c’est-à-dire la feuille Somme. Au début de la boucle, le compteur i prend la valeur 1. f.Cells(i,2) devient f.Cells(1,2) qui a la valeur 50, cette valeur est affectée à la variable a.
A la ligne suivante, dans la partie droite de l’égalité, la variable t vaut 0 car c’est la valeur qui lui a été affectée au début du programme, t+a vaut donc 0+50=50. Cette valeur de 50 est affectée à la variable située à gauche du signe égal, c’est-à-dire t. Le programme arrive ensuite à l’instruction Next i, il donne alors à i la valeur 2 et revient à la première ligne après l’instruction For.
La variable a prend alors la valeur de f.Cells(2,2), c’est-à-dire 100. A la ligne suivante, dans la partie droite, la variable t a la valeur 50 qui lui a été affectée au tour précdent, t+a a donc la valeur 50+100=150. Cette valeur est alors affectée à la variable de la partie gauche, c’est-à-dire t qui devient donc égale à 150. Le programme arrive ensuite à l’instruction Next et donne au compteur i la valeur 2. Il reprend ensuite à la première ligne située après l’instruction Next.
Ce processus va se poursuivre jusqu’à ce que le compteur parvienne à 10. A la fin de la dixième boucle le programme continue au delà de l’instruction Next. La variable t contient alors la somme des 10 nombres de la deuxième colonne de la feuille Somme. Cette somme est affichée dans la cellule correspondant à la douzième ligne de la deuxième colonne de la feuille Somme. Ce programme montre la manière classique de calculer une somme de valeurs avec Visual Basic mais il en existe d’autres.