Créer un graphe sans l'activer

Résolu
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


J'aimerais créer un graphe sans l'activer en VBA.


Donc je m'interdis d'utiliser ActiveChart.truc. Comment faire ?



Mon code actuel est le suivant

Sub Graphe()

Sheets("TORONS").ChartObjects("REPRESENTATION").Activate

Q = 85
For j = 0 To UBound(MarqueurTravees)
Sheets("TORONS").Cells(Q, 15) = MarqueurTravees(j)
Sheets("TORONS").Cells(Q, 16) = 0
Q = Q + 1
Next j

With ActiveChart

.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = Range(Sheets("TORONS").Cells(85, 15), Sheets("TORONS").Cells(Q - 1, 15))
.SeriesCollection(1).Values = Range(Sheets("TORONS").Cells(85, 16), Sheets("TORONS").Cells(Q - 1, 16))
.SeriesCollection(1).ChartType = xlXYScatter
.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(0, 0, 0)
.SeriesCollection(1).Select
With Selection
.MarkerStyle = 9
.MarkerSize = 36
End With
.SeriesCollection(1).Name = "Limite inférieure de la poutre"

.SeriesCollection.NewSeries
.SeriesCollection(2).XValues = Range(Sheets("TORONS").Cells(85, 5), Sheets("TORONS").Cells(R - 1, 5))
.SeriesCollection(2).Values = Range(Sheets("TORONS").Cells(85, 6), Sheets("TORONS").Cells(R - 1, 6))
.SeriesCollection(2).ChartType = xlXYScatterLinesNoMarkers
.SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
.SeriesCollection(2).Name = "Limite supérieure de la poutre"


.SeriesCollection.NewSeries
.SeriesCollection(3).XValues = Range(Sheets("TORONS").Cells(85, 5), Sheets("TORONS").Cells(R - 1, 5))
.SeriesCollection(3).Values = Range(Sheets("TORONS").Cells(85, 7), Sheets("TORONS").Cells(R - 1, 7))
.SeriesCollection(3).ChartType = xlXYScatterLinesNoMarkers
.SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
.SeriesCollection(3).Name ="Torons"



End Sub

Comment le transformer ?

Merci d'avance.

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

A essayer, l'objet se cree, mais je n'ai pas vos donnees
Sub Graphe()
    Dim Graph As ChartObject

    'creation objet graph
    Set Graph = Sheets("TORONS").ChartObjects.Add(Range("D1").Left, Range("D1").Top, 200, 200)     'voir pour position du graph
    Graph.Name = "PRESENTATION"

    Q = 85
    For j = 0 To UBound(MarqueurTravees)
        Sheets("TORONS").Cells(Q, 15) = MarqueurTravees(j)
        Sheets("TORONS").Cells(Q, 16) = 0
        Q = Q + 1
    Next j

    With Graph
        .SeriesCollection.NewSeries
        .SeriesCollection(1).XValues = Range(Sheets("TORONS").Cells(85, 15), Sheets("TORONS").Cells(Q - 1, 15))
        .SeriesCollection(1).Values = Range(Sheets("TORONS").Cells(85, 16), Sheets("TORONS").Cells(Q - 1, 16))
        .SeriesCollection(1).ChartType = xlXYScatter
        .SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(0, 0, 0)
        .SeriesCollection(1).Select
        With Selection
            .MarkerStyle = 9
            .MarkerSize = 36
        End With
        .SeriesCollection(1).Name = "Limite inférieure de la poutre"

        .SeriesCollection.NewSeries
        .SeriesCollection(2).XValues = Range(Sheets("TORONS").Cells(85, 5), Sheets("TORONS").Cells(R - 1, 5))
        .SeriesCollection(2).Values = Range(Sheets("TORONS").Cells(85, 6), Sheets("TORONS").Cells(R - 1, 6))
        .SeriesCollection(2).ChartType = xlXYScatterLinesNoMarkers
        .SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
        .SeriesCollection(2).Name = "Limite supérieure de la poutre"


        .SeriesCollection.NewSeries
        .SeriesCollection(3).XValues = Range(Sheets("TORONS").Cells(85, 5), Sheets("TORONS").Cells(R - 1, 5))
        .SeriesCollection(3).Values = Range(Sheets("TORONS").Cells(85, 7), Sheets("TORONS").Cells(R - 1, 7))
        .SeriesCollection(3).ChartType = xlXYScatterLinesNoMarkers
        .SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
        .SeriesCollection(3).Name = "Torons"
    End With
    
    Set Graph = Nothing

End Sub
1
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de cette réponse !

J'ai cependant un problème : quand je relance la procédure, il y a une erreur au niveau de ".SeriesCollection.NewSeries". On me dit "propriété ou méthode non gérée par cet objet". Que faire ?

Merci d'avance.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,

Je vais tester en creant un graph bidon

A+
0
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
Coucou,

je ne comprends pas ta question.
que veux tu dire quand tu dis que tu veux créer un graphe sans l'activer par VBA?
Pour moi, ce n'est pas clair.
Soit tu crées un graphe manuellement, soit tu passe par vba.
Quel est le pb?
0
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

On me demande un graphe sans utiliser ActiveChart. (le pourquoi est obscure pour moi aussi mais peu importe) et plutot quelque chose qui ressemble à ce qui me propose f894009.
J'aimerai savoir comment modifier mon code dans ce sens (les graphes ne sont vraiment pas ma tasse de thé sur VBA, je l'avoue).

Merci d'avance
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,

ai oublie .Chart

avant:
With Graph


apres:
With Graph.Chart



par contre: Q ok, mais R .....???????

A+
1
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Une dernière chose : comment supprimer le graphe à l'essai suivant ?

(Le R est définit dans une autre procédure. Je n'ai posté q'un fragment de code).
0
melanie1324 Messages postés 1504 Date d'inscription   Statut Membre Dernière intervention   155
 
pour supprimer :

graph.chart.Delete

si ca ne marche pas, c'est
graph.Chart.Parent.Delete
0
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
ça ne marche pas mais je pense savoir pourquoi. Il ne trouve pas le graphe à supprimer.

A quel endroit dois je mettre cette ligne de code ?
0
Jolie_Turandot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne comprend pas, ça ne marche nul part.... Faut-il préciser quelque chose avant cette commande ? La feuille ou un truc comme ça ?

Merci.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,

mettre au debut, apres l ligne Dim:

Sheets("TORONS").ChartObjects("PRESENTATION").Delete
0