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éer plusieurs graphiques à partir d'un tableau [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut Créer plusieurs graphiques à partir d'un tableau
    Bonjour à tous,
    Je suis novice en VBA donc quand un bout de code marche, j'ai tendance à le réutiliser plusieurs fois, ce qui est peut être à l'origine du problème.

    Voici le problème :
    Je souhaite créer des graphiques en colonnes repésenants le nombre d'inclusions ( par exemples : Sulfures, Oxydes d'aluminium...) en fonction de leur diamètre.
    Pour cela j'ai créer un tableau que voici :



    Puis j'utilise le code suivant pour créer un histogramme pour chaque type d'inclusion ( NdeT, Oxys...) :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    'graphique du nombre d'inclusions en fonction du diamètre
    Dim mongraphe As Chart, mafeuille As Worksheet, plagedonnees As Range
     Set mafeuille = ThisWorkbook.Worksheets("Données")
     With mafeuille
        Set plagedonnees = .Range(.Cells(5, 54), .Cells(17, 55))
        End With
        Set mongraphe = ThisWorkbook.Charts.Add
        mongraphe.ChartArea.Clear
        mongraphe.ChartType = xl3Colums
        mongraphe.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe.HasLegend = False
        mongraphe.HasTitle = True
        mongraphe.ChartTitle.Text = "Inclusions en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe Inclusions"
       End With
     
     
     
    'graphique du nombre de NdeT en fonction du diamètre
    Dim mongraphe1 As Chart, mafeuille1 As Worksheet, plagedonnees1 As Range
     Set mafeuille1 = ThisWorkbook.Worksheets("Données")
     With mafeuille1
        Set plagedonnees1 = .Range(.Cells(5, 56), .Cells(17, 57))
       End With
        Set mongraphe1 = ThisWorkbook.Charts.Add
        mongraphe1.ChartArea.Clear
        mongraphe1.ChartType = xl3Colums
        mongraphe1.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe1.HasLegend = False
       mongraphe1.HasTitle = True
       mongraphe1.ChartTitle.Text = "NdeT en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe NdeT"
        End With
     
     
     
    'graphique du nombre d'OxyS en fonction du diamètre
    Dim mongraphe2 As Chart, mafeuille2 As Worksheet, plagedonnees2 As Range
     Set mafeuille2 = ThisWorkbook.Worksheets("Données")
     With mafeuille2
        Set plagedonnees2 = .Range(.Cells(5, 58), .Cells(17, 59))
        End With
        Set mongraphe2 = ThisWorkbook.Charts.Add
        mongraphe2.ChartArea.Clear
        mongraphe2.ChartType = xl3Colums
        mongraphe2.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe2.HasLegend = False
        mongraphe2.HasTitle = True
        mongraphe2.ChartTitle.Text = "OxyS en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe OxyS"
        End With
     
     
     
    'graphique du nombre de sulfures en fonction du diamètre
    Dim mongraphe3 As Chart, mafeuille3 As Worksheet, plagedonnees3 As Range
     Set mafeuille3 = ThisWorkbook.Worksheets("Données")
     With mafeuille3
        Set plagedonnees3 = .Range(.Cells(5, 60), .Cells(17, 61))
        End With
        Set mongraphe3 = ThisWorkbook.Charts.Add
        mongraphe3.ChartArea.Clear
        mongraphe3.ChartType = xl3Colums
        mongraphe3.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe3.HasLegend = False
        mongraphe3.HasTitle = True
        mongraphe3.ChartTitle.Text = "Sulf en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe Sulf"
        End With
     
     
     
     
    'graphique du nombre d'OxyCa en fonction du diamètre
    Dim mongraphe4 As Chart, mafeuille4 As Worksheet, plagedonnees4 As Range
     Set mafeuille4 = ThisWorkbook.Worksheets("Données")
     With mafeuille4
        Set plagedonnees4 = .Range(.Cells(5, 62), .Cells(17, 63))
        End With
        Set mongraphe4 = ThisWorkbook.Charts.Add
        mongraphe4.ChartArea.Clear
        mongraphe4.ChartType = xl3Colums
        mongraphe4.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe4.HasLegend = False
        mongraphe4.HasTitle = True
        mongraphe4.ChartTitle.Text = "OxyCa en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe OxyCa"
        End With
     
     
     
     
    'graphique du nombre d'OxyMg en fonction du diamètre
    Dim mongraphe5 As Chart, mafeuille5 As Worksheet, plagedonnees5 As Range
     Set mafeuille5 = ThisWorkbook.Worksheets("Données")
     With mafeuille5
        Set plagedonnees5 = .Range(.Cells(5, 64), .Cells(17, 65))
        End With
        Set mongraphe5 = ThisWorkbook.Charts.Add
        mongraphe5.ChartArea.Clear
        mongraphe5.ChartType = xl3Colums
        mongraphe5.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe5.HasLegend = False
        mongraphe5.HasTitle = True
        mongraphe5.ChartTitle.Text = "OxyMg en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe OxyMg"
        End With
     
     
     
     
     
    'graphique du nombre d'inclusions en fonction du diamètre
    Dim mongraphe6 As Chart, mafeuille6 As Worksheet, plagedonnees6 As Range
     Set mafeuille6 = ThisWorkbook.Worksheets("Données")
     With mafeuille6
        Set plagedonnees6 = .Range(.Cells(5, 66), .Cells(17, 67))
        End With
        Set mongraphe6 = ThisWorkbook.Charts.Add
        mongraphe6.ChartArea.Clear
        mongraphe6.ChartType = xl3Colums
        mongraphe6.SeriesCollection.Add plagedonnees, xlColumns, , True
        mongraphe6.HasLegend = False
        mongraphe6.HasTitle = True
        mongraphe6.ChartTitle.Text = "OxyAl en fonction des classes de diamètre"
     
         With ActiveChart
            .Name = "gphe OxyAl"
        End With

    J'obtiens bien un graphique pour chaque type d'inclusion (titres différents ....), mais toujours les valeurs de la colonne "inclusions"




    Pouvez vous me dire ce qui bloque dans le code?
    Je vous remercie

    (P.S. : Merci à J-M Rabilloud pour sa "Formation Excel-VBA Debutant")

  2. #2
    Expert éminent 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
    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
    Dim ws As Worksheet
    Dim Plage As Range
    Dim Graph As Chart
     
    Set ws = Worksheets("Data")            'à adapter
       With ws
          Set Plage = Union(.Range("BB5:BC17"), .Range("BE5:BE17"), .Range("BG5:BG17"), .Range("BI5:BI17"))  'à adapter
       End With
       Set Graph = Charts.Add.Location(xlLocationAsObject, ws.Name)
          With Graph
             .ChartType = xl3DColumn
             .SeriesCollection.Add Plage, xlColumns, , True
             .HasLegend = False
             .HasTitle = True
             .ChartTitle.Text = "Inclusions en fonction des classes de diamètre"
          End With
       Set Graph = Nothing
    Set ws = Nothing

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Merci beaucoup pour l'aide.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/02/2014, 15h51
  2. [XL-2002] Créer un graphique à partir des données d'un tableau
    Par Maze0 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/04/2012, 16h10
  3. [AC-2003] Créer plusieurs graphiques à partir d'une requête
    Par DonKnacki dans le forum IHM
    Réponses: 4
    Dernier message: 23/06/2011, 09h33
  4. Créer un graphique à partir de plusieurs bases
    Par zorgov dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 28/10/2008, 15h48
  5. [MySQL] supprimer plusieurs tuples à partir d'un tableau
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/08/2006, 12h14

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