Graphique dynamique

Florian2015

XLDnaute Nouveau
Bonjour à tous,

Je suis novice en VBA et c'est pourquoi je sollicite votre aide.
J'aimerai réaliser une macro pour animer un graphique excel.
Le graphique représente plusieurs courbes superposées. Je souhaiterai les faire apparaître les unes après les autres afin de voir une évolution (et qu'elles s'effacent au fur et à mesure ou bien à défaut les laisser).
L'objectif est de voir une évolution dans le temps de niveaux du fond d'un cours d'eau (pris dans le sens de la longueur (soit le profil en long du cours d'eau)).
J'ai plusieurs séries représentant chacune un niveau de fond le long du cours d'eau à un moment donné d'une crue.
En abscisse du graphique: le kilométrage du cours d'eau
En ordonnée: le niveau du lit

Je vous joins un exemple

Pourriez-vous m'apporter votre aide?
Je vous remercie par avance.
Florian
 

Pièces jointes

  • Animation.xlsx
    205.1 KB · Affichages: 61
  • Animation.xlsx
    205.1 KB · Affichages: 75
  • Animation.xlsx
    205.1 KB · Affichages: 77

CISCO

XLDnaute Barbatruc
Re : Graphique dynamique

Bonsoir

Je ne sais si c'est exactement ce que tu veux. Le principe : Tu te mets deux feuilles l'une à coté de l'autre, l'une contenant tes données, l'autre le graphique. Tu cliques sur la toupie en colonne V, et la courbe évolue sur ton graphique en utilisant successivement les données des colonnes C à... A vérifier et à améliorer.

@ plus
 

Pièces jointes

  • Animation.xlsx
    199.9 KB · Affichages: 93
  • Animation.xlsx
    199.9 KB · Affichages: 87
  • Animation.xlsx
    199.9 KB · Affichages: 72

CISCO

XLDnaute Barbatruc
Re : Graphique dynamique

Bonsoir

La même chose ou presque, avec la toupie sur le graphique et le titre qui change automatiquement.

@ plus
 

Pièces jointes

  • Animation-2.xlsx
    198.3 KB · Affichages: 81
  • Animation-2.xlsx
    198.3 KB · Affichages: 99
  • Animation-2.xlsx
    198.3 KB · Affichages: 111
Dernière édition:

Florian2015

XLDnaute Nouveau
Re : Graphique dynamique

Bonjour,

Merci pour votre réactivité!! Je ne peux pas en dire autant de moi! Désolé pour ces nouvelles tardives! Vraiment merci beaucoup pour ce que vous avez fait, c'est exactement ce dont j'ai besoin. :D

Le changement sur le graphique est très pratique!

Par contre, j'aurais besoin de pouvoir le réaliser sur d'autres documents. Je ne trouve pas la macro que vous avez faite quand je vais dans l'onglet Macro. Pourriez-vous m'expliquer la manip ou le code à rentrer? Il faudra prévoir que le nombre de séries sera différent d'un fichier à l'autre.

Par ailleurs, savez-vous s'il est possible d'apporter ces quelques évolutions : :confused:
- j'aimerais pouvoir affecter cette macro sur un graphique existant qui comprend des séries de "base" qui ne bougent pas: un fond de référence, des emplacements de ponts, etc... Sur votre exemple, lorsque je veux ajouter ces séries de référence sur le graphique animé, le titre (avec le numéro de la série qui évolue) disparaît. Serait-il donc possible de mettre ce titre de série qui évolue plutôt dans une légende?

- Je complique ma demande, est-il faisable de faire évoluer sur ce même graphique deux séries à la fois, faisant référence à deux tableaux (2 feuilles différentes). L'idée serait de faire évoluer en même temps le fond et des volumes par exemple. Ces séries ont le même nom (faisant référence à un même temps). Je vous joins un exemple avec la deuxième feuille "débits solides" qui se lit sur l'axe secondaire.

Je vous remercie par avance pour vos conseils!
Florian
 

Pièces jointes

  • Animation3.xlsx
    111.2 KB · Affichages: 67
  • Animation3.xlsx
    111.2 KB · Affichages: 71
  • Animation3.xlsx
    111.2 KB · Affichages: 52

CISCO

XLDnaute Barbatruc
Re : Graphique dynamique

Bonsoir

