Redim tableau plusieurs dimensions - Array

Bonjour,

J'ai de l'ordre de 60000 lignes à analyser (vouer à augmenter). Tout un code permet d'en faire l'analyse et complète un tableau à 3 dimensions:

Le tableau qui se rempli est le suivant : Analyse(beaucoup, 14, 6)

la dimension 2 et 3 sont maîtrisées, cependant pour la premiere dimension, ça dépend de le base qui est analysée, il est donc compliquer d'estimer le nombre de ligne à prévoir lors de la déclaration. Par défaut jusqu'à maintenant je mettais une très grande valeur.

le tableau Analyse est ensuite utilisé pour restituer des résultats, et c'est là où ça pêche. Faire tourner des boucle sur un nombre de ligne inutilement grand prend beaucoup de temps.

Le problème, c'est que je n'ai pas trouvé de façon de réduire ce nombre de ligne (supprimer les vides) je cherche donc :

  • à utiliser une fonction de type Redim Preserve (mais ne fonctionne que sur la dernière dimension d'après l'aide)
  • avoir une fonction permettant de trouver rapidement le taux de remplissage du tableau (équivalent d'un Ubound mais pour les valeurs non vides)
- Idéalement pour chaque cas des dimensions suivante .. Analyse( x, 1,1) , Analyse(y , 2, 1) ..

PS: pas possible de partager mon code, données confidentielles. Mais il ne devrait pas y en avoir besoin.

Merci ! J'ai pas mal cherché sur notre ami Google mais on tombe trop rapidement sur Redim Preserve ou application.max qui ne fonctionnent pas, ou je n'ai pas réussi à faire fonctionner.

Bonjour,

une façon de faire : mets ta dimension variable en dernière position et adapte ton code en fonction.

sinon comment remplis-tu ce tableau ?

En effet, mettre en dernière position la dimension à réduire résout une partie du problème, mais le code est assez long avec pas mal de variables, je préférerais ne pas avoir à tout modifier.

Le tableau se rempli en fonction de beaucoup de critères. Il y a des marqueurs qui s’incrémentent de façon à savoir où en est le remplissage de chaque colonne (deuxième dimension), puis en fonction d'autres critère on incrémente la dernière dimension.

Il est compliqué de récupérer la valeur du marqueur pour chaque valeur de la 3eme dimension mais pourrait effectivement consituer une piste de recherche..

J'avais sinon penser à coder une fonction qui recevrait en argument le tableau ainsi qu'un indice de la deuxieme et troisième dimension puis qui renvoie le nombre de valeurs, mais je ne me rends pas compte du temps que va consommer cet envoie de tableau complet plusieurs fois( 14 x 6 fois (deuxième et troisième dimension)). De plus un simple "If isEmpty ((Analyse(i, 1,1)) .." suffirait il à détecter la fin du remplissage ? (le isEmpty fait-il la différence entre 0 et Vide ?)

Bonjour,

si tu remplis le tableau tu connais les dimensions. (les valeurs max utilisées pour chacune des dimensions)

connaissant les dimensions il est facile de limiter les boucles à ces dimensions.

peux-tu nous mettre ton code de chargement de ce tableau ?

J'ai réussi !

En effet j'avais eu cette idée à une époque mais je m'étais dit que ce serait long à mettre en place.

J'ai finalement mis mes marqueurs sous forme de tableau à deux dimensions, la deuxième dimension permettant de stocker la valeur Max atteinte qui est récupérée à la fin de la boucle principale.

Merci !

Rechercher des sujets similaires à "redim tableau dimensions array"