Insérer une nouvelle série entre "UNE" autre série

Bonjour à tous,

Est-il possible d'insérer une série dans un diagramme en poutre à un endroit précis sans pourtant remplacer une serie mais en la divisant en deux parties séparées par la nouvelle série?

Exemple:

J'aimerais pouvoir insérer la serie TOTO avec une couleur noire après chaque 400 (c'est à dire après 400, après 800, ...) en divisant la serie actuelle (qui passe par 400, 800 , ... )en 2 parties comme dans l'exemple pour la serie toto3 en vert et toto4 en violet (moins visble).

serie toto

Je ne peux pas ajouter cette serie manuellement dans le tableau des donnees car les données varient à chaque fois.

De plus ceci n'est qu'un fichier exemple et, dans le cas réel, j'ai plus de 220 séries.

Merci d'avance pour vos réponses.

Fichier

Cdlt

Elo7

Bonjour Elo7,

Ta question est assez particulière, et je ne vois pas comment garder le graphe "dynamique" avec ce que tu demandes.

Un graphe "statique" serait-il envisageable? C'est à dire:

tu saisies tes données, tu cliques sur un bouton (programmé) et le graphe se crée. Si tes données sont modifiées, le graphe ne se met PAS à jour. Il faudra recliquer sur le bouton pour le remettre à jour.

Voilà une proposition. Elle n'est PAS fonctionnelle (le fait de changer les valeurs dans ta feuille ne changera pas le graphique. Mais voilà ce que ça pourrait donner

Bonjour,

Merci pour la réponse et votre solution.

Je regarde ça dès que possible.

Cdlt

Elo7

d3d9x a écrit :

Voilà une proposition. Elle n'est PAS fonctionnelle (le fait de changer les valeurs dans ta feuille ne changera pas le graphique. Mais voilà ce que ça pourrait donner

Bonsoir d3d9x,

J'ai regardé ta solution et elle me semble pas mal, elle est super.

J'ai modifié un peu ton code (pas énormément).

Au lieu de mettre des valeurs fixes pour la valeurs des variables "donnée", j'ai mis le nom des cellules contenant les valeurs à la place et ça fonctionne bien comme je veux sur ce fichier exemple: le graphique est mis à jour et pa besoin de relancer la macro.

donnees(1) = Sheets("Tabelle1").Range("B2").Value '120
donnees(2) = Sheets("Tabelle1").Range("B3").Value '130
donnees(3) = Sheets("Tabelle1").Range("B4").Value '310
donnees(4) = Sheets("Tabelle1").Range("B5").Value '210

Maintenant ce serait bien si je peux appliquer ta solution à mon cas réel.

Encore un grannnnnnnnd Merci

Cdlt

Elo7

Ravi que ça te plaise.

Pour l'appliquer à ton problème réel, il faudrait me préciser comment tu veux t'en servir.

c-a-d :

  • si tu vas utiliser plusieurs fois le programme
  • si le nombre de données est variable
  • autres éléments pertinents

Pour tes données, tu peux remplacer mon début de code par la chose suivante:

Dim donnees() as Double
Redim donnees(1 to 1)
Dim numLigne as Long
numLigne = 2
donnees(1) = Sheets("Tabelle1").Range("B" & numLigne).Value
numLigne = numLigne +1
while Sheets("Tabelle1").Range("B" & numLigne).Value <> ""
      Redim Preserve donnees(1 to ubound(donnees,1)+1)
     numLigne = numLigne +1
End while

(Je préfère initialiser à la main la première valeur du tableau, ce qui evitera des désagréments)

Je n'ai pas testé le code mais il devrait fonctionner

d3d9x a écrit :

Ravi que ça te plaise.

Pour l'appliquer à ton problème réel, il faudrait me préciser comment tu veux t'en servir.

c-a-d :

  • si tu vas utiliser plusieurs fois le programme
  • si le nombre de données est variable
  • autres éléments pertinents

Bonjour et bon début de semaine,

concernant les précisions:

Je vais en effet utiliser le programme plusieurs fois.

Le nombre de données varie et les données ne sont pas toujours sur des lignes différentes ou sur la même colonne.

J'ai 75 lignes en tout prévues pour rentrer les données et sur chaque ligne ( et sur des colonnes différentes) il y a les valeurs de 3 séries (ce qui fait 225 séries au maximum ).

Ex: les valeurs des 3 premières séries sont en B8, F8 et G8

Les 3 suivantes sont en B9, F9 et G9 et ainsi de suite.

Toutes les lignes ne sont pas forcément remplies donc on peut avoir moins de 225 séries.

De plus la sélection des données pour créer le graphique a été auparavant réalisée à l'aide d'une macro vu le nombre élevé de séries et le fait de passer d'une colonne à une autre.

J'ai déjà essayé d'appliquer ton code à mon cas.

J'ai essayé de définir myChart comme ci-dessous mais il y a une erreur de type pourtant c'est bien le nom de mon graphique.

Dim myChart As Chart
Set myChart = Sheets("Tabelle1").ChartObjects("Diagramm 1")

Je ne comprends pas ce qui ne va pas.

Merci encore.

Cdlt

Elo7

Est-il possible de joindre ton fichier? Je t'avouerai que ce n'est pas mon kiffe de rechercher les problèmes sans fichier ^^

Je ne peux malheureusement pas joindre le fichier réel: trop de données confidentielles et tout modifier serait du travail.

Mais l'erreur se produit également dans le fichier exemple contenant ton code. En remplacant graph1 par le graphique " Diagramm 8 "de la feuille Tabelle1, ca ne marche pas ------> Erreur de type

Voici le fichier Avec ton code modifé

j'ai ajouté dans le module feuille Tabelle 1 un évènement qui permet d'activer la macro quand l'une des cellules de la plage B2:B5 est modifiée (ou activée). Mais cela n'a certainement rien à voir avec l'erreur.

Cdlt

Elo7

Hmm j'ai dû t'envoyer une mauvaise version. Voilà le corrigé.

d3d9x a écrit :

Hmm j'ai dû t'envoyer une mauvaise version. Voilà le corrigé.

Non, tu m'avais bien donné la bonne Version.

Mais c'est moi qui ai modifié. Je veux utiliser le graphique que j'ai créé au départ et non ton graphique qui est sur la feuille Graph1.

C'est pour quoi j'ai remplacé

Set maChart = Graph1
 

par

Set maChart = Sheets("Tabelle1").ChartObject("Diagramm 8")

Mais cela ne marche pas.

Cdlt

Elo7

AHHHHHHHHHHH bon bah j'annule mon rdv chez le psy

Set maChart = Sheets("Tabelle1").ChartObjects("Diagramm 8").Chart

ATTENTION ce code est présent dans 2 procédures, il faut donc le modifier 2 fois. Et la syntaxe que tu utilisais n'était pas la bonne ^^ Il manquait un "s" et un ".Chart"

EDIT : Un oubli de ma part, à changer donc

While Sheets("Tabelle1").Range("B" & numLigne).Value <> ""
      ReDim Preserve donnees(1 To UBound(donnees, 1) + 1)
      donnees(UBound(donnees, 1)) = Sheets("Tabelle1").Range("B" & numLigne).Value
     numLigne = numLigne + 1
Wend

Ca marche à présent.

Merci

Rechercher des sujets similaires à "inserer nouvelle serie entre"