💻 Cours de programmation en VBA 📊

🔡 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 :

Tableau 1D
Tableau à 1 dimension
Tableau 2D
Tableau à 2 dimensions
Tableau 3D
Tableau à 3 dimensions

Chaque élément d’un tableau est identifié par un ou plusieurs 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 :

Preserve ne peut être utilisé que si on modifie la dernière dimension ou si le tableau est 1D.

Fonctions utiles pour les tableaux


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 :

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.