Construire un Graphique composé au nombre de series variable

RaihanaTag Messages postés 18 Statut Membre -  
RaihanaTag Messages postés 18 Statut Membre -
Bonjour
Je souhaite construire un graphique à partir du tableau suivant :

Le nombre de ligne ( les modalité du "projectno" ) varie
Le graphique doit illustrer la variation de chaque modalité en fonction des mois et si une modalité s ajoute de plus, une nouvelle série doit apparaître automatiquement sur le graphe
Est il possible de le réaliser par excel ou je dois avoir recours au VBA ?
Merci pour votre aide :)

6 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Avant d'ouvrir un nouveau post, il serait préférable de répondre au précédent.

    Cela n'encourage pas de t'aider une nouvelle fois.

    https://forums.commentcamarche.net/forum/affich-32432528-comment-masquer-les-boites-de-dialogues-d-excel#p32432778
    0
    1. RaihanaTag Messages postés 18 Statut Membre
       
      Bonjour,
      Je me souviens très bien de vous avoir répondu sauf que mon commentaire n'a pas été envoyé , j' en suis , de même, étonnée
      cordialement
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Pour ajouter une série, je pense que vba est nécessaire
    Un exemple
    http://www.cjoint.com/c/EHApHy001Zn

    Cordialement
    0
    1. RaihanaTag Messages postés 18 Statut Membre
       
      Merci pour ton aide :)
      0
    2. RaihanaTag Messages postés 18 Statut Membre
       
      Bonjour,
      L ' exemple que tu m'as donné est très intéressant, j ai essayé de l'adapter à ce que je veux puisque, dans mon cas , il n y a que le nombre de lignes qui peut changer et que la graphe doit apparaître dans une autre feuille mais ça ne marche pas
      Voici mon code
      ' Graphe de Projectno
      Option Explicit
      Dim lifin As Integer
      Dim gr As Object, plage As Range
       Sub graphe_projectno()
       With Worksheets(4)
        Set gr = .ChartObjects(1).Chart
        lifin = 68
        Do While Not IsEmpty(Worksheets(3).Cells(lifin, 6))
          lifin = lifin + 1
        Loop
        Set plage = Worksheets(3).Range(Cells(68, 6), Cells(lifin, 18))
        gr.SetSourceData Source:=plage, PlotBy:=xlRows
      End With
      End Sub

      Merci d'avance .
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Dans cet exemple les feuilles données et graphique sont différentes
    http://www.cjoint.com/c/EHBlMhUflfn

    Cordialement
    0
    1. RaihanaTag
       
      Je fais quelques modifications pour arriver à ce code :
      Public Sub MajGraph()
      Dim gr As Object, plage As Range, lifin As Long
        lifin = lideb
        Do
          lifin = lifin + 1
        Loop Until Worksheets(3).Cells(lifin, 6) = ""
        lifin = lifin - 1
      
        Set plage = Worksheets(3).Range(Cells(lideb, 6), Cells(lifin, 18))
        Set gr = Worksheets(4).ChartObjects(1).Chart
        gr.SetSourceData Source:=plage, PlotBy:=xlRows
      End Sub
       

      mais il m'affiche "erreur 1004 :erreur définie par l'application ou par l'objet " au niveau du la ligne 9
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    tu n'as pas attribué de valeur à lideb, donc par défaut, lideb = 0
    dans mon exemple, j'avais déclaré lideb = 1 comme constante

    Cdlmnt
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. RaihanaTag Messages postés 18 Statut Membre
     
    J ai attribué une valeur de 68 à "lideb" mais je reçois toujours la même erreur . Je suis vraiment coincée là dessus et je m'excuse pour ce dérangement .
    cordialement
    0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Je ne vois pas ton nouveau code

    Ce code-ci fonctionne
    Il te suffit de changer les valeurs des constantes selon ta configuration (nom des feuilles, N° de lignes et de colonnes) de cette façon, tu n'as pas à toucher au corps de la procédure

    ' modifier les valeurs selon la configuration
    ' feuille données
    Const FD = "Feuil1"  ' nom feuille données
    Const lideb = 1      ' première ligne tableau des données
    Const codeb = 1      ' première colonne tableau des données
    Const cofin = 8      ' dernière colonne tableau des données
    ' feuille graphique
    Const FG = "Feuil2"  ' nom feuille du graphique
    
    Public Sub MajGraph()
    Dim gr As Object, plage As Range, lifin As Long
      lifin = lideb
      Do
        lifin = lifin + 1
      Loop Until Sheets(FD).Cells(lifin, codeb) = ""
      lifin = lifin - 1
      Set plage = Sheets(FD).Range(Cells(lideb, codeb), Cells(lifin, cofin))
      Set gr = Sheets(FG).ChartObjects(1).Chart
      gr.SetSourceData Source:=plage, PlotBy:=xlRows
    End Sub

    Si ça ne va toujours pas, envoies ton fichier (au format excel 2003 si possible) sur cjoint.com et joins le lien obtenu à ton prochain message

    Cordialement
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      1. tu peux bien sur changer le nom de la procédure
      2. quand ça plante, passes le curseur sur les variables, tu pourras ainsi avoir leur valeur (actuelle) et voir ce qui ne va pas

      Bon courage
      0
    2. RaihanaTag Messages postés 18 Statut Membre
       
      D'accord je vais essayer de le faire
      Merci pour ton aide.
      0