Variable Tableau dynamique à 2 dimensions - Comment déclarer les dimensions

Bonjour à tous,

Je cherche a récupérer des données dans plusieurs classeur Excel et à les agréger au sein d'une même variable tableau VBA.

Important : les nombres de lignes, de colonnes et de classeurs sont inconnus à l'avance.

Avant de me lancer tête baissée dans cette quête, j'ai modélisé mon idée sur un fichier simplifié (que vous trouverez en PJ). NB : j'ai remplacé les différents classeurs par 3 onglets (nommés C1,C2,C3) pour que ce soit plus simple.

Dans ma première étape, j'ai déjà cherché à récupérer les données pour 1 seul classeur (1 seul onglet dans mon exemple). j'ai donc écris la procédure suivante :

Sub TestTab1()
Dim DataWRH(i, x) As Variant
Dim i, x As Byte
i = 1

While i <= Feuil1.Range("A1").End(xlDown).Row
x = 1

While x <= 3

DataWRH(i, x) = Feuil1.Cells(i, x).Value
Feuil4.Cells(i, x) = DataWRH(i, x)

x = x + 1

Wend

i = i + 1

Wend

End Sub

Mon problème : Si dans ma déclaration Dim DataWRH(i, x) As Variant je n'affecte pas des constantes, la procédures ne fonctionne pas. Comment faire ?

Merci pour vos contributions.

Bonne journée à tous !

4test-macro.xlsm (17.70 Ko)

update : J'ai fini par trouver par moi-même.

Il suffisait d'ajouter la fonction Redim

Voici comment :

Sub TestTab1()
Dim DataWRH() As Variant
Dim i, x As Byte
i = 1

' Ajout de ReDim
ReDim DataWRH(Feuil1.Range("A1").End(xlDown).Row, Feuil1.Range("A1").End(xlToRight).Column)

While i <= Feuil1.Range("A1").End(xlDown).Row
x = 1

While x <= Feuil1.Range("A1").End(xlToRight).Column

DataWRH(i, x) = Feuil1.Cells(i, x).Value
Feuil4.Cells(i, x) = DataWRH(i, x)

x = x + 1

Wend

i = i + 1

Wend

End Sub
Rechercher des sujets similaires à "variable tableau dynamique dimensions comment declarer"