Chart range dynamique

Bonjour,

J'ai un tableau avec les mois de l'année et je veux créer un graphique à banque mais que l'axe où il y les mois apparraissent que lorsque la données n'est pas 0. par exemple si du janvier à décembre j'ai que deux mois avec des données, je veux un graphique à banque avec que 2 mois.

J'ai donc fait une macro qui ne fonctionne pas :

Pour toutes les lignes, s'il y a des données dans le mois. j'appelle le range avec le mois.

Set nov = Worksheets("Gate_data").range("AG34:AL34")

For Each n In nov
    If n <> 0 Then
    novdata = range(Cells(n.Row, 32), Cells(n.Row, 38))
    End If
Next n

la source data ne fonctionne pas. Merci de votre aide

    ActiveSheet.Shapes.AddChart2(216, xlBarClustered).Select
    ActiveChart.SetSourceData Source:=novdata

    ActiveChart.PlotBy = xlColumns

bonjour

Pour ce que tu souhaite tu n'a pas besoin de macro, si j'ai bien compris, il te suffit de quelques zones nommées, si tu souhaite, mets un petit exemple de fichier,

Bonsoir,

SetSourceData demande dans son paramètre un objet Range.

Avec cette instruction : novdata = range(Cells(n.Row, 32), Cells(n.Row, 38)), novdata n'est pas une variable objet Range mais une variable récupérant la valeur de "range(Cells(n.Row, 32), Cells(n.Row, 38))"

set novdata = range(Cells(n.Row, 32), Cells(n.Row, 38)) serait mieux.

si je n'ai pas besoin de macro ce serait génial j'ai l'habitude de me casser la tête pour rien

Voilà un exemple de fichier et le résultat que je recherche mais de façon dynamique et le plus simple possible.

Merci

5testest.xlsx (13.50 Ko)

Merci et pour le

ctiveChart.SetSourceData Source:=novdata

est-ce que je peux mettre

ctiveChart.SetSourceData Source:=novdata & decdata & ... tous les mois .

Merci

Bonsoir,

SetSourceData demande dans son paramètre un objet Range.

Avec cette instruction : novdata = range(Cells(n.Row, 32), Cells(n.Row, 38)), novdata n'est pas une variable objet Range mais une variable récupérant la valeur de "range(Cells(n.Row, 32), Cells(n.Row, 38))"

set novdata = range(Cells(n.Row, 32), Cells(n.Row, 38)) serait mieux.

J'ai fait plusieurs essais et ça ne fonctionne toujours pas :

Sub graphique()
Dim objRange As range

Set titre = Worksheets("Gate_data").range("AF33:AL33")
Set nov = Worksheets("Gate_data").range("AG34:AL34")
Set dec = Worksheets("Gate_data").range("AG35:AL35")
Set jan = Worksheets("Gate_data").range("AG36:AL36")
Set avr = Worksheets("Gate_data").range("AG39:AL39")

For Each n In nov
    If n <> 0 Then
    Set novdata = range(Cells(34, 32), Cells(34, 38))
    End If
Next n

For Each d In dec
    If d <> 0 Then
    Set decdata = range(Cells(35, 32), Cells(35, 38))
    End If
Next d

For Each j In jan
    If j <> 0 Then
    Set jandata = range(Cells(36, 32), Cells(36, 38))
    End If
Next j

For Each a In avr
    If a <> 0 Then
    Set avrdata = range(Cells(39, 32), Cells(39, 38))
    End If
Next a

'Set myrng = range("novdata", "decdata").Select
Set objRange = Union(titre, novdata, decdata, jandata, avrdata)

objRange.Select

    ActiveSheet.Shapes.AddChart2(216, xlBarClustered).Select
    ActiveChart.SetSourceData Source:=objRange
    ActiveChart.HasLegend = True

    ActiveChart.PlotBy = xlColumns

End Sub

Bonsoir,

objRange est constitué de plages multiples disjointes (Areas). Il est fort possible (je n'ai pas vérifié) que la méthode "SetSourceData" ne l'accepte pas. Essayer avec une seule plage continue.

Rechercher des sujets similaires à "chart range dynamique"