Easy-Micro

ESPACEMEMBRE Tableaux VBA
Tableau dynamique

Tableau VBA dynamique

Définition du tableau dynamique

Un tableau dynamique n'a pas un nombre de dimensions et d'éléments fixes. Il est ainsi possible, de façon dynamique, de le redimensionner selon les besoins. Les tableaux dynamiques sont créés de la façon suivante:

Dim MonTableau() as Choisir_Type_des_Variables


Avant d'utiliser ce tableau, il faut ensuite définir sa dimension par l'instruction:

ReDim MonTableau(Nb_elements)

Dim i As Integer
Dim tableaudefeuille() As String

Sub proc_recupe_nom_feuille_ds_tableau()
' Permet de redimentionner le tableau dynamiquement
' Cela évite de donner absolument un nombre précis dans les parenthèses
ReDim tableaudefeuille(Sheets.Count)
 
'Remplissage
For i = 1 To Sheets.Count
tableaudefeuille(i) = Sheets(i).Name
Next
 
'Exemple d'affichage
'Range("A10").Value = tableaudefeuille(1)
 
'Affiche tout le tableau
Dim h As Byte
For h = 1 To UBound(tableaudefeuille)
Range("A" & h).Value = tableaudefeuille(h)
Next h

End Sub

Autre exemple: Remplissage dynamique de tableau
Option Explicit
Option Base 1
Dim int_nbre_de_pays As Byte
Dim i As Byte
Dim GroupeA()

Sub proc_Coupe_du_monde()

'Numéro de la dernière ligne
int_nbre_de_pays = Range("A1").End(xlDown).Row

'Taille dynamique
ReDim GroupeA(int_nbre_de_pays)

'Remplissage dynamique
For i = 1 To UBound(GroupeA)
GroupeA(i) = Range("A" & i).Value
Next i

End Sub
Il est à noter qu'il est possible de redimensionner la taille du tableau aussi souvent que nécessaire.

Exemple de tableau dynamique dont-on ne connais pas la position en ligne
Option Explicit
Option Base 1

'Déclaration de variables
Public i As Integer
Public int_mes_pays() As String
Public int_num_de_derniere_ligne As Integer
Public int_premiere_ligne_pleine As Integer

Sub proc_los_pays_perdus()
'Exemple avec un listing qui commence sur une ligne inconnue de la colonne H

Sheets("Feuil2").Activate
Range("H1").Select

'Récupère le numéro de la première ligne de notre liste (Ctrl + Fleche bas)
int_premiere_ligne_pleine = Sheets("Feuil2").Range("H1").End(xlDown).Row

'Récupère le num de la dernière ligne (Ctrl + Fleche bas) depuis la cellule active
int_num_de_derniere_ligne = Range("H" & int_premiere_ligne_pleine).End(xlDown).Row

'Soustraction pour connaitre le nombre d'élément du tableau
int_num_de_derniere_ligne = int_num_de_derniere_ligne - int_premiere_ligne_pleine

'Redimensionne le tableau
ReDim int_mes_pays(int_num_de_derniere_ligne)

'Initialise le tableau à partir de la bonne ligne
For i = 1 To UBound(int_mes_pays)
int_mes_pays(i) = Range("H" & i + int_premiere_ligne_pleine).Value
Next i

'Affichage du tableau dans une nouvelle feuille
Sheets.Add
For i = 1 To UBound(int_mes_pays)
Range("A" & i).Value = int_mes_pays(i)
Debug.Print int_mes_pays(i) 'Affiche le tableau dans la fenêtre execution
Next i

End Sub
Exercice réalisé début décembre 2020 avec Laëtitia Gaillard, Antoine Galvan, Delphine Lardiere, Philippe Paulin et Nathalie Sabathie du Service Commun des Laboratoires

Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]