Tableau Multidimensionnel VBA (Tableaux 2D)
In this Article
Ce tutoriel traite des tableaux bidimensionnels et multidimensionnels dans VBA.
Tableau Multidimensionnel (Tableaux 2D)
Les tableaux multidimensionnels sont des tableaux qui contiennent plus d’une dimension, généralement deux ou trois dimensions, mais les tableaux peuvent avoir jusqu’à 32 dimensions.
Déclarer un Tableau 2D
Pour créer un tableau à plus d’une dimension, utilisez des virgules pour définir chaque dimension distincte :
Dim intTab(2,3) as Integer
Remplissage d’un Tableau 2D
Le code ci-dessous remplit un tableau 2D, puis remplit les lignes et les colonnes d’une feuille de calcul avec les valeurs du tableau.
Sub Populer2D()
'déclaration du tableau 2D
Dim intA(2, 3) As Integer
'déclaration des variables
Dim rg As Integer
Dim col As Integer
'populer le tableau
intA(0, 0) = 45
intA(0, 1) = 50
intA(0, 2) = 55
intA(0, 3) = 60
intA(1, 0) = 65
intA(1, 1) = 70
intA(1, 2) = 75
intA(1, 3) = 80
intA(2, 0) = 85
intA(2, 1) = 90
intA(2, 2) = 95
intA(2, 3) = 100
'boucler dans le tableau et remplir la plage Excel
For rg = 0 To 2
For col = 0 To 3
Cells(rg + 1, col + 1).Value = intA(rg, col)
Next col
Next rg
End Sub
Votre feuille de calcul Excel devrait alors être remplie comme suit.
Remplissage d’un Tableau 2D à Partir de Données Excel
Le code ci-dessous permet de remplir un tableau 2D à partir d’une feuille de calcul Excel, puis de remplir une autre feuille avec les données.
Sub Populer2D()
'déclaration des feuilles de calcul
Dim fc_Source As Worksheet
Dim fc_Destination As Worksheet
'déclaration du tableau
Dim fcData(10, 2) As Variant
'déclaration des variables
Dim rg as Integer
Dim col As Integer
'définition de la feuille source
Set fc_Source = Worksheets("Feuil1")
'obtient les information de la feuille source et rempli le tableau
For rg = LBound(fcData, 1) To UBound(fcData, 1)
For col = LBound(fcData, 2) To UBound(fcData, 2)
fcData(rg, col) = fc_Source.Range("A2").Offset(rg, col).Value
Next col
Next rg
'définition de la feuille de destination
Set fc_Destination = Worksheets("Feuil2")
'remplissage de la feuille de destination à partir du tableau
For rg = LBound(fcData, 1) To UBound(fcData, 1)
For col = LBound(fcData, 2) To UBound(fcData, 2)
fc_Destination.Range("A1").Offset(rg,col).Value = fcData(rg, col)
Next col
Next rg
End Sub
Redimensionnement à l’Aide de ReDim et Re-Dim Preserve
Vous pouvez redimensionner un tableau à l’aide de ReDim (en savoir plus).
Sub Redimensionner2D()
'déclaration du tableau
Dim varTableau() as Variant
'déclaration de la dimension du tableau
ReDim varTableau(1, 2)
varTableau(0, 0) = "Mélanie Dupont"
varTableau(0, 1) = "Jacques Roy"
varTableau(0, 2) = "Stéphanie Tremblay"
varTableau(1, 0) = "Comptable"
varTableau(1, 1) = "Secrétaire"
varTableau(1, 2) = "Médecin"
'redimensionnement du tableau
ReDim varTableau(0, 1)
'remplissage du tableau
varTableau(0, 0) = "Mélanie Dupont"
varTableau(0, 1) = "Jacques Roy"
End Sub
Lorsque vous redéclarez le tableau, vous perdez toutes les données qu’il contenait auparavant, sauf si vous utilisez l’instruction ReDim Preserve.
Sub Redimensionner2D()
'déclaration du tableau
Dim varTableau() as Variant
'déclaration de la dimension du tableau
ReDim varTableau(1, 2)
varTableau(0, 0) = "Mélanie Dupont"
varTableau(0, 1) = "Jacques Roy"
varTableau(0, 2) = "Stéphanie Tremblay"
varTableau(1, 0) = "Comptable"
varTableau(1, 1) = "Secrétaire"
varTableau(1, 2) = "Médecin"
'redimensionnement du tableau
ReDim Preserve varTableau(1, 3)
'remplissage du tableau avec les valeurs additionnelles
varTableau(0, 3) = "Rob Barnes"
varTableau(1, 3) = "Plombier"
End Sub
Vous ne pouvez redimensionner que la dernière dimension d’un tableau si vous souhaitez conserver les données d’origine dans le tableau avec Re-Dim Preserve.
Lorsque vous cliquez sur debug, l’erreur sera mise en évidence et montrera que la première dimension du tableau n’est pas la même que la première dimension lorsque la taille du tableau a été déclarée à l’origine.