Créer un graphe sans l'activer

Résolu
Jolie_Turandot Messages postés 27 Statut Membre -  
Jolie_Turandot Messages postés 27 Statut Membre -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Jolie_Turandot Messages postés 27 Statut Membre
       
      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
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Je vais tester en creant un graph bidon

      A+
      0
    3. melanie1324 Messages postés 1561 Statut Membre 156
       
      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
    4. Jolie_Turandot Messages postés 27 Statut Membre
       
      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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    ai oublie .Chart

    avant:
    With Graph

    apres:
    With Graph.Chart

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

    A+
    1
    1. Jolie_Turandot Messages postés 27 Statut Membre
       
      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
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      pour supprimer :

      graph.chart.Delete

      si ca ne marche pas, c'est
      graph.Chart.Parent.Delete
      0
    3. Jolie_Turandot Messages postés 27 Statut Membre
       
      ç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
    4. Jolie_Turandot Messages postés 27 Statut Membre
       
      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
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      mettre au debut, apres l ligne Dim:

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