Bonjour à tous,

Je débute toujours sous VBA et je suis confronté à un nouveau problème.

Voilà, j'ai une feuille avec des data mises à jours automatiquement et j'aimerai afficher un graphe qui prenne en compte toutes les data. La solution la plus simple que j'ai réussi à coder est la supression du tableau précédemment existant et la création d'un nouveau prenant en compte les anciennes data plus celles ajoutées dernièrement, ce qui donne quelque chose comme ça:


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
Sub reporting4()
Dim DerColonne As Integer
Dim c As ChartObject

Sheets("Reporting").ChartObjects("Graphique 1").Delete

Set c = Sheets("Reporting").ChartObjects.Add(180, 215, 520, 200)
DerColonne = Range("IV2").End(xlToLeft).Column
c.Name = "Graphique 1"

With c.Chart
    .SetSourceData Source:=Range(Cells(15, 3), Cells(15, DerColonne))
    .SeriesCollection(1).XValues = Range(Cells(2, 3), Cells(2, DerColonne))
    .Legend.Delete
    .Axes(xlValue).MaximumScale = 35
    .SeriesCollection.NewSeries
    .SeriesCollection(2).Values = _
        "=Reporting!$C$47,Reporting!$E$47,Reporting!$G$47"    
    .SeriesCollection(2).ChartType = xlLineMarkersStacked
    .SeriesCollection(1).ApplyDataLabels
    .SeriesCollection(2).ApplyDataLabels
End With

End Sub
Or comme vous le voyez, la ligne en rouge ne prend pas en compte les modifications et à juste titre car je ne sais pas comment définir le range pour qu'il prenne une cellule sur deux d'une ligne connue.

Je sais que je commence à la cellule C47 puis E47 puis G47 ... jusqu'à Range("IV47").End(xlToLeft).Column

Est ce que vous avez une solution pour que je puisse définir ce range? J'ai lu sur d'autre forums que certains utilisaient la fonction DECALER mais je n'ai pas compris comment l'appliquer sur ce problème.

Merci par avance,
YanBos