VBA excel problème macro seriescolection.name

Résolu/Fermé
franck_213 Messages postés 17 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 20 mai 2009 - 1 sept. 2008 à 10:59
franck_213 Messages postés 17 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 20 mai 2009 - 2 sept. 2008 à 10:16
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
A voir également:

3 réponses

franck_213 Messages postés 17 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 20 mai 2009
1 sept. 2008 à 15:55
Aucune idée ? de mon coté, je ne vois toujours pas.
0
LePierre Messages postés 249 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 2 août 2012 337
1 sept. 2008 à 17:08
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
franck_213 Messages postés 17 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 20 mai 2009
2 sept. 2008 à 10:16
Magnifique LePierre, je te remercie mille fois.
Bonne journée ;)
0