Plage de donnée dynamique et graphe 3D

d3d9x

XLDnaute Nouveau
Bonjour à tous,

Je souhaite vous soumettre un problème auquel je fais face. Je n'ai malheureusement pas trouvé la réponse que je recherchais en naviguant sur différents forums d'entraide.

Le problème concerne l'utilisation de plages de données dynamiques afin de réaliser un graphe 3D (graphe surface).

Contexte:
Je souhaite visualiser en 3D l'évolution d'une fonction f(x,y). J'ai donc réalisé une fonction en VBA qui me renvoie un tableau.
La fonction VBA fonctionne parfaitement, et me génère le tableau suivant sous forme matriciel :

0 x1 x2 x3 ....
y1 f(x,1y1) f(x1,y2) etc ...
y2
etc...

Pour créer le graphique surface, je n'ai qu'à sélectionner le tableau complet comme plage de donnée, et le graphe surface est réalisé.
L'objectif et problème est le suivant: j'aimerai créer une plage/nom plageDeDonnées = maFonction(paramètres), et envoyer ce nom au graphe. De ce fait, lorsque je modifierai le nombre de lignes ou de colonnes de mon tableau ou la fonction directement, le graphe se mettra à jour et s'adaptera aux dimensions, sans jamais avoir à afficher le tableau de valeurs.
Cela fonctionne parfaitement pour des graphes 2D, mais je bloque sur le graphe 3D.

En collant ='Feuil1'!plageDeDonnees dans la plage de données du graphe, 'Référence non valide!'
Pourtant en mettant =plageDeDonnees dans une cellule, et en propageant la formule sous forme matriciel, je retombe bien sur le résultat précédent, à savoir le tableau désiré.

Le fichier excel est joint

Voilà si vous avez des idées, merci d'avance =)

NB:
la fonction est écrite sous la forme
options base 1
function maFonction( paramètres...) as variant
dim resultat() as double
redim resultat(1 to nb_lignes, 1 to nb_colonnes) as double
maFonction = resultat
 

Pièces jointes

  • test.xlsm
    16.3 KB · Affichages: 28
  • test.xlsm
    16.3 KB · Affichages: 30
  • test.xlsm
    16.3 KB · Affichages: 29

d3d9x

XLDnaute Nouveau
Re : Plage de donnée dynamique et graphe 3D

Malheureusement non, j'ai déjà réussi à résoudre ce type de problèmes pour des graphes 2D en utilisant une combinaison plages nommées.
plageX = index(maFonction(mesParamètres);;1)
plageY = index(maFonction(mesParamètres);;2)

où maFonction renvoie un tableau/matrice à n lignes et 2 colonnes. J'utilise ensuite les deux plages précédentes lors de la réalisation de mon graphique, en utilisant comme x la formule ='nomFeuille'!plageX et en y la formule ='nomFeuille'!plageY

Cette méthode ne peut pas fonctionner pour un graphe surface, car au lieu de disposer d'une seule série, je dispose potentiellement de milliers de séries. Et je ne souhaite absolument pas créer 1001 plages de données, et les insérer, même automatiquement, dans mon graphe.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 332
Membres
103 188
dernier inscrit
evebar