[VBA] Graphique

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour

J'ai réussi à faire un graphique, mon code:

Sub creategraph()

     Dim objChart As Chart, objRange As Range, MaSerie As Series

     Set objRange = Worksheets("Valeur").Range(Worksheets("Valeur").Cells(1,2), Worksheets("Valeur").Cells(5,2))
     Set objChart = ThisWorkook.Charts.Add
     objChart.ChartType = xlLine
     objChart.SeriesCollection.Add objRange, xlColumns, True, True
     Set MaSerie = objChart.SeriesCollection.NewSeries
     MaSerie.Values = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
     MaSerie.XValues = "=" & objRange.Columns(1).Adress(True, True, xlR1C1, True)

     objChart.SetSourceData objRange, xlColumns

End Sub


Le seul problème est qu'il me crée une feuille de graphique à chaque fois qu'il exécute ce code or moi j'aimerai qu'il utilise toujours la même en écrasant le précédent graphique

Que dois-je changer dans mon prog

Merci d'avance

--
Seules les forces obscures peuvent ouvrir et fermer les portes de Silent Hill
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. irem Messages postés 166 Statut Membre 99
     
    Ton objet chart est défini par

    Set objChart = ThisWorkbook.Charts.Add
    alors qu'il pourrait etre un test d'existence (if thisworkbook.charts.count >0 then...) et

    set objchart=thisworkbook.charts(1)

    Irem
    2
  2. Utilisateur anonyme
     
    Ok, cela fonctionne mais maintenant j'ai un autre problème voici la partie du code qui crée mes graphiques:

    For i = 0 To 5 Step 1
        If i = 0 Then colonnebase = 3
        If i = 1 Then colonnebase = 7
        If i = 2 Then colonnebase = 11
        If i = 3 Then colonnebase = 15
        If i = 4 Then colonnebase = 19
        If i = 5 Then colonnebase = 23
        
        Dim objRange As Range, SMesure As Series, SCible As Series, SLimiteinf As Series, SLimitesup As Series
        
        Set objRange = Worksheets("Table").Range(Worksheets("Table").Cells(3, colonnebase), Worksheets("Table").Cells(l, colonnebase + 3))
        Charts.Add
        ActiveChart.ChartType = xlLine
        ActiveChart.SeriesCollection.Add objRange, xlColumns, True, True
        Set SMesure = ActiveChart.SeriesCollection.NewSeries
        Set SCible = ActiveChart.SeriesCollection.NewSeries
        Set SLimiteinf = ActiveChart.SeriesCollection.NewSeries
        Set SLimitesup = ActiveChart.SeriesCollection.NewSeries
        
        SMesure.Values = "=" & objRange.Columns(colonnebase).Address(True, True, xlR1C1, True)
        SMesure.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
        SMesure.Name = "Mesures"
        SCible.Values = "=" & objRange.Columns(colonnebase + 1).Address(True, True, xlR1C1, True)
        SCible.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
        SCible.Name = "Cible"
        SLimiteinf.Values = "=" & objRange.Columns(colonnebase + 2).Address(True, True, xlR1C1, True)
        SLimiteinf.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
        SLimiteinf.Name = "Limite inférieure"
        SLimitesup.Values = "=" & objRange.Columns(colonnebase + 3).Address(True, True, xlR1C1, True)
        SLimitesup.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
        SLimitesup.Name = "Limite supérieure"
        
        ActiveChart.SetSourceData objRange, xlColumns
        ActiveChart.Name = paramètres(i)
        
    Next i
    


    Le graphique est correctement affiché, l'axe des ordonnées aussi mais pas l'axe des abscisses. Sachant que:

    - La zone des valeurs pour l'abscisse ne contient pas des valeurs chiffré mais des chaînes de caractères
    - Cette zone n'est pas forcément contigue avec celle des données

    Au lieu des chaînes de caractères, le graphique affiche pour l'axe des abscisses 1,2,....

    Où es-je fais une erreur dans le code ?

    Merci d'avance
    0