Utiliser Les Variables Tableaux En VBA Excel - SilkyRoad

Tous les exemples vus jusqu'à présent étaient à dimension unique:Dim NomTableau(2) As String 'déclare un tableau fixeReDim LeTableau(i) 'Redimensionne un tableau dynamique De la même manière, il est possible de créer des tableaux multidimensionnels statiques et dynamiques. Vous pouvez déclarer jusqu'à 60 dimensions dans une variable tableau. Il suffit d'insérer des virgules pour séparer chaque dimension, quand vous déclarez le tableau. Cet exemple déclare un tableau de 3 dimensions: Dim NomTableau(5, 10, 20) As Integer Le nombre total d'éléments disponible est donc le produit des tailles de toutes les dimensions.

Lorsque vous souhaitez agrandir un tableau dynamique tout en conservant les données existantes, seule la dernière dimension peut être redimensionnée (Voir le chapitre ReDim Preserve pour plus de détails).

Utilisez des boucles imbriquées pour manipuler les tableaux à plusieurs dimensions.

VbaSélectionnezOption Explicit Sub ExempleTableau_MultiDimensionnel() Dim i As Integer, j As Integer 'Définit le tableau à 2 dimensions ainsi que leur taille. Dim VarTab(1 To 3, 1 To 6) As String For i = 1 To UBound(VarTab, 1) 'boucle sur la 1ere dimension For j = 1 To UBound(VarTab, 2) 'boucle sur la 2eme dimension 'Alimente les éléments du tableaux VarTab(i, j) = i & j 'Lit les éléments du tableau Debug.Print VarTab(i, j) Next j Next i End Sub

Le code suivant alimente chaque élément du tableau avec des lettres aléatoires, entre A et Z. Ensuite la macro trie par ordre croissant une des colonnes (au choix de l'utilisateur), dans la 1ere dimension du tableau.

VbaSélectionnezOption Explicit Sub TriCroissantMulticolonnes() 'Déclare un tableau à 2 dimensions. Dim Tableau(1 To 4, 1 To 50) As String Dim i As Integer, j As Integer, y As Integer Dim indexColTri As Byte Dim t As Variant Dim Resultat As String '-----Chargement du tableau ----------------- 'Remplit chaque élément avec des lettres aléatoires, entre A et Z For i = 1 To UBound(Tableau, 2) For j = 1 To UBound(Tableau, 1) Randomize Tableau(j, i) = Chr(Int((26 * Rnd) + 1) + 64) Next j Next i '-------------------------------------------- '---- Applique un tri sur une des colonnes du tableau ----- 'Choisissez la colonne à trier: 1= 1ere colonne , 2= 2eme colonne...etc ... indexColTri = 1 'On sort si l'index de colonne indiqué (indexColTri) est plus grand que la taille de la première 'dimension dans le tableau. If indexColTri > UBound(Tableau, 1) Then Exit Sub For i = 1 To UBound(Tableau, 2) For j = 1 To UBound(Tableau, 2) - 1 '--------- 'syntaxe pour le tri de données type Date 'If CDate(Tableau(indexColTri, j)) > CDate(Tableau(indexColTri, j + 1)) Then 'Pensez à adapter le type de variable: Dim Tableau(1 To 4, 1 To 50) As Date 'syntaxe pour le tri de données type numérique 'If CDec(Tableau(indexColTri, j)) > CDec(Tableau(indexColTri, j + 1)) Then 'Pensez à adapter le type de variable: Dim Tableau(1 To 4, 1 To 50) As Long ... 'syntaxe pour le tri de données type Texte If Tableau(indexColTri, j) > Tableau(indexColTri, j + 1) Then '--------- For y = 1 To UBound(Tableau, 1) t = Tableau(y, j) Tableau(y, j) = Tableau(y, j + 1) Tableau(y, j + 1) = t Next y End If Next j Next i '------------------------------------------------------------ '---- Affiche le résultat dans la fenêtre d'exécution ------- For i = 1 To UBound(Tableau, 2) Resultat = "" For j = 1 To UBound(Tableau, 1) Resultat = Resultat & Tableau(j, i) & vbTab Next j Debug.Print Resultat Next i '------------------------------------------------------------ End Sub

Tag » Code Vba Pour Créer Un Tableau