Les tableaux dans Excel VBA

Avec les variables et les constantes, vous pouvez stocker des valeurs. Cependant, la limite de l’utilisation de variables est que chaque variable ne peut stocker qu’une seule valeur à la fois. Considérons une situation dans laquelle vous souhaitez stocker 20 valeurs dans des variables. Il serait difficile et long de déclarer 20 variables puis d’attribuer des valeurs. Ainsi, les variables ne sont pas une bonne option lorsque le nombre de valeurs à stocker est important. Vous pouvez utiliser des tableaux dans de telles situations.
Un tableau est un ensemble de valeurs de données indexées et stockées séquentiellement. Les valeurs sont stockées dans des emplacements de mémoire adjacents. Chaque ensemble de valeurs de données stockées sous forme de tableau est traité comme une variable distincte. Pour l’exemple précédent, vous pouvez déclarer un tableau qui peut stocker 20 valeurs. Les valeurs d’un tableau peuvent être référencées individuellement à tout moment du programme. Toutes les valeurs d’un tableau peuvent être référencées par le même nom (mais avec un numéro d’index différent) et avoir le même type de données. Tout comme les variables, vous devez déclarer un tableau avant de l’utiliser.

1 Déclaration de tableaux
Vous pouvez déclarer des tableaux de la même manière que vous déclarez des variables en utilisant la déclaration Dim. Lors de la déclaration d’un tableau, vous devez ajouter une paire de parenthèses au nom du tableau. Vous pouvez également spécifier le nombre de valeurs de données que le tableau peut stocker, c’est-à-dire la taille du tableau.

La syntaxe de déclaration d’un tableau est :

Dim NomDuTableau (taille1, taille2, ...) As TypeDeDonnee

où les valeurs taille1, taille2,…  spécifient la taille du tableau, le nombre d’indices et la valeur maximale autorisée pour chaque index spécifique. Dans ce cas, l’indexation des éléments du tableau par défaut commence à zéro. Donc, la déclaration :

Dim Noms (5) As String

définit un tableau unidimensionnel de 5 éléments qui sont affecté au type de données String et la déclaration :

Dim monTableau  (5, 7) As Variant

définit un tableau bidimensionnel de 5 x 7 = 35  éléments, qui sont des variables de type Variant.

Vous pouvez affecter n’importe quel type de données à un tableau. Le type de données par défaut d’un tableau est Variant. Chaque chaîne est référencée par son numéro d’index. Le numéro d’index commence à 0. La première chaîne du tableau a la valeur 0 et la dernière chaîne a la valeur 4.

Noms (0)
Noms (1)
Noms (2)
Noms (3)
Noms (4)

VBA prend en charge un maximum de 60 dimensions. Vous souhaiterez peut-être déclarer un tableau multidimensionnel.
Dans de nombreuses situations, vous n’êtes pas sûr de la taille d’un tableau. Cependant, si votre estimation est trop faible et que le tableau nécessite réellement plus de mémoire que ce qui est alloué, un message d’erreur est généré. D’un autre côté, si votre estimation est trop élevée, VBA alloue toujours de la mémoire aux emplacements inutilisés du tableau, ce qui entraîne un gaspillage de mémoire. Pour éviter ces problèmes, vous devrez peut-être allouer la taille à un tableau au moment de l’exécution. Par exemple, si vous souhaitez exécuter une procédure qui stockera le nom de chaque étudiant dans une liste et que vous ne connaissez pas le nombre d’étudiants dans la liste, vous pouvez utiliser un tableau dynamique.
Vous pouvez déclarer un tableau dynamique en ajoutant une paire de parenthèses vides au nom du tableau. Par exemple, un tableau dynamique, Noms, est déclaré comme suit:

Dim Noms () As String

Après avoir déclaré un tableau, vous souhaitez y stocker des valeurs. La section suivante traite le stockage des valeurs dans des tableaux.

2 Stockage de valeurs dans un tableau
Pour stocker des valeurs dans un tableau, vous devez vous référer aux éléments d’un tableau. Chaque élément d’un tableau est associé à un numéro d’index. Le numéro d’index associé à une seule valeur de données dans un tableau indique sa position dans le tableau. Le premier élément d’un tableau a l’index 0 et le dernier élément a un index inférieur de un à la dimension du tableau. Vous pouvez soit adresser l’intégralité de l’ensemble des valeurs d’un tableau, soit faire référence à chaque valeur du tableau séparément. Par exemple, vous pouvez faire référence au troisième élément de données du tableau, Noms, à l’aide de l’instruction suivante :

