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 :

Création d'un graphe avec macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Création d'un graphe avec macro
    Bonjour à tous,

    j'ai réussi à bidouiller du code pour qu'une macro me crée un graphe de type diagramme en batons avec trois plages de données. Le problème c'est que la macro ne fonctionne pas de facon très stable. Si je la relance plusieurs fois sur les mêmes données je peux avoir soit le bon graphe, soit un graphe avec 4 (voire plus) plages de données, soit un bug au niveau de la ligne ".SeriesCollection(1).XValues = Tabelle13.Range("AB4:AP4")"




    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
     
    Tabelle13.Shapes.AddChart(xlColumnClustered, Top:=100, Left:=3000, Width:=600, Height:=300).Select
    With ActiveChart
            .Axes(xlValue).MinimumScale = 0
            .Axes(xlValue).MaximumScale = 250
            .Axes(xlValue).MajorUnit = 50
            .Axes(xlValue).MinorUnit = 10
            .ChartGroups(1).GapWidth = 0
            .ChartGroups(1).Overlap = 100
            .HasTitle = True
            .ChartTitle.Characters.Text = "CTB10: 0.08s/mm, Defocus: 0mm"
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
            .SeriesCollection(1).XValues = Tabelle13.Range("AB4:AP4")
            .SeriesCollection(1).Values = Tabelle13.Range("AB5:AP5")
            .SeriesCollection(1).Name = "50%"
            .SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range("AB17:AP17"), MinusValues:=Range("AB29:AP29")
            .SeriesCollection(2).Values = Tabelle13.Range("AB6:AP6")
            .SeriesCollection(2).Name = "85%"
            .SeriesCollection(2).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range("AB18:AP18"), MinusValues:=Range("AB30:AP30")
            .SeriesCollection(3).Values = Tabelle13.Range("AB7:AP7")
            .SeriesCollection(3).Name = "95%"
            .SeriesCollection(3).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range("AB19:AP19"), MinusValues:=Range("AB31:AP31")
    End With
    Et je vous met ce a quoi ressemble une partie de mon tableau, avec la première case étant AA4 :

    17 42.5 85 170
    50% 220 155 103 70
    85% 223 152 103 67
    95% 220 145 96 67

    Merci de votre aide si vous avez une petite idée sur ce problème

  2. #2
    Membre régulier
    Homme Profil pro
    Salarié
    Inscrit en
    Septembre 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Septembre 2012
    Messages : 49
    Points : 72
    Points
    72
    Par défaut
    Hello,

    Pour mieux comprendre tes attentes, peux tu fournir un screenshot du graph que tu attends ?
    Je pense que le problème vient des cases vides que tu as dans ton tableau.

    Alex

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    Dim Ch As Chart
    Dim k As Integer
     
    Set Ch = Tabelle13.ChartObjects.Add(100, 300, 600, 300).Chart
    With Ch
        .ChartType = xlColumnClustered
        .Axes(xlValue).MinimumScale = 0
        .Axes(xlValue).MaximumScale = 250
        .Axes(xlValue).MajorUnit = 50
        .Axes(xlValue).MinorUnit = 10
        .ChartGroups(1).GapWidth = 0
        .ChartGroups(1).Overlap = 100
        .HasTitle = True
        .ChartTitle.Characters.Text = "CTB10: 0.08s/mm, Defocus: 0mm"
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
        For k = 5 To 7
            With .SeriesCollection.NewSeries
                .XValues = Tabelle13.Range("AB4:AP4")
                .Values = Tabelle13.Range("AB" & k & ":AP" & k)
                .Name = Format(Tabelle13.Range("AA" & k), "0%")
                .ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Tabelle13.Range("AB" & 12 + k & ":AP" & 12 + k), MinusValues:=Tabelle13.Range("AB" & 24 + k & ":AP" & 24 + k)
            End With
        Next k
    End With
    Set Ch = Nothing
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Invité
    Invité(e)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci Mercatog, le fait de definir un chart a du etre bien utile. Je pense que ca va marcher sans problèmes. Du coup il ne me reste plus qu'à modifier le tout pour automatiser la création de tous les graphes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création d'un graphe via macro excel
    Par anaylane dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/04/2010, 08h08
  2. Tracé de graphes par macro - Création de séries obsolètes
    Par cyrille31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/12/2008, 11h00
  3. Création automatique de plusieurs boutons avec macro associées
    Par barjovial dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2008, 09h08
  4. Création d'un graphe avec JfreeChart
    Par med_ellouze dans le forum 2D
    Réponses: 3
    Dernier message: 18/11/2007, 22h58
  5. Création d'un bouton avec macro pour impression rapide
    Par citrouilllle dans le forum VBA Word
    Réponses: 16
    Dernier message: 13/07/2007, 23h20

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