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 :

Graphique sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut Graphique sous VBA
    Bonjour,

    Je suis débutant sous VBA et je souhaite faire des graphiques.
    J'ai déniché un code sur le net mais en le compilant ça me fait des messages d'erreurs (c'est l'instruction
    ActiveChart.Location Where:=xlLocationAsObject, Name:=wsm)

    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
    Sub CreerUnGrapheSurFeuilleExistante(wsm As Worksheet)
      Charts.Add
      ActiveChart.ChartType = xlColumnClustered
      ActiveChart.SetSourceData Source:=wsm.Range("C8:F14"), PlotBy:=xlColumns
      ActiveChart.Location Where:=xlLocationAsObject, Name:=wsm
      With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Au revoir"
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
      End With
     
      'wsm.ChartObjects(1).Name = "Hello2"
     
    End Sub
    Aussi pouvez vous m'expliquer comment importer des données présent dans un vecteur pour faire nos graphique?

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je te propose ce petit bout de code fait main mais qui fonctionne très bien.
    Il créé un graphe avec, sur X, ce qui se trouve en A1:A10.
    A toi de l'adapter !
    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
    Sub CreateGraph()
     
    With Worksheets("Feuil1")
        'Delete all the graphs which are already on the worksheet
        If .ChartObjects.Count <> 0 Then .ChartObjects.Delete
     
        'Add a graph
        Charts.Add
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
     
        'Delete all series when excel fills the graph automatically
        With ActiveChart
            Do Until .SeriesCollection.Count = 0
                .SeriesCollection(1).Delete
            Loop
        End With
     
        'Set the position of the graphe (here: on the range A1:P25)
        With .ChartObjects(1)
            .Left = Range("A1:P25").Left
            .Top = Range("A1:P25").Top
            .Width = Range("A1:P25").Width
            .Height = Range("A1:P25").Height
        End With
     
        'In the graph we are creating...
        With ActiveChart
            'Set the title
            .HasTitle = True
            With .ChartTitle
                .Characters.Text = "My title"
                .Border.Weight = xlHairline
                .Font.Size = 20
            End With
     
            'Set the Y axis title
            With .Axes(xlValue)
                .HasTitle = True
                With .AxisTitle
                    .Caption = "Y axis"
                    .Font.Size = 13
                    .Font.Bold = True
                End With
            End With
     
            'Set the X axis title
            With .Axes(xlCategory)
                .HasTitle = True
                With .AxisTitle
                    .Caption = "X axis"
                    .Font.Size = 13
                    .Font.Bold = True
                End With
            End With
     
    ''***************************************************************************************************************************
    ''I- Soit on ajoute les courbes les unes après les autres avec des "NewSeries" :
    '        'Add a SerieCollection
    '        .SeriesCollection.NewSeries
    '        With .SeriesCollection(.SeriesCollection.Count)
    '            .Name = "My name"
    '            .ChartType = xlLine
    '            .Values = Worksheets("Feuil1").Range("A1:A10") 'Your Y values
    '            .XValues = Worksheets("Feuil1").Range("B1:B10") 'Your X values
    '            .Border.Weight = xlThick
    '            .Border.Color = RGB(0, 0, 255)
    '        End With
    '***************************************************************************************************************************
     
    '***************************************************************************************************************************
    'II- On peut également directement placer une range à tracer :
            .SetSourceData Source:=Worksheets("Feuil1").Range("A1:A10"), PlotBy:=xlColumns
        End With
     
    End With
     
    End Sub
    Dis-moi si tu veux d'avantage d'explications !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut Merci pour votre réponse
    Tout d'abord merci!!!

    Par contre, pouvez vous m'expliquer comment changer ce graphique (qui est en histogramme) en graphique en ligne (c'est à dire en ligne)

    De plus, je souhaite savoir s'il est possible de demander à l'utilisateur les plages il a envie de tracer ses courbes.

    Encore Merci!!!

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    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
    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
    Sub CreateGraph()
    Dim choice_deb As String
    Dim choice_fin As String
     
    With Worksheets("Feuil1")
        choice_deb = InputBox("Cellule de départ ?", "Plage de cellules", "A1")
        choice_fin = InputBox("Cellule de fin ?", "Plage de cellules", choice_deb)
     
        'Delete all the graphs which are already on the worksheet
        If .ChartObjects.Count <> 0 Then .ChartObjects.Delete
     
        'Add a graph
        Charts.Add
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
     
        'Delete all series when excel fills the graph automatically
        With ActiveChart
            Do Until .SeriesCollection.Count = 0
                .SeriesCollection(1).Delete
            Loop
        End With
     
        'Set the position of the graphe (here: on the range A1:P25)
        With .ChartObjects(1)
            .Left = Range("A1:P25").Left
            .Top = Range("A1:P25").Top
            .Width = Range("A1:P25").Width
            .Height = Range("A1:P25").Height
        End With
     
        'In the graph we are creating...
        With ActiveChart
            'Set the title
            .HasTitle = True
            With .ChartTitle
                .Characters.Text = "My title"
                .Border.Weight = xlHairline
                .Font.Size = 20
            End With
     
            'Set the Y axis title
            With .Axes(xlValue)
                .HasTitle = True
                With .AxisTitle
                    .Caption = "Y axis"
                    .Font.Size = 13
                    .Font.Bold = True
                End With
            End With
     
            'Set the X axis title
            With .Axes(xlCategory)
                .HasTitle = True
                With .AxisTitle
                    .Caption = "X axis"
                    .Font.Size = 13
                    .Font.Bold = True
                End With
            End With
     
    ''***************************************************************************************************************************
    '''I- Soit on ajoute les courbes les unes après les autres avec des "NewSeries" :
    '        'Add a SerieCollection
    '        .SeriesCollection.NewSeries
    '        With .SeriesCollection(.SeriesCollection.Count)
    '            .Name = "My name"
    '            .ChartType = xlLine
    '            .Values = Worksheets("Feuil1").Range(choice_deb & ":" & choice_fin) 'Your Y values
    '        'Met la plage que tu souhaites sur X
    '            '.XValues = Worksheets("Feuil1").Range("B1:B10") 'Your X values
    '            .Border.Weight = xlThick
    '            .Border.Color = RGB(0, 0, 255)
    '        End With
    '***************************************************************************************************************************
     
    'II- On peut également directement placer une range à tracer :
            .SetSourceData Source:=Worksheets("Feuil1").Range(choice_deb & ":" & choice_fin), PlotBy:=xlColumns
     
            With ActiveChart
                For i = 1 To .SeriesCollection.Count
                    .SeriesCollection(i).ChartType = xlLine
                Next i
            End With
     
        End With
     
    End With
     
    End Sub
    Dis moi si cela te convient !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Merci Kimi Ire.

    Oui j'ai encore quelques modifications à apporter dans le code
    => j'ai envie que l'utilisateur donne via un inputbox la plage où les données sont présentes .
    => de plus j'ai envie de réaliser deux graphiques (l'un pour des données A, l'autre pour des données B) sur la même page que celle où est présente les données.

    Enfin : à quoi sert l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"

    Merci d'avance

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    => j'ai envie que l'utilisateur donne via un inputbox la plage où les données sont présentes .
    Le code que je t'ai donné permet à l'utilisateur de sélectionner des données, non ? Cela ne te convient pas ?
    => de plus j'ai envie de réaliser deux graphiques (l'un pour des données A, l'autre pour des données B) sur la même page que celle où est présente les données.
    Je ne comprends pas bien. Tu veux tracer deux graphes ? Un avec les données de la colonne A et l'autre de la colonne B, c'est ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
    Enfin, ceci sert à placer le graphe sur une feuille (ici la feuille "Feuil1") et non pas créer un graphe dans un nouvel onglet.

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

Discussions similaires

  1. Nommenclature graphique sous VBA
    Par p51 mustang dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/12/2010, 20h49
  2. Graphiques sous VBA (excel)
    Par charlotte3 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/08/2009, 16h22
  3. Graphique sous VBA Excel 2003
    Par sincenono dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/01/2009, 13h44
  4. graphique sous vba
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/05/2008, 16h31
  5. [VBA-E]Deplacer un graphique sous Excel
    Par gaudy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2006, 06h43

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