🔡 Les tableaux
Un tableau (ou "array" en anglais) est une variable capable de stocker plusieurs valeurs sous un même nom. C’est très pratique pour manipuler des séries de données sans devoir créer une variable par valeur.
Les tableaux peuvent avoir plusieurs dimensions :
Chaque élément d’un tableau est identifié par un ou plusieurs indices :
- Tableau 1D → un seul indice
- Tableau 2D → deux indices (ex. ligne et colonne)
- Tableau 3D → trois indices
Tableaux de taille fixe
Un tableau de taille fixe a sa dimension définie lors de sa déclaration :
Dim Tableau_1D(0 To 2) As String
Dim Tableau_2D(0 To 1, 0 To 2) As String
- Tableau_1D contient 3 éléments (0, 1, 2) - Tableau_2D contient 2 lignes × 3 colonnes = 6 éléments
On peut remplir ces tableaux comme ceci :
Tableau_1D(0) = "a"
Tableau_1D(1) = "b"
Tableau_1D(2) = "c"
Tableau_2D(0, 0) = "a"
Tableau_2D(0, 1) = "b"
Tableau_2D(0, 2) = "c"
Tableau_2D(1, 0) = "d"
Tableau_2D(1, 1) = "e"
Tableau_2D(1, 2) = "f"
Les tableaux peuvent ensuite être parcourus avec des boucles pour afficher ou traiter chaque élément.
Tableaux dynamiques
Pour créer un tableau dont la taille n’est pas connue à l’avance, on utilise les tableaux dynamiques avec ReDim :
Dim Tableau_1D() As String
ReDim Tableau_1D(0 To 10)
ReDim Tableau_1D(0 To 20) '⚠ Supprime les anciennes données
Si vous voulez conserver les données existantes, utilisez Preserve :
ReDim Preserve Tableau_1D(0 To 20)
ReDim permet de :
- Changer le nombre d’éléments
- Modifier les dimensions
- Définir les limites supérieures et inférieures
Preserve ne peut être utilisé que si on modifie la dernière dimension ou si le tableau est 1D.
Fonctions utiles pour les tableaux
- LBound(tableau, dim) → donne l’indice inférieur de la dimension spécifiée
- UBound(tableau, dim) → donne l’indice supérieur
- IsArray(variable) → renvoie True si la variable est un tableau
Dim Tableau_2D(3 To 9, 2 To 6) As String
a = LBound(Tableau_2D, 1) '3 : indice inférieur de la dimension 1
b = LBound(Tableau_2D, 2) '2 : indice inférieur de la dimension 2
c = UBound(Tableau_2D, 1) '9 : indice supérieur de la dimension 1
d = UBound(Tableau_2D, 2) '6 : indice supérieur de la dimension 2
Créer un tableau à partir d’un Range
Une manière très puissante de créer un tableau est de l’alimenter directement depuis une plage de cellules avec Range.Value :
Dim Tableau As Variant
Tableau = Range("A1:E5").Value
💡 Avantages :
- On récupère directement toutes les valeurs d’une plage dans un seul tableau.
- Le tableau créé reflète exactement les lignes et colonnes de la feuille.
- On peut ensuite parcourir ce tableau en mémoire, ce qui est beaucoup plus rapide que d’accéder cellule par cellule sur la feuille.
- On peut facilement manipuler, trier ou calculer sur les données sans toucher à la feuille jusqu’à ce qu’on veuille écrire le résultat.
Exemple pour tester si la variable est un tableau après l’avoir remplie depuis un Range :
MsgBox IsArray(Tableau) 'True si Range contient plusieurs cellules
Ainsi, créer un tableau à partir d’un Range est idéal pour traiter rapidement de grandes plages de données tout en évitant des boucles inutiles sur les cellules d’Excel.