Bonjour le forum,
Voici quelques jours que je cherche sans succès un moyen d'ajouter des courbes sur mon graphique en fonction du ième clique.
Concrètement, dans le code si après (qui marche à peu près bien), pour générer mes différentes courbes, après la première, j'écris dans la cellule I1 le chiffre (2 ou 3 ou 4....).
Il y a t'il moyen de contourner cette parade en créant par exemple un compteur des clics qui serait remplacé par "nb".
Aller trop de bavardage, voici le code.
Merci de vos apports!
Sub Graph()
Dim dl As Long, c As Range, nb As Integer
nb = Sheets("DV").Range("I1").Value
dl = Sheets("Graphe").Range("A" & Rows.Count).End(xlUp).Row
On Error GoTo GestError
Set Grph = Sheets("DV").ChartObjects("Graphique 1")
If Not Grph Is Nothing Then 'MsgBox "Le graphique existe"
Grph.Activate
With ActiveChart
.ChartArea.Select
.SeriesCollection.NewSeries
.SeriesCollection(nb).XValues = ThisWorkbook.Sheets("Graphe").Range("a2:a" & dl).Value
.SeriesCollection(nb).Values = ThisWorkbook.Sheets("Graphe").Range("b2:b" & dl).Value
.SeriesCollection(nb).Name = ThisWorkbook.Sheets("DV").Range("F2").Value
End With
Else
GestError:
Set c = Sheets("Graphe").Range("A2:B" & dl)
Set dv = ThisWorkbook.Charts.Add
With dv
.SetSourceData Source:=c, PlotBy:=xlColumns
.SeriesCollection(1).XValues = ThisWorkbook.Sheets("Graphe").Range("a2:a" & dl).Value
.SeriesCollection(1).Values = ThisWorkbook.Sheets("Graphe").Range("b2:b" & dl).Value
.SeriesCollection(1).Name = ThisWorkbook.Sheets("DV").Range("F2").Value
End With
With dv
.HasTitle = True
.ChartType = xlLine
.Location Where:=xlLocationAsObject, Name:="DV"
End With
Set Z = ActiveChart
Z.ChartTitle.Characters.Text = "Courbe de tendance engrais"
Z.Axes(xlValue, xlPrimary).HasTitle = True
Z.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Prix"
Z.Axes(xlCategory, xlPrimary).HasTitle = False
Z.ChartArea.Font.Size = 14
Application.ScreenUpdating = True
'faire le ménage
Set dv = Nothing
'Set gr = Nothing
'Dimension du graphique
Dim FL1 As Worksheet
Dim ChObj As ChartObject
Set FL1 = Sheets("DV")
Set ChObj = FL1.ChartObjects(FL1.ChartObjects.Count)
'pour dimensionner le graphique
With ChObj
.Height = 410
.Width = 1400
.Top = [A4].Top
.Left = [A4].Left
End With
'pour dimensionner la zone de traçage
With ChObj.Chart.PlotArea
.Height = 800
.Width = 1100
.Left = 15
.Top = 35
End With
End If
End Sub
Voici quelques jours que je cherche sans succès un moyen d'ajouter des courbes sur mon graphique en fonction du ième clique.
Concrètement, dans le code si après (qui marche à peu près bien), pour générer mes différentes courbes, après la première, j'écris dans la cellule I1 le chiffre (2 ou 3 ou 4....).
Il y a t'il moyen de contourner cette parade en créant par exemple un compteur des clics qui serait remplacé par "nb".
Aller trop de bavardage, voici le code.
Merci de vos apports!
Sub Graph()
Dim dl As Long, c As Range, nb As Integer
nb = Sheets("DV").Range("I1").Value
dl = Sheets("Graphe").Range("A" & Rows.Count).End(xlUp).Row
On Error GoTo GestError
Set Grph = Sheets("DV").ChartObjects("Graphique 1")
If Not Grph Is Nothing Then 'MsgBox "Le graphique existe"
Grph.Activate
With ActiveChart
.ChartArea.Select
.SeriesCollection.NewSeries
.SeriesCollection(nb).XValues = ThisWorkbook.Sheets("Graphe").Range("a2:a" & dl).Value
.SeriesCollection(nb).Values = ThisWorkbook.Sheets("Graphe").Range("b2:b" & dl).Value
.SeriesCollection(nb).Name = ThisWorkbook.Sheets("DV").Range("F2").Value
End With
Else
GestError:
Set c = Sheets("Graphe").Range("A2:B" & dl)
Set dv = ThisWorkbook.Charts.Add
With dv
.SetSourceData Source:=c, PlotBy:=xlColumns
.SeriesCollection(1).XValues = ThisWorkbook.Sheets("Graphe").Range("a2:a" & dl).Value
.SeriesCollection(1).Values = ThisWorkbook.Sheets("Graphe").Range("b2:b" & dl).Value
.SeriesCollection(1).Name = ThisWorkbook.Sheets("DV").Range("F2").Value
End With
With dv
.HasTitle = True
.ChartType = xlLine
.Location Where:=xlLocationAsObject, Name:="DV"
End With
Set Z = ActiveChart
Z.ChartTitle.Characters.Text = "Courbe de tendance engrais"
Z.Axes(xlValue, xlPrimary).HasTitle = True
Z.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Prix"
Z.Axes(xlCategory, xlPrimary).HasTitle = False
Z.ChartArea.Font.Size = 14
Application.ScreenUpdating = True
'faire le ménage
Set dv = Nothing
'Set gr = Nothing
'Dimension du graphique
Dim FL1 As Worksheet
Dim ChObj As ChartObject
Set FL1 = Sheets("DV")
Set ChObj = FL1.ChartObjects(FL1.ChartObjects.Count)
'pour dimensionner le graphique
With ChObj
.Height = 410
.Width = 1400
.Top = [A4].Top
.Left = [A4].Left
End With
'pour dimensionner la zone de traçage
With ChObj.Chart.PlotArea
.Height = 800
.Width = 1100
.Left = 15
.Top = 35
End With
End If
End Sub