Noms (2)

De même, vous pouvez utiliser le numéro d’index et l’opérateur d’affectation pour attribuer une valeur à un élément de données particulier dans un tableau:

Noms (2) = "Elie Chancelin"

Le troisième élément du tableau, Noms, reçoit la valeur Elie Chancelin.
Par défaut, l’indexation des éléments d’un tableau commence à 0. Vous pouvez utiliser l’instruction Option Base pour modifier le numéro d’index par défaut. Pour ce faire, vous devez déclarer l’instruction Option Base au début du code. Par exemple, l’instruction suivante

Option Base 2
Dim Noms (5) As String

changera le numéro d’index par défaut du tableau de 0 à 2. Ainsi on a :

Noms (2)
Noms (3)
Noms (4)
Noms (5)
Noms (6)

Une autre façon de modifier l’index de base consiste à utiliser le mot clé To lors de la déclaration d’un tableau. Par exemple :

Dim TauxStock (2 To 6, 2 To 11) As Long
et
Dim Noms (2 To 6) As String

Vous pouvez modifier la taille d’un tableau après la déclaration à l’aide de l’instruction ReDim.

3. Redimensionner un tableau
Redimensionner un tableau fait référence à la modification de la taille du tableau. Vous devrez peut-être modifier la taille d’un tableau après l’avoir déclaré. Une fois qu’un tableau est déclaré, la mémoire lui est allouée en fonction de sa taille. Si vous souhaitez augmenter ou diminuer la quantité de mémoire allouée à la baie, vous pouvez le faire à l’aide de l’instruction ReDim.

La syntaxe pour déclarer et dimensionner un tableau dynamique est la suivante:

Dim NomDuTableau () As TypeDeDonnée
ReDim NomDuTableau (taille1, taille2, ...)

Voici à quoi cela pourrait ressembler de déclarer, dimensionner et utiliser un tableau dynamique, et redimensionner le même tableau plus tard:

Dim monTableau () As Variant
ReDim monTableau (1, 2)
monTableau (0, 0) = 2
monTableau (0, 1) = 3
k = monTableau (0, 0) + monTableau (0, 1)
ReDim monTableau (k)
monTableau (0) = "Chaine1"

Commentaires

■ Dans cet exemple, monTableau est d’abord défini comme un tableau bidimensionnel de deux éléments, puis redéfini comme un tableau unidimensionnel, avec la limite supérieure de l’index spécifiée par la valeur de k.
Si le tableau Noms contient des valeurs, l’instruction ReDim effacera les valeurs précédemment enregistrées. Si vous souhaitez modifier la taille d’un tableau sans effacer les valeurs précédemment stockées, vous utilisez l’instruction ReDim Preserve comme suit:
ReDim Preserve Noms(10)
L’instruction précédente modifie la taille du tableau Noms à 10 et conserve les valeurs précédemment stockées.
Une fois les tableaux déclarés et initialisés, vous pouvez les utiliser dans des fonctions et des procédures comme des variables. Par exemple, vous devrez peut-être effectuer une analyse basée sur les valeurs stockées dans un tableau.

4 Extraction d’informations à partir d’un tableau
Les tableaux peuvent être utilisés dans des fonctions et des procédures pour stocker plusieurs valeurs. Les valeurs du tableau peuvent être extraites pour effectuer des opérations sur ces valeurs. Vous devez spécifier le numéro d’index de l’élément de données dans un tableau pour spécifier la position de la valeur de données que vous souhaitez extraire. Vous pouvez ensuite utiliser la fonction MsgBox pour afficher la valeur stockée dans un tableau.
Le code suivant déclare un tableau Noms, avec la dimension 5:
Dim Noms (5) As String
Les éléments de données du tableau Noms, stockent les valeurs suivantes:

Noms (0) = "Keukoua Elie Chancelin"
Noms (1) = "Tchoutang Landry"
Noms (2) = "Mbiada Vanina"
Noms (3) = "Nana Kemajou Armel"
Noms (4) = "Leudjeu Emilienne"

