HOWTO · VBA

Déclarer et initialiser un tableau de chaînes dans VBA

Ce tutoriel montre comment déclarer et initialiser un tableau de chaînes dans VBA.

Sur cette page

Dans VBA, utilisez un tableau dynamique String() lorsque sa taille est déterminée pendant l’exécution du programme, ou indiquez des bornes explicites si le nombre d’éléments est connu. Vous pouvez remplir un tableau dynamique avec Split() ou stocker le résultat de Array() dans un Variant ; dans ce dernier cas, il s’agit d’un Variant qui contient un tableau, et non d’un tableau de chaînes typé. Les exemples ci-dessous montrent comment initialiser ces deux formes, choisir les bornes et travailler avec deux dimensions.

Déclarer et initialiser un tableau dynamique de chaînes

Un Variant peut contenir le tableau renvoyé par Array(). Ses éléments sont des Variants : cette solution est donc pratique si vous souhaitez utiliser une liste littérale sans déclarer de tableau String(). Un appel non qualifié à Array() utilise le réglage Option Base du module pour sa borne inférieure. Avec le réglage par défaut Option Base 0, le quatrième élément se trouve à l’indice 3 :

Dim animals As Variant
animals = Array("Lion", "Tiger", "Cheetah", "Monkey", "Elephant", "Zebra")
Debug.Print animals(3) affiche Monkey.

Pour créer un tableau dynamique de chaînes typé, déclarez la variable avec des parenthèses vides, puis affectez-lui le résultat de Split(). Split() découpe une chaîne délimitée et renvoie un tableau de chaînes dont les indices commencent à zéro, quel que soit le réglage Option Base du module. Cette méthode convient lorsque les valeurs proviennent d’une seule chaîne délimitée :

Dim animals() As String
animals = Split("Lion,Tiger,Cheetah,Monkey,Elephant,Zebra", ",")
Debug.Print animals(2) affiche Cheetah.

Utilisez ReDim lorsque vous devez allouer ou redimensionner un tableau dynamique avant d’affecter les éléments un par un. La déclaration Dim animals() As String déclare la variable de tableau typé ; ReDim animals(0 To 5) alloue six éléments de type String, d’indices 0 à 5.

Déclarer et initialiser un tableau de chaînes de taille fixe

Lorsque le nombre d’éléments est connu, indiquez directement les bornes inférieure et supérieure. Dim animals(0 To 5) As String crée six éléments, car les deux bornes sont incluses. Affectez chaque valeur à l’indice correspondant, puis lisez l’élément souhaité :

animals(0) = "Lion"
animals(1) = "Tiger"
animals(2) = "Cheetah"
animals(3) = "Monkey"
animals(4) = "Elephant"
animals(5) = "Zebra"
Debug.Print animals(4) affiche Elephant.

Les bornes explicites indiquent clairement les indices valides et évitent de dépendre d’une valeur par défaut du module. Dans une procédure réelle, placez la déclaration et les affectations ensemble, par exemple dans Sub StaticArrayDemo() et avant son End Sub.

Choisir les bornes du tableau et utiliser Option Base

Option Base définit la borne inférieure par défaut des tableaux déclarés dans le module sans borne inférieure explicite. Placez Option Base 1 dans la section des déclarations du module, avant les procédures. Dans ce module, Dim animals(6) As String utilise alors les indices 1 à 6. Cette directive ne modifie pas les tableaux dont les bornes sont indiquées explicitement : Dim animals(0 To 5) As String conserve donc les indices 0 à 5.

Pour faciliter la lecture et l’adaptation du code, il est souvent préférable d’indiquer explicitement les bornes. Un appel non qualifié à Array() suit le réglage Option Base du module : sa borne inférieure est 0 avec Option Base 0 et 1 avec Option Base 1. En revanche, Split() renvoie toujours un tableau dont les indices commencent à zéro, quel que soit le réglage Option Base. Utilisez VBA.Array() si vous avez besoin d’un résultat Array() dont la borne inférieure ne dépend pas du réglage du module ; cet appel qualifié utilise une borne inférieure de 0. Tenez compte de ces différences lorsque vous combinez des tableaux ou choisissez des indices.

Déclarer et remplir un tableau de chaînes multidimensionnel

Indiquez une borne inférieure et une borne supérieure pour chaque dimension. Dans Dim values(1 To 5, 1 To 5) As String, le premier indice sélectionne une ligne et le second une colonne, soit 25 éléments de type String. Des boucles imbriquées peuvent remplir chaque position ; déclarer les deux compteurs comme Integer donne à chaque variable le type numérique prévu :

Dim values(1 To 5, 1 To 5) As String
Dim i As Integer, j As Integer
For i = 1 To 5
For j = 1 To 5
values(i, j) = "The value of (" & i & "," & j & ") is " & i * j
Debug.Print values(i, j)
Next j
Next i

La grille ainsi remplie contient une étiquette et le produit des indices de ligne et de colonne ; par exemple, la position (3, 4) contient The value of (3,4) is 12. Le texte produit par cet exemple reste en anglais, car le code est conservé à l’identique. Faites correspondre les dimensions et les limites des boucles afin que chaque affectation utilise un indice déclaré dans le tableau.

Exécutez ce petit exemple Python pour voir le même principe de sélection à partir d’indices zéro que celui présenté ci-dessus :

animals = ["Lion", "Tiger", "Cheetah", "Monkey", "Elephant", "Zebra"]
print(animals[3])
Monkey