erreur d'exécution '1004'

A

amand81

Guest
Bonjour le forum,

je previens les personnes qui voudront s'interresser à mon pb que je ne peux pas le joindre à ce fil car il fait largement plus de 50ko même zippé.

j'explique mon pb:
je créé un graphique dynamiquement avec une procédure qui peut s'appliquer à n'importe quel tableau(normalement!). Mais lorsque je lance la macro, de la série 1 à 9, je n'ai aucun souci mâis à la neuvième, si je veux lui affecter un nom j'ai le message d'erreur suivant qui s'affiche :
Erreur d'exécution '1004'
Impossible de définir la propriété Name de la classe Series

mais ce qui m'étonne le plus, c'est que cette macro fonctionne très bien avec un autre tableau qui se trouve sur une autre feuille.

De plus, si je lui mets
MsgBox ActiveChart.SeriesCollection(i).Name
il veut bien m'écrire Série9

Merci de m'aider à résoudre mon pb. :S
 
A

amand81

Guest
Bonjour,

et merci de t'interresser à mon pb même si j'ai réussi à le contourner en faisant une nouvelle macro pour cette feuille là mais j'aimerais savoir ce qui pouvait poser pb.

ceci est la macro qui dessine mon graphe
calcul_nb_colonnes2 me calcule le numéro de colonne qui correspond à certains titres de colonnes et calcul_nb_lignes me donne la première ligne vide
prod correspond au nom de la feuille sur laquelle on affiche le graphe.

