Renommer un graphe ? (utilisation de graphes multiples)

Bonjour,

J'essaie de récupérer des données que j'ai filtré pour les mettres dans des graphes, je voudrai pouvoir ajouter les données sur le même graphe, il faut donc que je puisse identifier chaque graphe. Le problème c'est que je n'arrive pas à trouver comment nommer un graphe et je n'ai pas eu beaucoup de résultats dans mes recherches. Du coup, est-ce possible ?

Concrétement je veux faire deux graphes pour la charge (un avec les V et A / temps en (h), un avec les V / Ah charge) et un pour la décharge (V/Ah décharge).

Je dois pouvoir mettre à jour les graphes depuis une autre feuille, il faut donc que je puisse les identifier.

Je joint le fichier (se réferer à la macro Graphe du module 1 (en bas du module)).

Merci à ceux qui y jetteront un oeil.

Mmm j'ai essayé de le formuler comme ceci, et j'ai ce message d'erreur. Quelqu'un sait d'où cela viens ?

Erreur d'exécution '450':

Nombre d'arguments incorrect ou affectation de propriété incorrecte

Set GrapheCharge = Worksheets("TableauCourbes").ChartObjects.Add

Sub Graphe()
Dim GrapheCharge As ChartObject
g = 0
lastColC = Cells(2, Columns.Count).End(xlToLeft).Column
For c = 1 To lastColC
    If Cells(1, c) = "Charge" Then
    lastRowC = Cells(Rows.Count, c).End(xlUp).Row
        If g = 0 Then
        Set GrapheCharge = Worksheets("TableauCourbes").ChartObjects.Add
        End If
        With GrapheCharge.Chart
        .SetSourceData (Range(Cells(2, c + 5), Cells(lastRowC, c + 6)))
        .ChartType = xlLine
        End With
    End If
    If Cells(1, c) = "Décharge" Then

    End If
Next c
End Sub

Trouvé (Il manquait les dimensions) :

Set GrapheCharge = Worksheets("TableauCourbes").ChartObjects.Add(300, 400, 220)

J'essaye d'ouvrir plusieurs graphe, mais il semble qu'il n'en ouvre qu'un, ou qu'il écrit plusieurs fois sur le même (je ne sais pas pourquoi, Excel éxécute intégralement le code lorsque je place des interruptions, donc je ne peux pas suivre pas à pas.

Sub Graphe()
Dim GrapheCharge As ChartObject
Dim GrapheDecharge As CharObject
g = 0
lastColC = Cells(2, Columns.Count).End(xlToLeft).Column
For c = 1 To lastColC
    If Cells(1, c) = "Charge" Then
    lastRowC = Cells(Rows.Count, c).End(xlUp).Row
        If g = 0 Then
            Set GrapheCharge = Worksheets("TableauCourbes").ChartObjects.Add(300, 1, 400, 220)
        End If

        With GrapheCharge.Chart
        .SetSourceData (Range(Cells(2, c + 5), Cells(lastRowC, c + 6)))
        .ChartType = xlLine
        End With
         Worksheets("TableauCourbes").Activate
    End If
    If Cells(1, c) = "Décharge" Then
        If g = 0 Then
            Set GrapheDecharge = Worksheets("TableauCourbes").ChartObjects.Add(300, 501, 400, 220)
        End If

        With GrapheDecharge.Chart
        .SetSourceData (Range(Cells(2, c + 5), Cells(lastRowC, c + 6)))
        .ChartType = xlLine
        End With
        Worksheets("TableauCourbes").Activate
    End If
    Decalage = Decalage + 30

Next c
End Sub

Bonjour,

Je ne sais pas vraiment ce que tu veux faire, mais essaie ce code pour le graphique Charge.

Cdlt.

Option Explicit

Public Sub DEMO()
Dim ws As Worksheet
Dim rngChart As Range
Dim lastRow As Long
Dim ch As ChartObject
Dim chCharge As ChartObject
Dim chDecharge As ChartObject
Dim c As Long

    Set ws = ActiveWorkbook.Worksheets("TableauCourbes")
    On Error Resume Next
    For Each ch In ws.ChartObjects
        ch.Delete
    Next ch
    On Error GoTo 0

    With ws
        lastRow = .Cells(Rows.Count, 10).End(xlUp).Row
        Set rngChart = .Range(.Cells(2, 16), .Cells(lastRow, 17))
        Set chCharge = .ChartObjects.Add(300, 1, 400, 220)
        chCharge.Name = "Graphique Charge"
        With chCharge.Chart
            .SetSourceData Source:=rngChart
            .ChartType = xlLine
        End With
    End With

End Sub

Bonjour Jean-Eric,

J'essaie de faire un graphe pour la charge et un graphe pour la décharge (d'où les tests pour savoir s'il y a besoin de les créer), ensuite je veux mettre dans les tableaux respectifs, tous les cycles de charge ou décharge de la feuille (et d'autres feuilles du même classeur mais on verra après).

Donc dans l'idée le graphe charge aurait avec les données de ce fichier, 1 courbe

Le graphe décharge en aurait 2

J'essai donc de les nommer pour pouvoir remplir les graphes, même en changeant de feuille (j'avais pensé faire avec le graphe actif, mais si on change de feuille on ne pourra plus rapeller le premier, il faut donc que j'arrive à les identifier).

PS: J'ai fait quelques petites erreurs sur le code que j'ai corrigé, je vais essayer d'adapter votre code, j'ai toujours la même erreur sur une ligne de mon code.

Bonjour,

Je viens de me replonger dessus ce matin.

Pour le moment, le programme créer un nouveau graphe pour chaque cycle, je vais regarder si j'arrive à lui dire que si le graphe éxiste, il faut qu'il ajoute les infos sur le graphe éxistant.

Je posterai si j'avance ou si je réussi à finir cette macro (ne pas tenir compte de gd et gc, c'etait juste un test).

Le code à l'heure actuelle :

Public Sub DEMO()
Dim WS As Worksheet
Dim rngChart As Range
Dim lastRow As Long
Dim ch As ChartObject
Dim chCharge As ChartObject
Dim chDecharge As ChartObject
Dim c As Long
gc = 0
gd = 0
    Set WS = ActiveWorkbook.Worksheets("TableauCourbes")
    'On Error Resume Next
    'For Each ch In WS.ChartObjects
        'ch.Delete
    'Next ch
    'On Error GoTo 0
    lastColC = Cells(2, Columns.Count).End(xlToLeft).Column
    For c = 1 To lastColC
    lastRowC = 0
    If Cells(1, c) = "Charge" And gc = 0 Then
    'Premier graphe de charge (Volts / Ah)
    With WS
        lastRowC = .Cells(Rows.Count, c - 1).End(xlUp).Row
        Set rngChart = .Range(.Cells(2, c + 4), .Cells(lastRowC, c + 5))
        Set chCharge = .ChartObjects.Add(300, 1, 400, 220)
        chCharge.Name = "Graphique Charge"
        With chCharge.Chart
            .SetSourceData Source:=rngChart
            .ChartType = xlLine
        End With
    End With

    ElseIf Cells(1, c) = "Décharge" And gd = 0 Then
    'Graphe de décharge (Volts / Ah)
    With WS
        lastRowC = .Cells(Rows.Count, c - 1).End(xlUp).Row
        Set rngDeChart = Union(.Range(.Cells(2, c + 4), .Cells(lastRowC, c + 4)), .Range(.Cells(2, c + 6), .Cells(lastRowC, c + 6)))
        Set chDecharge = .ChartObjects.Add(600, 1, 400, 220)
        chDecharge.Name = "Graphique Decharge"
        With chDecharge.Chart
            .SetSourceData Source:=rngDeChart
            .ChartType = xlLine
        End With
    End With
    End If
    Next c
End Sub

Re,

Je ne trouve pas comment formuler un test pour vérifier si le classeur éxiste. J'ai fait quelques tentatives mais je n'ai pas du prendre la formule adaptée.

J'essaie de vérifier si les graphes éxistent déjà, auquel cas Excel rajoute la courbe.

Du coup si quelqu'un voit un moyen de vérifier l'éxistence des graphes, cela m'aiderait beaucoup, Merci.

Public Sub DEMOV1()
Dim WS As Worksheet
Dim rngChart As Range
Dim lastRow As Long
Dim ch As ChartObject
Dim chCharge As ChartObject
Dim chDecharge As ChartObject
Dim c As Long
gc = 0
gd = 0
    Set WS = ActiveWorkbook.Worksheets("TableauCourbes")
    'On Error Resume Next
    'For Each ch In WS.ChartObjects
        'ch.Delete
    'Next ch
    'On Error GoTo 0
    lastColC = Cells(2, Columns.Count).End(xlToLeft).Column
    For c = 1 To lastColC
    lastRowC = 0
    If Cells(1, c) = "Charge" Then
    'Premier graphe de charge (Volts / Ah)
    With WS
        lastRowC = .Cells(Rows.Count, c - 1).End(xlUp).Row
        Set rngChart = .Range(.Cells(2, c + 4), .Cells(lastRowC, c + 4))
        Set chCharge = .ChartObjects.Add(300, 1, 400, 220)
        chCharge.Name = "Graphique Charge"
        With chCharge.Chart
            .SetSourceData Source:=rngChart
            .ChartType = xlLine
            .SeriesCollection(1).XValues = Range(Cells(3, c + 5), Cells(lastRowC, c + 5))
        End With
    End With
    'Deuxième graphe de charge (Volts et Ampères / Temps en h)
     With WS
        lastRowC = .Cells(Rows.Count, c - 1).End(xlUp).Row
        Set rngChart = Union(Range(Cells(2, c + 3), Cells(lastRowC, c + 3)), Range(Cells(2, c + 4), Cells(lastRowC, c + 4)))
        Set chCharge = .ChartObjects.Add(500, 1, 400, 220)
        chCharge.Name = "Graphique Charge Tension et Courant / Temps(h)"
        With chCharge.Chart
            .SetSourceData Source:=rngChart
            .ChartType = xlLine
            .SeriesCollection(1).XValues = Range(Cells(3, c), Cells(lastRowC, c))
        End With
    End With

    ElseIf Cells(1, c) = "Décharge" Then
    'Graphe de décharge (Volts / Ah)
    With WS
        lastRowC = .Cells(Rows.Count, c - 1).End(xlUp).Row
        Set rngDeChart = .Range(.Cells(2, c + 4), .Cells(lastRowC, c + 4))
        Set chDecharge = .ChartObjects.Add(700, 1, 400, 220)
        chDecharge.Name = "Graphique Decharge"
        With chDecharge.Chart
            .ChartType = xlLine
            .SetSourceData Source:=rngDeChart
            .SeriesCollection(1).XValues = Range(Cells(3, c + 6), Cells(lastRowC, c + 6))
        End With
    End With
    End If
    Next c
End Sub

La partie du code qui bug, j'essaie de rajouter une nouelle coiurbe et lui attribuer des valeurs mais il semble que la ligne où j'essaie de compter, d = Charts("Graphique.....).SeriesCollection.Count , erreur d'éxecution 9.

Je pense pourtant avoir vérifier les erreurs de syntaxes et autres, mais là rien ne me vient à l'esprit.

 ElseIf ed = 1 Then
        d = Charts("Graphique Decharge").SeriesCollection.Count
        d = d + 1
        Charts("Graphique Decharge").SeriesCollection.NewSeries

    Charts("Graphique Decharge").SeriesCollection(d).Values = Range(Cells(2, c + 4), Cells(lastRowC, c + 4))
    Charts("Graphique Decharge").SeriesCollection(d).XValues = Range(Cells(3, c + 6), Cells(lastRowC, c + 6))
    End If
    End If
    Next c

Réponse à ma question précedente :

Le code que j'utilise pour savoir si le graphe éxiste :

With Sheets("TableauCourbes")
     For gd = 1 To .ChartObjects.Count
        existe = .ChartObjects(gd).Name = "Graphique Decharge"
            If existe = True Then
               ed = 1
            End If
     Next gd
    End With
Rechercher des sujets similaires à "renommer graphe utilisation graphes multiples"