Creer un graphique sans l'activer en VBA [RESOLU]

Gmollet

XLDnaute Nouveau
Bonjour Excelleurs,

Non ma question ne peut avoir pour réponse : "Enregistreur de macro"

Je veux donc creer un graphique a partir de données situé dans un autre onglet.
Mais pour se faire, je ne peux pas l'activer (que tout se fasse de façon caché).
Donc je m'interdis d'utiliser ActiveChart.truc

Mon code pour le moment est comme ca :

Code:
  For Each gph In Sheets("Feuil1").ChartObjects 'efface l'ensemble des graphiques (je crois)
         gph.Delete
    Next
    
    Application.Sheets("Feuil1").Shapes.AddChart 'ajout un graph
    
    Set graph = Sheets("Feuil1").ChartObjects(1)   'tentative de selection de celui ci
    graph.ChartType = xlLine 'operation sur le graphique .. ici ca marche pas. "objet inconnu"
    graph.SeriesCollection.NewSeries
    graph.SeriesCollection(1).Name = "='Activite'!$A$31"
    graph.SeriesCollection(1).Values = "='Activite'!$B$31:$G$31"
    graph.SeriesCollection(1).XValues = "='Activite'!$B$7:$G$7"
    graph.Axes(xlValue).DisplayUnit = xlThousands
    graph.Axes(xlValue).HasDisplayUnitLabel = True
    Set graph = Nothing


Ca plante a ligne : graph.ChartType = xlLine
Le problème est donc : je ne sais pas comment sélectionner et changer les paramètres d'un graph !

Merci pour votre aide !
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Creer un graphique sans l'activer en VBA

Bonjour,

un exemple de création de graph incorporé sur une feuille de calcul, à adapter à ton projet :
Code:
Dim c As ChartObject, s As Series
Set c = Feuil5.ChartObjects.Add(Range("L1").Left, Range("L1").Top, 350, 150)
With c.Chart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=Feuil5.Range("A1:D6"), PlotBy:=xlRows
    Set s = .SeriesCollection.NewSeries
    With s
        .Values = Feuil5.Range("M21:o21")
        .Name = Feuil5.Range("L21")
        .ChartType = xlAreaStacked
    End With
End With

bon après midi
@+
 

Gmollet

XLDnaute Nouveau
Re : Creer un graphique sans l'activer en VBA

Parfait ! Ca marche parfaitement.
Je n'avais pas pensé à ChartObjects.Add

Code:
   Set graph = Application.Sheets("Feuil1").ChartObjects.Add(Range("A1").Left, Range("A1").Top, 350, 150)
    With graph.Chart
        .ChartType = xlLine
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Name = "='Activite'!$A$31"
        .SeriesCollection(1).Values = "='Activite'!$B$31:$G$31"
        .SeriesCollection(1).XValues = "='Activite'!$B$7:$G$7"
        .Axes(xlValue).DisplayUnit = xlThousands
        .Axes(xlValue).HasDisplayUnitLabel = True
    Set graph = Nothing

Merci beaucoup !
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 523
dernier inscrit
mounir2025