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