Tableaux multi dimensions

Bonjour le forum,

bien que j'aie déjà une petite idée de la réponse, je vous pose quand même la question!

(Déso, je ne sais pas comment insérer une image... )

J'ai donc un tableau qui ventile l'évolution des prix des 12 composantes du prix de l'électricité nécessaire au calcul de la régularisation annuelle (mais cela pourrait être d'autres multiples choses!).

J'ai donc créé un tableau à 3 dimensions : Tableau(12,10,4) pour les 12 composantes du prix pouvant évoluer 10 fois et comprenant 4 items que je remplissais de façon classique au changement de valeur d'une cellule. Très bien, pas de souci!

Mais, comme je suis parfois (hum, souvent... ) un coupeur de cheveux en 4 et que j'apprécie le codage en un nombre de lignes minimum, je voudrais affecter ces plages de valeurs directement dans le tableau après avoir nommé ces plages.

Question : y-a-t'il moyen de dire à Excel d'affecter telle plage (composante) à telle 1ère dimension du tableau ou faut-il passer par la création de 12 tableaux, Tableau1, Tableau2,3,4,5,6,7,8,9,10,11,Tableau12 (10,4) ?

Je vous remercie de vos lumières.

curulis57 a écrit :

j'apprécie le codage en un nombre de lignes minimum,

Tiens moi aussi ...

à défaut d'une image, peut-être qu'un bout de fichier exemple serait utile ! rien que pour voir le tableau à 3 dimensions

Bonjour,

Je note que ton tableau comporte 13 éléments dans sa 1re dimension, 11 dans sa 2e et 5 dans sa 3e...

Les boucles imbriquées pour alimenter un tableau multidimensionnel de ce type n'accroissent pas de façon sensible le volume de code, je pense même que le plus souvent cela pourrait tendre à le réduire. En tout cas cela garantit la maîtrise des index d'affectation.

Bonjour MFerrand, Steelson,

merci de prendre du temps pour ma question.

tarifslampiris

Je travaille en Option Base 1, donc j'ai bien besoin d'un Tableau(12,10,4) où 12 représente le nombre de composantes (Abonnement, TIP,...) dont j'autorise les tarifs à évoluer 10 fois sur la période de facturation et qui comportent 4 éléments de calcul, le premier item étant le nombre de jours d'application d'un tarif.

Affecter chaque valeur de façon classique, aucun problème mais j'aimerais pouvoir utiliser les possibilités de VBA (range.currentregion, plages nommées,...) pour affecter ces plages de valeurs au Tableau(1 ou 2 ou 33... ou 12) en une ligne de code.

Mais, est-ce possible ?

Merci de ta réflexion. Bonne journée.

Ok en utilisant Option Base 1... Un fichier aurait renseigné sur les indications que tu omets...

Si tu prédimensionne un tableau, tu ne pourras pas affecter directement le contenu d'une plage. Tu ne peux le faire qu'à une variable de type Variant ou à tableau déclaré dynamiquement (non dimensionné). Considérer aussi qu'une plage de cellule n'a que 2 dimensions.

NB- les mots clés que tu cites renvoient des objets Excel... VBA utilise certes ces objets, c'est sa fonction, ainsi que les commandes d'Excel, mais ce qui lui est propre ce sont les commandes qui proviennent de VB, indépendamment d'Excel.

Merci de ta réponse, MFerrand,

Si tu prédimensionne un tableau, tu ne pourras pas affecter directement le contenu d'une plage. Tu ne peux le faire qu'à une variable de type Variant ou à tableau déclaré dynamiquement (non dimensionné). Considérer aussi qu'une plage de cellule n'a que 2 dimensions.

Bien d'accord! J'ai lu plusieurs articles qui développaient ces points.

Donc, en un mot comme en cent, ce que je voudrais (couper en 4) n'est pas possible !?

C'est soit, la façon classique d'attribution dans UN Tableau(12,10,4) soit, si je veux vraiment (couper en 4) ma solution rêvée, créer DOUZE Tableau1(), Tableau2()....,Tableau12() non dimensionnés auxquels je pourrais affecter une plage en 2 dimensions.

Pour la deuxième solution, (je vais chercher, pas vraiment besoin de répondre à ça), peut-on "fabriquer" un nom de tableau en concaténant le "radical" (Tableau) avec son indice (1,2,3,4...), style Tableau & Indice ?

Là, je coupe en huit, je sais!

Merci à vous! J'avance! 8)

Cela résume-t-il correctement la réalité des choses?

Bien à toi.

Tu peux mixer. Déclarer un tableau dimensionné à 12, (de type Variant, sans utilité de le préciser dans la déclaration), et à chaque élément de ce tableau affecter une plage comprenant 1 à 10 lignes et 4 colonnes (si j'en crois ton image et tes commentaires).

Je vais essayer tout cela en soirée! Plus vraiment le temps maintenant de me concentrer là-dessus...

Merci de ton aide MFerrand!

A+

Rechercher des sujets similaires à "tableaux multi dimensions"