VBA Dimention d'un tableau de variables et sous-tableaux

Bonjour,

J'ai une question concernant la gestion de variables tableaux sous VBA. J'ai cherché un peu partout et je n'ai pas trouvé de réponse à mes questions.

Je suis en train d'extraire des informations d'une feuille Excel dans laquelle il y a beaucoup de désordre, en vue de résumer ces informations dans une autre feuille. Pour cela j'utilise une macro. Elle a pour but de récupérer les informations et les trier. Pour cela je résume tout les informations dans un tableau à 4 dimensions défini ainsi :

Dim recap(a,b,c,d) as Variant

Avec a, b, c, d des entiers naturels quelconques.

Afin de faire le trie j'appelle un Sub. Je voudrai pouvoir utiliser ce Sub quelque soit la dimension de tableau.

Du coup mes 2 questions :

1) Étant donné que j'utilise d'autres tableaux (de dimension 2 ou plus), est-ce qu'il existe un moyen d'obtenir leur dimension à partir de leur nom ?

Exemple : recap a 4 dimensions. Alors

Ubound(recap,4)

va renvoyer d. Je voudrai obtenir le 2e argument de la fonction Ubound (ici4) en vue d'obtenir d.

2) Ici recap a 4 dimensions. Est-ce qu'il y une fonction qui permettrai de récupérer les sous-tableaux de recap ?

Exemple : recap(i,j,n,m) renvoie à une cellule de recap. Est-ce que je peux appeler un tableau de dimension 2 positionné à l'indice i de la 1ere dimension de recap, à l'indice j de la 2e dimension de recap et de taille (c,d) ?

Cordialement,

Franckouse

Bonsoir,

Sans fichier, difficile de voir ce que tu veux faire ! Tu ne joues pas dans la facilité semble-t-il. Certes une variable tableau peut avoir jusqu'à 60 dimensions, mais si on visualise assez bien mentalement des tableaux à 1, 2 ou 3 dimensions, à partir de 4 la visualisation commence à être moins immédiate...

Ceci dit quand tu déclares :

Dim Recap(a, b, c, d)

Tu devrais obtenir une erreur...

Je préfèrerais :

Dim Recap()
'... et après initialisation des variables Integer...)
ReDim Recap(a, b, c, d)

[J'ai fait l'impasse sur la déclaration et l'initialisation de tes variables Integer, mais tu l'avais également faite... Inutile de déclarer un type Variant, c'est le type par défaut quand tu ne types pas.]

Tu es en principe supposé connaître le nombre de dimensions d'un tableau que tu mets en place... tu peux toujours construire une fonction testant comme tu le fais si l'appel de la taille d'une dimension ne déclenche pas d'erreur, lorsque l'erreur survient c'est qu ça a dépassé la dernière dimension et la fonction pourra alors te renvoyer la dernière dimension valide.

Mais un tableau est un tableau, il forme un tout, tu ne peux le décomposer en agrégat de sous-tableaux.

Si tu veux en extraire un sous-tableau, tu déclares un nouveau tableau aux dimensions et à la taille que tu veux et tu extrais les éléments du premier tableau pour les affecter au nouveau tableau.

Par ailleurs, un élément de tableau peut lui-même être un tableau...

Le domaine des tableaux est vaste. Les tableaux présentent pas mal d'avantages, mais aussi des contraintes.

Quant à trier, si un tri sur un tableau à 1 ou 2 dimensions reste facile à concevoir, au-delà il conviendrait déjà de définir en quoi va consister le tri...

Cordialement.

Rechercher des sujets similaires à "vba dimention tableau variables tableaux"