Il ni a pas de macro, mais des noms utilisés dans la formule définissant la courbe à afficher. Avant d'aller plus loin, regarde les noms que j'ai rajouté dans le gestionnaire de noms et dis moi si tu comprends les définitions correspondantes en DECALER(...

@ plus
 

Florian2015

XLDnaute Nouveau
Re : Graphique dynamique

Bonjour,

Merci de ta réponse.

Ok j'ai compris le principe, mis à part la fonction EQUIV( et ce que tu as mis dedans 9^9?
Aussi la formule decaler pour le titre de l'entête même si je ne saurais pas pour le moment faire évoluer le titre du graphique.

Du coup j'ai essayé de faire l'exercice avec le fichier animation 3. J'arrive à faire fonctionner la fonction decaler mais je n'arrive pas à afficher de courbe sur le graphique. J'ai essayé de reproduire ce qu'il y a dans le fichier animation-2 en créant une série de données à afficher avec en Y: 'Animation3.xlsx'!ColonneC Je ne dois pas faire la bonne manip.

Merci.
A+
 

Pièces jointes

  • Animation3.xlsx
    106.2 KB · Affichages: 48
  • Animation3.xlsx
    106.2 KB · Affichages: 51
  • Animation3.xlsx
    106.2 KB · Affichages: 56

CISCO

XLDnaute Barbatruc
Re : Graphique dynamique

Bonjour

Quelques explications :
Le nom colonneC est définie par la formule
Code:
=DECALER(feuil8!$B$2;;feuil8!$V$4;EQUIV(9^9;feuil8!$A$2:$A$423;1))

qui utilise la syntaxe DECALER(cellule initiale;décalage de x lignes;décalage de y colonnes;nombre de lignes renvoyées)

Ici on démarre en $B$2. Il ni a pas de décalage vers le bas, d'où le ;;. y est le nombre modifié à l'aide de la toupie, et affiché en V4. Donc lorsque V4 =1, la colonne considérée est la colonne C, lorsque V4=2, c'est la colonne D et ainsi de suite.
EQUIV(9^9;feuil8!$A$2:$A$423;1) EQUIV recherche un texte ou une valeur, ici 9^9 dans une plage, ici feuil8!$A$2:$A$423. Si nous avions EQUIV(9^9;feuil8!$A$2:$A$423;0), cette partie de la formule renverrai la position de ce 9^9 dans la plage feuil8!$A$2:$A$423, si 9^9 y est, et #NA dans le cas contraire. Avec EQUIV(9^9;feuil8!$A$2:$A$423;1), nous obtenons la position du dernier nombre juste inférieur à 9^9, donc la position du dernier nombre de la plage feuil8!$A$2:$A$423. Ainsi, la hauteur de la plage colonneC évolue, pour prendre en compte uniquement les cellules non vides de la colonne désignée par V14. C'est ce qu'on appelle une plage dynamique. Pour le vérifier, ouvre la fenêtre du gestionnaire de noms, sélectionne colonneC et clique sur sa définition en bas. Des pointillés entoureront la plage correspondant à colonneC sur la feuille.

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Graphique dynamique

Bonsoir

Ton dernier fichier est vraiment lourd, et fait appel à trop de données externes. Ne pourrais tu mettre sur le forum un fichier simplifié représentant bien le problème ?

En pièce jointe, un fichier avec une courbe évoluant avec la toupie, et une autre courbe fixe, correspondant à l'axe secondaire à droite. Est-ce ce que tu veux ?

@ plus
 

Pièces jointes

  • Animation-2.xlsx
    195 KB · Affichages: 64
  • Animation-2.xlsx
    195 KB · Affichages: 63
  • Animation-2.xlsx
    195 KB · Affichages: 49
Dernière édition:

Florian2015

XLDnaute Nouveau
Re : Graphique dynamique

Bonjour,

Merci pour les explications sur les formules, j'ai bien compris le principe.

Ci-joint un fichier allégé avec un graphique comportant des éléments fixes qui servent de repères ou références visuels.

L'objectif est de faire afficher et évoluer (en cliquant sur une toupie unique) plusieurs courbes sur un graphique de ce genre déjà existant.
Ces courbes correspondraient à des séries présentes dans différentes feuilles (ici "débit solide apporté" et "feuil8" qui est un niveau de fond). Ces séries correspondent un état à un même instant t (l'instant t est le titre des séries). Certaines séries doivent être affichées sur l'axe principal et d'autres sur l'axe secondaire (ici c'est le cas pour "débit solide apporté")

Merci pour la peine que tu te donnes! c'est très gentil!

A+
Florian
 

Pièces jointes

  • Animation3-1.xlsx
    82.8 KB · Affichages: 59

Florian2015

XLDnaute Nouveau
Re : Graphique dynamique

Bonjour,

Oui les colonnes A qui représentent les abscisses, ont les mêmes valeurs. Ici c'est juste un arrondi.

Merci pour tes préparations, c'est tout à fait ça ce dont j'ai besoin.:)
Juste est-il possible que tu m'explique comment faire apparaître les éléments sur le graphique? : comment dessiner les courbes en faisant référence à la formule de nom colonneC, comment intégrer les entêtes dans un encart, et comment créer la toupie? ...
Par la suite j'aurais besoin d'automatiser les choses.
Merci d'avance.

A+
Florian
 

CISCO

XLDnaute Barbatruc
Re : Graphique dynamique

Bonjour

Faut bien admettre que pour ce qui est des graphiques, c'est un peu galère car la syntaxe utilisée habituellement dans les formules ne passe pas à tous les coups.

Alors pour ce qui est de rajouter une courbe sur un graphique déjà existant :
* Sélectionner les abscisses et les ordonnées, au besoin avec Ctrl si les plages ne sont pas contiguës.
* Copier
* Cliquer sur le graphique
* Collage spécial
* Dans la nouvelle fenêtre, cocher colonnes (si on travaille en colonne :)), nom de série dans la première ligne (si c'est le cas) et abscisses dans la première colonne.

Attention, si on fixé le min et le max de l'axe des Y, il est possible que la nouvelle courbe n’apparaisse pas si elle est en dehors de cette plage [Ymin;Ymax]

Pour avoir un axe secondaire :
* Cliquer droit sur la courbe devant utiliser cet axe secondaire
* Choisir Mettre en forme une série de données
* Choisir Axe secondaire

Pour avoir une toupie :
* Développeur
* Insérer
* Choisir la toupie dans les icônes affichées
* Dessiner la toupie à l'endroit où on la veut
* Clic droit dessus
* Format de contrôle
* Valeur active : Je ne sais pas à quoi ça sert !
* Valeur min, valeur max, (changement de) pas : Pas besoin d'explication
* Cellule liée : B1 dans mon dernier fichier (Puisque les plages nommées évoluent en fonction de B1)
* Si on veut déplacer cette toupie, clic droit dessus, puis avec la petite croix noire, la faire bouger
* Si on veut la redimensionner, clic droit dessus, format de contrôle, Dimension

Pour afficher des textes évoluant sur le graphique :
* Cliquer sur le graphique
* Insertion
* Dans les formes à dessiner, choisir un rectangle
* Le dessiner à l'endroit ou on le veut
* Clic droit dessus, Format de l'objet
* Choisir la couleur du fond et du trait...
* Cliquer sur cette forme
* Dans la barre de formule, écrire = suivi de la ref ou du nom de la cellule où se trouve le contenu à afficher.


Pour utiliser des plages variables dans la définition d'une courbe :
* Donner des noms à ces plages variables avec l'onglet formule et le gestionnaire de noms
* Cliquer sur la courbe qu'on veut voir évoluer avec ces plages variables
* Dans la barre de formule, on a quelque chose du style
Code:
SERIE(Nom de la courbe (ou ref cellule contenant ce nom);plage des abscisses; plage des ordonnées;n° de la courbe sur le graphique)
On ne peut, à ma connaissance, pas modifier ces paramètres directement dans la barre de formule. Pour utiliser des plages nommées, il faut :
* Cliquer droit sur la courbe
* Choisir Sélectionner des données
* Choisir dans la liste à gauche la courbe à modifier
* Cliquer sur Modifier au dessus de cette liste
* Dans Nom de la série, changer la ref ou mettre le nom d'une cellule, ou directement entre guillemets du texte
* Dans Valeurs de la série des abscisses X, écrire après le nom de la feuille la plage nommée. Faire OK pour voir si cette syntaxe est acceptée.
En recommençant les étapes précédentes, on réaffiche cette fenêtre. En dessous de Valeurs de la série des abscisses X, la nouvelle plage est donnée sous la forme nom du fichier!nom de la plage et pas sous la forme Feuil!nom de la plage (Rem 1).
* Dans Valeurs de la série des ordonnées Y, écrire après le nom de la feuille le nom de la plage des ordonnées.


J'ai certainement oublié des choses. Essayes et reviens nous demander.

@ plus

Rem : Faudrait faire plus d'essai pour voir le pourquoi du comment. Peut être est-ce parce que le nom de la plage est valable pour tout le fichier et pas uniquement pour une feuille. A voir.
 
Dernière édition:

Discussions similaires

Réponses
19
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83