Si vous souhaitez extraire la troisième valeur du tableau Noms et l’afficher, vous devez utiliser l’instruction suivante:
Noms (2)
L’instruction précédente donne Mbiada Vanina.
Nous allons maintenant discuter des différentes fonctions et instructions utilisées pour manipuler les tableaux.

5 Manipulation des tableaux
VBA fournit les fonctions IsArray, LBound et UBound pour manipuler les tableaux. Vous pouvez également utiliser l’instruction Erase pour manipuler la mémoire allouée à un tableau.
Les sections suivantes décrivent chacun de ces éléments en détail.

La fonction IsArray
À un moment donné du code, vous devrez peut-être savoir si une variable est un tableau ou non. VBA fournit la fonction IsArray pour accomplir cela.
La syntaxe de la fonction IsArray est la suivante:
IsArray (nomVariable)
Dans la syntaxe, nomVariable désigne le nom de la variable à vérifier.
La fonction IsArray renvoie une valeur Vrai ou Faux selon la déclaration de la variable. Vous pouvez ensuite prendre les mesures appropriées en fonction de la valeur de retour.
Vous devrez peut-être également rechercher la valeur de limite supérieure et la valeur de limite inférieure d’un tableau. Vous pouvez le faire à l’aide des fonctions LBound et UBound.

Les fonctions LBound et UBound
Les fonctions LBound et UBound sont utilisées pour trouver les limites inférieure et supérieure d’un tableau. LBound est utilisé pour rechercher le numéro d’index du premier élément d’un tableau, et UBound est utilisé pour rechercher le numéro d’index du dernier élément d’un tableau.
La syntaxe des fonctions LBound et UBound est la suivante:

LBound (tableau, [dimension])
UBound (tableau, [dimension])

dimension fait référence à la dimension du tableau à renvoyer. La dimension par défaut est la première dimension. Prenons l’exemple suivant:
Dim ElieChancelin (300, 200, 33) As Long
Dans l’instruction précédente, un tableau multidimensionnel, ElieChancelin, du type de données Long est déclaré.
Pour afficher les limites inférieure et supérieure de toutes les dimensions du tableau ElieChancelin, l’instruction suivante est donnée:

Dim ElieChancelin (300, 200, 33) As Long
MsgBox UBound (ElieChancelin, 3)
MsgBox LBound (ElieChancelin, 1)

Le résultat de la fonction UBound est affiché dans la figure suivante.

Le résultat de la fonction LBound est affiché dans la figure suivante.

Prenons un autre exemple, le code suivant affiche 100 et 5.

Dim A(1 To 100, 0 To 5)
MsgBox UBound(A, 1) & vbCr & UBound(A, 2)

L’instruction Erase
Lorsque vous déclarez un tableau, la mémoire est automatiquement allouée au tableau. Les tableaux peuvent être supprimés lorsque vous n’en avez plus besoin. Vous pouvez libérer la mémoire allouée au tableau en effaçant le contenu du tableau. Le contenu d’un tableau peut être effacé à l’aide de l’instruction Erase. Prenons l’exemple suivant:
ElieChancelin Erase
L’instruction Erase supprime le tableau ElieChancelin de la mémoire.

La fonction Array ()
Un moyen pratique de définir des tableaux à une dimension est la fonction Array (), qui convertit une liste d’éléments séparés par des virgules en un vecteur de ces valeurs et les assigne à un Variant. L’initialisation à la fois d’un tableau unidimensionnel et d’un tableau multidimensionnel est autorisée à l’aide de constructions imbriquées avec les fonctions Array ().

■ Initialisation d’un tableau unidimensionnel :

Dim nombreA As Variant
Dim s As Double
nombreA = Array(10, 20)
s = nombreA (0) + nombreA (1)
MsgBox s

■ Initialisation d’un tableau multidimensionnel :

Dim VillePays As variant
VillePays = Array (Array ("Douala", "Cameroun"), _
Array ("Dakar", "Senegal"))
MsgBox CityCountry (0) (0)
'Douala sera affiché
MsgBox VillePays (0) (1)

‘Cameroun sera affichée

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x