Sub dessin_du_graphique(prod As String)
'
Dim nb_colonnes As Integer, tot_def As Integer, valor As Integer, code As Integer, nb_lignes As Integer, i As Integer
Dim x As Integer, code2 As String, k As Integer
calcul_nb_colonnes2 nb_colonnes, tot_def, valor, code
calcul_nb_lignes nb_lignes
ExecuteExcel4Macro 'SET.NAME(''test_graph'',''GRAPH'')'
'm indique que j ai un graphe sur ma feuille ce qui me permet de le supprimer par la suite
valor = valor - 1
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets(prod).Range('A' & (nb_lignes + 1)), PlotBy:= _
xlColumns
For i = 1 To valor - 1
ActiveChart.SeriesCollection.NewSeries
Next i
For i = 1 To valor
code2 = '=('
For k = 0 To nb_lignes - 6
code2 = code2 & prod & '!R' & (nb_lignes - k - 1) & 'C1,'
Next k
code2 = code2 & prod & '!R' & (nb_lignes - k - 1) & 'C1)'
ActiveChart.SeriesCollection(i).XValues = code2
code2 = '='
For k = 0 To nb_lignes - 6
code2 = code2 & prod & '!R' & (nb_lignes - k - 1) & 'C' & (i + 1) & ','
Next k
code2 = code2 & prod & '!R' & (nb_lignes - k - 1) & 'C' & (i + 1) & ''
Dim active
Set active = ActiveChart.SeriesCollection
ActiveChart.SeriesCollection(i).Values = code2
ActiveChart.SeriesCollection(i).Select
code2 = '=' & prod & '!R3C' & (i + 1)
ActiveChart.SeriesCollection(i).Name = code2 'c est ici que j ai mon pb
Next i
ActiveChart.Location Where:=xlLocationAsObject, Name:=prod
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.Axes(xlCategory).Select
ActiveChart.ChartArea.Select
If prod = 'graph' Then
x = 4
ElseIf prod = 'graph_12_mois' Then
x = 4
End If
ActiveSheet.Shapes(1).Select
ActiveSheet.Shapes(valor + x).IncrementLeft -145.2
'attention, ce chiffre ''''' varie en fonction du nb de boutons aussi
ActiveSheet.Shapes(valor + x).IncrementTop (16 * nb_lignes)
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes(valor + x).ScaleWidth 1.73, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes(valor + x).ScaleHeight 1.73, msoFalse, _
msoScaleFromTopLeft
ActiveChart.Legend.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = 'Arial'
.FontStyle = 'Normal'
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.Position = xlTop
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = 'Arial'
.FontStyle = 'Normal'
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = 'Arial'
.FontStyle = 'Normal'
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
changement_valor valor, 1 'ne fait juste qu'un chagement de type de graphe
'pour la colonne valor, le graphe est alors une courbe
changement_quadrillage 1 'ceci me rend mon quadrillage blc
Dim Ht As Integer, Lg As Integer
ActiveSheet.ChartObjects(1).Activate
ActiveWindow.Visible = False
Ht = 100 'hauteur du graphique en mm
Lg = 250 'largeur en mm
With Selection 'je défini ici la taille de mon graphe
.Height = Ht * 2.925
.Width = Lg * 2.66
End With
Range('a1').Select
End Sub


je n'ai mis que la partie qui m'embête
merci encore
 

2passage

XLDnaute Impliqué
Bonjour,

J'ai jeté un oeil en vitesse... j'ai 2 ou 3 remarques ou questions :

quelle est la valeur de Valor et de code2 quand ça plante ?
pourquoi y a t il un dim dans une boucle
pourquoi utilises tu code2 comme unique variable pour tout faire, ca serait plus sympa à regarder avec des variables différentes (codeserie2, codevaleur2, codenom2 par exemple)

sinon en l'état , je dirais que tu crées 'valor - 1' series et que tu essaye de donner des valeur jusqu'à 'valor', c'est peut etre par là qu'il faut regarder, mais rien de sur.. c'est pas évident de se parachuter dans un bout de code comme ça ;)

A+
 
A

amand81

Guest
bonjour,

valor=15 et code2='soudure couvercle'
je sais que toutes les séries sont créées : il y en a 15 l'écran qd ca plante et c'est à partir de la 9ième où il ne veut pas du nom alors qu'il accepte les valeurs:
si je mets cette ligne en commentaire, je n'est plus aucun pb mais alors le graph devient incompréhensible. Qd au dim, c'est une erreur de ma part, j'ai créé ma variable à cet endroit car j'en avait besoin pour savoir si, qd ca plantait, le 'name' apparaissait bien dans la liste des variables locales. et oui, il apparaît.
Pour l'autre rq concernant code2, j'ai d'abord mis des msgbox pour connaître leur valeur et je sais quelles sont bonnes. mais il est vrai que je pourrais être plus explicite dans le choix des noms de variables.
 

2passage

XLDnaute Impliqué
Bonjour,

As tu testé d'envoyer une valeur dans le nom plutot qu'une référence ?
en remplaçant :
Code:
code2 = '=' & prod & '!R3C' & (i + 1)
    ActiveChart.SeriesCollection(i).Name = code2
par
Code:
    ActiveChart.SeriesCollection(i).Name = Worksheets(prod).Cells(3, i + 1).Value

question annexe :
Code:
If prod = 'graph' Then
    x = 4
ElseIf prod = 'graph_12_mois' Then
    x = 4
End If
????? gni ??.. si je peux me permettre, fais vraiment le ménage dans ton code ;)

A+

Edit : au fait, comment c'est possible , ça ?
code2='soudure couvercle'
alors que le code dit :
code2 = '=' & prod & '!R3C' & (i + 1) ;)

Message édité par: 2passage, à: 19/07/2005 11:08
 
A

amand81

Guest
re
désolée, en fait, il m'écrit code2 : graph_12_mois!R3C9 par exemple.

et j'ai essayé de mettre carrément comme nom de série 'bonjour' pour toutes et à partir de la neuvième ca ne fonctionnait toujours pas.

Quant à la question annexe, c'est parce qu'au départ, je n'avais pas autant de boutons dans la feuille graphe que dans celle de graph_12_mois.

J'ai même essayé de récupérer les noms des colonnes dans un tableau et j'avais toujours le même pb.

Donc je ne comprends tjs pas mon pb.
Qd à faire le ménage, j'y pense. Mais je le ferais qd tout fonctionnera.

Merci qd même de t'interresser à mon pb. :whistle:
 

2passage

XLDnaute Impliqué
Bonjour,

Bon... je viens de tester un simulateur de ton problème :

Code:
On Error GoTo debugbug
prod = 'Feuil1'
valor = 12
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets(prod).Range('A' & (nb_lignes + 1)), PlotBy:=xlColumns
For i = 1 To valor -1
    ActiveChart.SeriesCollection.NewSeries
Next i
For i = 1 To valor
code2 = '=' & prod & '!R3C' & (i + 1)
ActiveChart.SeriesCollection(i).Name = code2 'c est ici que j ai mon pb
Next i
Exit Sub
debugbug:
Debug.Print Err, Error
Resume Next
Pour moi, comme attendu, ça plante parce que je crée 11 series et que je tente de nommer une 12ème, et j'intercepte bien une erreur 1004 : La méthode 'SeriesCollection' de l'objet '_Chart' a échoué
Je peux pas vraiment faire plus en fait...Essaye de réécrire le code peut être. Des fois en repartant from scratch...

A+
 

Discussions similaires

Réponses
1
Affichages
256

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 305
dernier inscrit
EDIT