Bonjour a tous,

j'ai besoin de faire une macro pour creer un graphique. J'ai utiliser l'assistant macro d'excel, mais ca me fait un tres gros code (je trouve).
J'aurai besoin d'aide pour l'ameliorer et l'epurer :
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 Makro1()
 
    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("Graph").Range("F5")
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = _
        "='Graphikgrundlag. techn. Fortsch'!R6C3:R6C28"
    ActiveChart.SeriesCollection(1).Values = _
        "='Graphikgrundlag. techn. Fortsch'!R7C3:R7C22"
    ActiveChart.SeriesCollection(1).Name = "=""IST"""
    ActiveChart.SeriesCollection(2).Values = _
        "='Graphikgrundlag. techn. Fortsch'!R8C3:R8C24"
    ActiveChart.SeriesCollection(2).Name = "=""Soll"""
    ActiveChart.SeriesCollection(3).Values = _
        "='Graphikgrundlag. techn. Fortsch'!R9C3:R9C28"
    ActiveChart.SeriesCollection(3).Name = "=""Anbindung"""
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Graph"
    ActiveChart.Axes(xlValue).MajorGridlines.Select
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).ChartType = xlColumnClustered
End Sub
Par exemple, j'aimerai que les plages de valeurs pour les courbes en ordonnes ne soit pas fixe mais que ca aille chercher les valeurs jusqu'a la premiere case vide.

Merci d'avance pour votre aide.

J'ai trouve un bout de code que j'ai essaye d'adapter a mon cas, mais pour le moment cela ne fonctionne pas (erreur de compilation au niveau du with graphik).

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
25
26
27
Sub Courbe()
 
Dim FSGraph As Chart, Graphik As Worksheet, Donnees As Range
Dim PlageX As Range, PlageY As Range, MaSerie As Series, cmpt As Long
 
Set Graphik = Worksheets("Graphikgrundlag. techn. Fortsch")
 
With Graphik
    Set Donnees = .Range(.Cells(6, 3), .Cells(6, 3).End(xlRight)).Resize(9, 0)
End With
 
Set FSGraph = ThisWorkbook.Charts.Add
    FSGraph.ChartArea.Clear
    FSGraph.ChartType = xlXYScatter
 
Set PlageX = Donnees.Rows(1)
 
For cmpt = 1 To Donnees.Rows.Count - 1
    Set PlageY = PlageX.Offset(cmpt, 0)
    Set MaSerie = FSGraph.SeriesCollection.Newserie
 
    With MaSerie
        .Values = PlageY
        .XValues = PlageX
        .Name = Donnees.Cells(6, 3).Offset(compteur, -1)
    End With
Next cmpt