Comment créer une table dynamique en VBA ?

Un tableau dynamique est quelque chose où vous pouvez redimensionner le tableau et lui ajouter plus de valeur lors de l’exécution du code. Dans ce tutoriel, nous allons explorer les façons d’écrire du code où vous pouvez à la fois redimensionner et ajouter plus d’éléments.

Créer un tableau dynamique en VBA

  1. Tout d’abord, déclarez un tableau avec son nom.
  2. Après cela, le nombre d’éléments a laissé les parenthèses vides.
  3. Maintenant, utilisez l’instruction ReDim.
  4. À la fin, spécifiez le nombre d’éléments que vous souhaitez ajouter au tableau.
Dim myArray() As String
ReDim myArray(5)
tableau dynamique en vba

N’oubliez pas de lire cet article de Joshua sur les performances des baies fixes et dynamiques.

Tableau multidimensionnel dynamique

L’exemple que nous avons utilisé était un tableau unidimensionnel et de la même manière, vous utilisez également l’instruction ReDim pour créer des tableaux multidimensionnels dynamiques.

Dim myArray() As String
ReDim myArray(5, 8)

Ajouter un nouvel élément à un tableau dynamique dans VBA

Un tableau dynamique n’aura aucun sens si vous ne pouvez pas y ajouter un nouvel élément. Dans l’exemple à venir, nous verrons comment ajouter de nouveaux éléments une fois que vous aurez redéfini le nombre d’éléments dans un tableau.

'declaring array with no element.
'---------------------
Dim iNames() As String
'---------------------

'declaring variables to store counter _
'and elements from the range.
'----------------------
Dim iCount As Integer
Dim iElement As Integer
'----------------------

'get the last row number to decide the _
'number of elements for the array.
'------------------------------------
iCount = Range("A1").End(xlDown).Row
'------------------------------------

're-defining the elements for the array.
'-------------------
ReDim iNames(iCount)
'-------------------

'using a for loop to add elements in the array
'from the range starting from cell A1
'--------------------------------------------------
For iElement = 1 To iCount
    iNames(iElement - 1) = Cells(iElement, 1).Value
Next iElement
'--------------------------------------------------

'print all the elements from the
'to the immediate window
'--------------------
Debug.Print iNames(0)
Debug.Print iNames(1)
Debug.Print iNames(2)
'--------------------

Comprenons ce code étape par étape.

  1. Dans la première étape, vous avez déclaré un tableau avec le nom « myArray ».
  2. Après cela, vous avez deux variables pour enregistrer les valeurs de compteur pour la boucle que vous devez utiliser plus loin dans le code pour obtenir des valeurs de la plage et ajouter ces valeurs en tant qu’éléments au tableau.
  3. Ensuite, vous avez une ligne de code pour obtenir la dernière ligne de la plage qui vous aide à connaître les éléments que vous devez ajouter au tableau.
  4. Dans la quatrième étape, vous avez utilisé l’instruction ReDim pour redéfinir les éléments du tableau à l’aide du dernier numéro de ligne obtenu à l’étape précédente.
  5. Ensuite, vous avez FOR LOOP (For Next) qui parcourt la plage à partir de la cellule A1, prend des valeurs à partir de là et les ajoute en tant qu’éléments au tableau un par un.
  6. En fin de compte, vous avez l’instruction Debug.Print pour imprimer tous les éléments de la fenêtre immédiate .

Et lorsque j’ajoute une nouvelle valeur à la plage et que je réexécute le code, il ajoute automatiquement cet élément au tableau et l’imprime dans la fenêtre immédiate .

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *