Créer un graphique sans utiliser de Range

Bonjour à tous,

C’est sans doute une question idiote, mais comment fait-on pour créer un graphique sans utiliser une plage de donnée ?

Je m’explique : j’ai trois variables créer et définit dans VBA(Single) et j’aimerais faire un Pie chart avec, donc en soit rien de compliqué... Le problème c’est que ni SeriesCollection ni SetSourceData n’ont l’air de marcher...

Quelqu’un aurait-il une piste de réflexion ???

Merci de votre aide !

PS : je n’ai pas ajoute de fichier, le problème étant simple je ne pense pas que cela soit pertinent

Bonjour

si j'ai bien compris la demande.... à ma connaissance, il n'est possible de faire un graphique qu'avec des éléments qui se trouve sur une feuille excel.

donc si tu as toutes tes données dans des variables du code Excel... il faudra les coller quelque part dans une feuille pour faire le graphique....

Fred

Bonjour,

Oui effectivement c'était bien la question. Dommage alors :) Merci !

J'attends de voir si d'autres réponses peuvent être apportées, sinon je clôturerais et ferais des graph via la méthode normale.

Bonjour,

Je m’explique : j’ai trois variables créer et définit dans VBA(Single) et j’aimerais faire un Pie chart avec, donc en soit rien de compliqué... Le problème c’est que ni SeriesCollection ni SetSourceData n’ont l’air de marcher...

PS : je n’ai pas ajoute de fichier, le problème étant simple je ne pense pas que cela soit pertinent

Je crois qu'au contraire, si vous nous montriez ce que vous avez fait (sans données confidentielles et avec le code) il serait plus facile de se rendre compte de ce qui ne va pas.

Cdlt

Bonjour,

Ci-dessous la partie du code pertinente. La partie intéressante se situe après les appels de sous subs.

J’obtiens trois valeurs : Total_Production, Total_Scheduled et Total_Unscheduled, et j’aimerais en faire un PieChart.

Le code ci-dessous fonctionne, cependant je suis oblige de déclarer une Range rgData, puis de l’associer au graphique avec SetSourceData, et après seulement je peux la modifier avec la SerieCollection.

Je me demande donc s’il est possible de ne pas passer par cette déclaration de Range qui au final est inutile, non ?

Merci !

Option Explicit
Public Total_Production, Total_Scheduled, Total_Unscheduled, Availability, Deviation As Single
Public Week_Choice, Line_Start, Offset_Tab As Integer

Sub Update_OEE()

Dim ii, jj, last_line As Integer
Dim CH As Chart
Dim CO As ChartObject
Dim rgGraph, rgData As Range
Dim ns1, ns2 As Series

With ThisWorkbook.Sheets("Record_List")

    last_line = .Range("C" & .Rows.Count).End(xlUp).row
    Line_Start = 3
    Week_Choice = 17
    Offset_Tab = 7          'Between the two tab

    For ii = 3 To last_line

        If WorksheetFunction.WeekNum(.Cells(ii, 1), vbMonday) = Week_Choice Then

            Line_Start = ii
            Exit For

        End If

    Next

    For jj = Line_Start To last_line - 1

        If .Cells(jj, 2).Value = "Start process - ¹¤ÒÕ¿ªÊ¼" And .Cells(jj + 1, 2) <> "Finish process - ¹¤ÒÕ½áÊø" Then

            ThisWorkbook.Sheets("Record_List").Unprotect Password:="Tint1"
            .Cells(jj, 4).Value = "Unscheduled Event - ·Ç¼Æ»®Ê¼þ"          ' If something happen while a batch is processing, the batch has to be done again, so the stopped process become unscheduled event
            ThisWorkbook.Sheets("Record_List").Protect Password:="Tint1"

        End If

    Next

Call Calcul_Production          'Update the data for Total_Production
Call Calcul_Scheduled           'Update the data for Total_Scheduled
Call Calcul_Unscheduled         'Update the data for Total_Unscheduled

With ThisWorkbook.Sheets("Sheet1")

    Set rgGraph = .Range(.Cells(11, 10), .Cells(21, 16)) 'The range of data where the graph is going to be put
    Set rgData = .Range(.Cells(4, ii + 1), .Cells(4, ii + 6))    'The range of data used by the graph
    Set CO = .ChartObjects.Add(200, 10, 300, 150)

End With

Set CH = CO.Chart
CH.ChartType = xlPie
CH.SetSourceData rgData

With ThisWorkbook.Sheets("Sheet1").ChartObjects(1)

    .Top = rgGraph.Top
    .Left = rgGraph.Left
    .Height = rgGraph.Height
    .Width = rgGraph.Width
    .Activate

End With

ActiveChart.SeriesCollection(1).Name = "OEE"
ActiveChart.SeriesCollection(1).Values = Array(Total_Production, Total_Scheduled, Total_Unscheduled)
'ActiveChart.SeriesCollection(2).Name = "Scheduled Event - ¼Æ»®Ê¼þ"
'ActiveChart.SeriesCollection(2).Values = Total_Scheduled
'ActiveChart.SeriesCollection(3).Name = "Unscheduled Event - ·Ç¼Æ»®Ê¼þ"
'ActiveChart.SeriesCollection(3).Values = Total_Unscheduled

End With

End Sub
Rechercher des sujets similaires à "creer graphique utiliser range"