VBA excel problème macro seriescolection.name

Résolu
franck_213 Messages postés 18 Statut Membre -  
franck_213 Messages postés 18 Statut Membre -
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. franck_213 Messages postés 18 Statut Membre
     
    Aucune idée ? de mon coté, je ne vois toujours pas.
    0
  2. LePierre Messages postés 249 Statut Membre 338
     
    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
  3. franck_213 Messages postés 18 Statut Membre
     
    Magnifique LePierre, je te remercie mille fois.
    Bonne journée ;)
    0