VBA excel problème macro seriescolection.name

Résolu
Bonjour à vous,

Mon problème est le suivant :
J'ai créé une macro en vba produissant un graphique contennant plusieurs séries. Le graphique est produit sans problème mais dès que j'esseye d'attribuer un nom à ces séries, un message d'erreur m'apparait (error 1004, method 'Cells' of object global failed).
Bref rien de très précis. Voici le code ainsi que le fichier qui sert d'exemple (ci joint). A noter que le nombre de séries ainsi que le nombre de colonne n'est pas fixé. Ce problème étant normalement palié.

Sub Macro3()
Dim r1 As Range
Dim i As Integer
Dim nom As String

CurrentFileName = ActiveWorkbook.Name
CurrentSheetName = ActiveWorkbook.ActiveSheet.Name

nbcolonne = Range(Cells(3, 3), Cells(3, 3).End(xlToRight)).Columns.Count 'nb de colonne
nbseries = Range(Cells(3, 3), Cells(3, 3).End(xlDown)).Rows.Count 'nb de série
nbligne = nbseries + 2
i = 2

Set r1 = Sheets(CurrentSheetName).Range(Cells(1, 3), Cells(nbligne, nbcolonne + 2)) 'Donné du graphique

gtitle = "File: " & CurrentFileName 'titre du graphique
xtitle = "Wave Length (nm)"
ytitle = "Something : D"

Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers 'type nuage de pt
ActiveChart.SetSourceData Source:=r1, PlotBy:=xlRows ' graphique du type ligne (pas colonne !)
ActiveChart.Location Where:=xlLocationAsObject, Name:=CurrentSheetName

While i <= (nbligne)
j = i + 1
nom = Cells(j, 1).Value 'l'erreur se produit ici
ActiveChart.SeriesCollection(i).Name = nom
i = i + 1
Wend

With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = gtitle
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = xtitle
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = ytitle
End With

ActiveChart.HasLegend = True
ActiveWindow.Visible = False
Windows(CurrentFileName).Activate

End Sub

http://membres.lycos.fr/francoisdelaet/exemple.xls le fichier en question

Merci de votre précieuse aide
François
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Aucune idée ? de mon coté, je ne vois toujours pas.
    0
    1. Bonjour

      J'ai rectifié ton code pour le rendre fonctionnel :
      Sub Macro3()
          Dim r1 As Range
          Dim i As Integer
          Dim nom As String
          
          CurrentFileName = ActiveWorkbook.Name
          CurrentSheetName = ActiveWorkbook.ActiveSheet.Name
      
          nbcolonne = Range(Cells(3, 3), Cells(3, 3).End(xlToRight)).Columns.Count
          nbseries = Range(Cells(3, 3), Cells(3, 3).End(xlDown)).Rows.Count
          nbligne = nbseries + 2
          i = 2
          
          Set r1 = Sheets(CurrentSheetName).Range(Cells(1, 3), Cells(nbligne, nbcolonne + 2))
          gtitle = "File: " & CurrentFileName
          xtitle = "Wave Length (nm)"
          ytitle = "Something : D"
          
          Charts.Add
          ActiveChart.ChartType = xlXYScatterLinesNoMarkers
          ActiveChart.SetSourceData Source:=r1, PlotBy:=xlRows
          ActiveChart.Location Where:=xlLocationAsObject, Name:=CurrentSheetName
          While i <= (nbligne)
              j = i + 1
              nom = Sheets(CurrentSheetName).Cells(j, 1).Value
              If nom <> "" Then ActiveChart.SeriesCollection(i).Name = nom
              i = i + 1
          Wend
          
          With ActiveChart
              .HasTitle = True
              .ChartTitle.Characters.Text = gtitle
              .Axes(xlCategory, xlPrimary).HasTitle = True
              .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = xtitle
              .Axes(xlValue, xlPrimary).HasTitle = True
              .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = ytitle
          End With
         
          ActiveChart.HasLegend = True
          ActiveWindow.Visible = False
          Windows(CurrentFileName).Activate
          
      End Sub

      à plus
      0
      1. Magnifique LePierre, je te remercie mille fois.
        Bonne journée ;)
        0