VBA : tablaux et boucles
25 septembre 2007
Structure de tableau
On a souvent besoin de travailler sur un ensemble de données.
Un exemple géographique : les températures moyennes des 12 mois de l’année.
On pourrait déclarer 12 variables identiques :
Dim Temp1, Temp2, Temp3, Temp4, ... ... ..., Temp12 as Single
On dispose d’une structure de données appelée Tableau qui permet de conserver dans une seule "entité" plusieurs valeurs de même type.
Le nom du tableau est une variable qu’il est recommandé de préfixer par Tab.
Le nombre de valeurs de types identiques est à déclarer entre parenthèses.
Exemple 1 : Dim TabTemp(12) As Single
Numéro
1
2
3
4
5
...
Température
6
5,5
7
11,5
15
...
L’accés à la case numéro 3 se fait par TabTemp(3) qui vaut 7.
Exemple 2 : Dim TabMajuscules(65 to 90) As String
Numéro
65
66
67
...
89
90
Majuscule
A
B
C
...
Y
Z
Boucles en nombre défini
Cette boucle est utilisée si l’on connait à l’avance le nombre de fois qu’elle sera parcourue.
Syntaxe :
For Compteur = Début To Fin [Step Incrément]
Instructions
[ ... Exit For]
[Instructions]
Next [Compteur]
Le test est effectué au début de la boucle.
La variable numérique Compteur est incrémentée à chaque fin de boucle du nombre indiqué par l’incrément. Si l’incrément n’est pas spécifié il est fixé à 1.
Si la valeur de Fin est inférieure à la valeur de Début l’incrément est négatif.
La valeur de Compteur peut être utilisée (par exemple pour numéroter le passage dans la boucle) mais ne doit pas être modifiée dans le corps de la boucle.
Exemple :
For i = 1 To 50
TabInitial(i) = 0 ‘ Initialisation de chaque case à 0
Next i
Remplissage d’un tableau
Pour remplir un tableau on le balaye avec une boucle For ... To ... Next (car le nombre de cases est connu à l’avance).
Exemple 1 :
Dim TabTemp(12) As Single
Dim Compteur As Integer
For Compteur = 1 To 12
TabTemp(Compteur)=InputBox("Température N° " & Compteur)
Next Compteur
Exemple 2 :
Dim TabTirageLoto(6) As Integer
Dim Compteur As Integer
For Compteur = 1 To 6
TabTirageLoto (Compteur)=Rnd * 48 + 1
Next Compteur
Il y a une imperfection dans ce tirage des 6 numéros du Loto !
Traitement des valeurs d’un tableau
On suppose rentrer les 12 températures dans un tableau de Single appelé TabTemp.
On veut rechercher la température maximale dans ce tableau de 12 températures.
Il s’agit donc de balayer ce tableau et de conserver la valeur maximale dans une variable.
Au départ on suppose que la température maximale est la première du tableau.
Dim Compteur As Integer
Dim TempMaxi As Single
TempMaxi=TabTemp(1)
For Compteur = 2 To 12
If TabTemp(Compteur)>TempMaxi Then TempMaxi=TabTemp(Compteur)
Next Compteur
A la fin du processus la variable TempMaxi contiendra la valeur recherchée.
Déclarations publiques et procédures publiques
Si une variable est déclarée au début d’une procédure événementielle par l’instruction Dim elle n’est alors valide que pour cette procédure. L’existence et la valeur de la variable disparaissent avec l’instruction End Sub.
Toute référence à cette variable en dehors de cette procédure événementielle provoquera une erreur de compilation.
Si une variable est déclarée avant toute procédure événementielle par l’instruction Public elle est valide dans toutes les procédures de la feuille.
Exemple :
Public NomDuJoueur As String : cette variable sera utilisable dans toutes les procédures événementielles de la feuille.
La déclaration d’un tableau ne "supporte" pas le mot réservé Public. Il faudra alors utiliser le mot réservé Dim même si c’est une déclaration publique.
Exemple :
Dim TabNotes(5) As Single : Ce tableau sera utilisable dans toutes les procédures événementielles de la feuille.
Si une procédure non-événementielle est déclarée avant toute procédure événementielle par l’instruction Public elle sera utilisable dans toutes les procédures événementielles de la feuille.
Exemple :
Public Sub SaisieTempérature()
Température = InputBox("Taper une température")
Somme = Somme + Température
End Sub
Cela présuppose une déclaration initiale des variables publiques Température et Somme.
Cette procédure sera exécutée à chaque appel par son nom : SaisieTempérature.
[ Imprimer
cet article ] [ Haut ]
|