IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Création de graphique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut [VBA-E] Création de graphique
    bonjour le forum,
    j'ai un tableau (mensuel) avec des chiffres correspondant à la production de mon entreprise pour plusieur opérations . Je souhaiterai ajouter dans le même classeur un graphique qui mettrai en évidence l'évolution de la production pour chaque opération sur le mois .

    Au départ j'ai fais une macro enregistré puis je suis allé sur la faq mais les codes ne correspondent pas du tout

    avec la macro enregistrer j'obtien ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Charts.Add
        ActiveChart.ChartType = xlLineStacked
        ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy _
            :=xlColumns
        ActiveChart.SeriesCollection(1).XValues = "=Feuil1!R4C1:R34C1"
         ActiveChart.SeriesCollection(1).Name = ""opération1"""
        ActiveChart.SeriesCollection(2).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(2).Name = "=""opération2"""
        ActiveChart.SeriesCollection(3).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(4).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(5).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(6).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(7).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(8).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(9).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(10).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(11).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(12).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(13).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(14).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(15).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(16).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(17).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(18).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(19).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(20).XValues = "=Feuil1!R4C1:R34C1"
        ActiveChart.SeriesCollection(21).XValues = "=Feuil1!R4C1:R34C1"
     
        With ActiveChart
            .HasTitle = False
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "date"
            .Axes(xlValue, xlPrimary).HasTitle = False
        End With
    et les en ce qui concerne la faq le code se trouve ici http://bidou.developpez.com/faqvba/?....4#GraphCreate


    voila ce que je voudrai savoir avant de commencer à codé c'est qu'est ce qui est préférable dans mon cas?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Préférable ? La solution que tu comprends !
    Bidou te donne trois solutions pour créer un graphique puis dit comment le modifier.
    Si tes plages sont homogènes (pas de colonne ignorée) la selection par Currentregion est plus orthodoxe qu'une selection par série...

    Franchement ? C'est toi qui vois...

    Si tu as une difficulté ou une question plus précise, tu dis

    A+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    merci pour ta réponse

    j'ai choisis le code que m'a donné l'enregistreur, il me parle plus


    donc j'ai réadapter pour faire plus simple et j'ai une question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 1 To 21
      If i Mod 2 = 0 Then
        ActiveChart.SeriesCollection(i).Name = Sheets(1).Cells(2,i).Value "(Traité)"
      Else
        ActiveChart.SeriesCollection(i).Name = Sheets(1).Cells(2,i).Value "(Reçu)"
    Next i
    ce code ne fonctionne pas et le probleme est que j'ignore comment ajouter du texte (Recu ou Traité selon les cas) à la fin du nom de l'opération

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu sélectionné le graphique avant ces lignes ?

    A+

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    je pense que tu as mal compris ma question: mon probleme se situe dans la syntaxe car quand je met simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).Name = Sheets(1).Cells(2, 2).Value
    sans boucle ni rien ca fonctionne parfaitement : j'obtiens une courbe nomé comme le texte présent dans la cellule B2

    mon probleme est que je veux ajouter encore du texte au nom de la courbe

    de plus je n'arrive pas à faire ma boucle lorsue je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      Charts.Add
      ActiveChart.ChartType = xlLineStacked
      ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy _
            :=xlColumns
     
      For i = 1 To NbColonne - 1
        If i Mod 2 = 0 Then
          ActiveChart.SeriesCollection(i).Name = Sheets(1).Cells(2, i).Value(Traité)
        Else
          ActiveChart.SeriesCollection(i).Name = Sheets(1).Cells(2, i).Value
        End If
      Next i
    ca me renomme pas les courbes

    je vais mettre des msgbox pour voir si je rentre dans le if mais la je dois aller voir mon chef

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Charts.Add
    ActiveChart.ChartType = xlLineStacked
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy _
    :=xlColumns
    Si j'avais eu ces trois lignes, ej n'aurais pas posé cette question stupide
    Je regarde pour quoi ça pose pb.

    A+

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Déjà une ligne que je ne comprends pas
    ActiveChart.SeriesCollection(i).Name = Sheets(1).Cells(2, i).Value(Traité)
    C'est quoi (traité) ?

    A+

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour le reste, ce code fonctionne chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With ActiveChart
            .SeriesCollection(i).Name = Sheets(1).Cells(2, i).Value
        End With
    Tu dis

    A+

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    C'est quoi (traité) ?
    c'est le texte que je veux rajouter à la fin du nom opération (donc à la fin du Cells(2,i).value) et c'est justement ca qui me pose probleme

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Allons !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(i).Name = Sheets(1).Cells(2, i).Value & "Traité"
    Je te laisse faire l'essai avec ça

    A+

    Edit
    J'ai quand même essayé, c'est ok

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    je comprend pas pour le même code que tu m'a donné (copier coller!)

    moi il me dis erreur d'execution 438 : propriété ou méthode non géré par cet objet

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu fais bien le code que tu as mis ? Tout le code ? Le graphe doit être sélectionné...
    Désolé si j'insiste mais moi ça marche, à la différence que je mets bien "With ActiveChart" avant et "End with" après

    Tu dis

    A+

    Edit
    Je n'arrive pas à provoqué l'erreur que tu signales. Comment fais-tu ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Je n'arrive pas à provoqué l'erreur que tu signales. Comment fais-tu ?
    même en ne fesant que ca j'ai la même erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro3()
        Charts.Add
        ActiveChart.ChartType = xlLineStacked
        ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy _
            :=xlColumn
            ActiveChart.SeriesCollection(1).Name = Sheets(1).Cells(2, 2).Value
     
    End Sub

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Et si tu fais ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro3() 
      Charts.Add 
      ActiveChart.ChartType = xlLineStacked 
      ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy:=xlColumn
      with activeChart.SeriesCollection(1)
        .Name = WorkSheets(1).Cells(2, 2).Value 
      end with
    End Sub
    Tu dis

    Edit
    Sur quelle ligne, l'erreur ?

    En désespoir de cause, essaie ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro3() 
      Charts.Add 
      ActiveChart.ChartType = xlLineStacked 
      With activechart
        .SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy:=xlColumn 
        with .SeriesCollection(1) 
          .Name = WorkSheets(1).Cells(2, 2).Value 
        end with 
      end with
    End Sub

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    cela fonctionne


    maintenant je vais faire ma boucle
    je te tiens au courant de l'évolution

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Posté le: Mar Fév 28, 2006 16:40 Sujet du message:
    With ActiveChart
    .SeriesCollection(i).Name = Sheets(1).Cells(2, i).Value
    End With

    Posté le: Mar Fév 28, 2006 17:45
    Tu fais bien le code que tu as mis ? Tout le code ? Le graphe doit être sélectionné...
    Désolé si j'insiste mais moi ça marche, à la différence que je mets bien "With ActiveChart" avant et "End with" après



  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    apres m'être battu contre mon code je suis parvenu à ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Macro3()
      'recupération de la valeur de NbColonne
      Sheets("Feuil2").Visible = True
      Sheets("Feuil2").Select
      NbColonne = Range("A1").Value
      Sheets("Feuil2").Visible = False
      Sheets("Feuil1").Select
     
      'Ajout du Graphique
      Charts.Add
      ActiveChart.ChartType = xlLineStacked
      ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B4:V34"), PlotBy:=xlColumn
     
      'Nom des différentes courbes du graphique
      For i = 1 To NbColonne - 1
        If i <= NbColonne - 6 Then
          If i Mod 2 = 0 Then
            With ActiveChart.SeriesCollection(i)
              .Name = Worksheets(1).Cells(2, i).Value & "(Traité)"
            End With
          Else
     
            With ActiveChart.SeriesCollection(i)
              .Name = Worksheets(1).Cells(2, i + 1).Value & "(Reçu)"
            End With
          End If
        End If
        If i >= NbColonne - 5 Then
          With ActiveChart.SeriesCollection(i)
            .Name = Worksheets(1).Cells(2, i + 1).Value
          End With
        End If
      Next i
     
    End Sub
    qui fait a peu pres ce que je veux sauf que ca me cré plus de courbe que voulu
    (NbColonne=22 et il me crée 31 courbes avec les 21 qui ont le noms que je veux et les autres sont sans nom
    d'ou cela provient il?

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Vérifie la plage des noms. Tu n'as pas un entête de colonne vide ?

    Tu es sûr de
    NbColonne = Range("A1").Value
    ?

    A+

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    ba non j'ai même mis un MsgBox(Nbolonne) comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro3()
        'recupération de la valeur de NbColonne
        Sheets("Feuil2").Visible = True
        Sheets("Feuil2").Select
        NbColonne = Range("A1").Value
        Sheets("Feuil2").Visible = False
        Sheets("Feuil1").Select
        MsgBox (NbColonne)
        'Ajout du Graphique
    ...
    et il me met bien 22

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Déjà, pour y voir plus clair, je mettrais


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbColonne = Range("A1").Value -1
    Ça t'émancipe de -1 qui m'agace...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
         For i = 1 To NbColonne
            If i <= NbColonne - 5 Then 
                If i Mod 2 = 0 Then 
                    With ActiveChart.SeriesCollection(i) 
                      .Name = Worksheets(1).Cells(2, i).Value & "(Traité)" 
                    End With 
                Elseif i Mod 2 <> 0 then        
                    With ActiveChart.SeriesCollection(i) 
                        .Name = Worksheets(1).Cells(2, i + 1).Value & "(Reçu)" 
                    End With 
                End If 
            ElseIf i >= NbColonne - 4 Then 
                    With ActiveChart.SeriesCollection(i) 
                      .Name = Worksheets(1).Cells(2, i + 1).Value 
                    End With 
            End If 
        Next i
    Dans la ligne 2, colonne > 17, qu'as-tu comme valeur ?

    A+

Discussions similaires

  1. [VBA-E] Création d'un graphique
    Par Yolak dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/03/2008, 08h39
  2. [VBA Excel] Création d'un graphique
    Par Nyck0las dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/12/2007, 17h37
  3. VBA-E Création d'un graphique personnalisé
    Par shezam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/10/2007, 20h02
  4. [VBA-E] Création Graphique dans une boucle
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/06/2006, 10h32
  5. VBA Excel - Création de graphique
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2006, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo