Bug VBA seriecollection

  • Initiateur de la discussion Initiateur de la discussion Creepy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Creepy

XLDnaute Accro
Bonjour,

J'ai fait une routine qui ouvre un modele, injecte des données et modifie dynamiquement les plages d'un graphiques pour l'adapter à la longueur des données et enfin le sauvegarde et le ferme.

Cette routine est appellée plusieurs fois d'affilées. La première fois cela fonctionne sans problèmes, mais la deuxiéme ca plante ici :

Code:
With oWkbk.Sheets(Feuille_Use)
   .Select
   .Cells(2, 3).Value = oWkbk.Sheets(5).Cells(4, 1).Value
      oWkbk.Sheets(Feuil_Name).ChartObjects("Graph_Fin" & Feuille_Use).Select
   DoEvents
   ActiveChart.SeriesCollection(1).XValues = "='" & Feuil_Name & "'!R74C3:R75C" & Nmr_Col * 1
   ActiveChart.SeriesCollection(1).Values = "='" & Feuil_Name & "'!R77C3:R77C" & Nmr_Col * 1
   ActiveChart.SeriesCollection(1).Name = "='" & Feuil_Name & "'!R77C1:R77C2"
   ActiveChart.SeriesCollection(2).XValues = "='" & Feuil_Name & "'!R74C3:R75C" & Nmr_Col
   ActiveChart.SeriesCollection(2).Values = "='" & Feuil_Name & "'!R76C3:R76C" & Nmr_Col
  .Cells(1, 1).Select
 End With

Message d'erreur : Erreur déxécution 1004 : La méthode Activechartde l'objet _global a échoué.

Je ne comprends pas pourquoi, mon fichier excel est un modèle que j'ouvre à chaque fois, je le sauvegarde sous un autre nom, et le ferme sans sauvegarder.
Quelque soit l'ordre des appels ca plante au deuxième passage.

Une idée ?

Merci d'avance

Creepy
 
Re : Bug VBA seriecollection

Bonsoir Creepy, Pascal

peut être un problème lié aux "select" ou déclarations de variables, regarde peut être le code ci dessous, en adaptant et en utilisant les mêmes types de données :

Code:
Sub test()
Dim MaFeuille As Worksheet, MonGraph As Object
Dim p As Byte
Application.ScreenUpdating = False
For Each MaFeuille In ActiveWorkbook.Worksheets
    For Each MonGraph In MaFeuille.ChartObjects
        If MaFeuille.ChartObjects(MonGraph.Name).Chart.ChartType = 51 Then
            With MaFeuille.ChartObjects(MonGraph.Name).Chart
                If .SeriesCollection.Count = 2 Then
                    For p = 1 To .SeriesCollection(1).Points.Count
                        .SeriesCollection(1).Points(p).HasDataLabel = True
                        .SeriesCollection(2).Points(p).HasDataLabel = True
                    Next p
                End If
            End With
        End If
   Next
Next
Application.ScreenUpdating = True
End Sub

bonne fin d'après midi
@+
 
Re : Bug VBA seriecollection

Re All,

Merci pour vos réponses, j'ai trouvé sur VB france une piste donnée pas MicheXLD, pour une personne qui avait le même problème.

Il utilisait des plages et ensuite les attribuait à ses sericollection. J'ai fait le test cela à marché une fois !

Maintenant sur cette ligne : Set PlageX = Range(Cells(74, 3), Cells(75, Nmr_Col)), j'ai l'erreur suivante : Erreur déxécution 1004 : La méthode Cells de l'objet _global a échoué

Donc ce n'est pas mes sericollections qui merdent mais quoi donc ?? !! ??

Grrrrrr je craque !!

Creepy
 
Re : Bug VBA seriecollection

bonjour Creepy,pascal,Pierrot
essaye comme suit

With oWkbk.Sheets(Feuille_Use)
.Cells(2, 3).Value = oWkbk.Sheets(5).Cells(4, 1).Value
End With
oWkbk.Sheets(Feuil_Name).ChartObjects("Graph_Fin" & Feuille_Use).Activate
DoEvents
ActiveChart.SeriesCollection(1).XValues = "='" & Feuil_Name & "'!R74C3:R75C" & Nmr_Col * 1
ActiveChart.SeriesCollection(1).Values = "='" & Feuil_Name & "'!R77C3:R77C" & Nmr_Col * 1
ActiveChart.SeriesCollection(1).Name = "='" & Feuil_Name & "'!R77C1:R77C2"
ActiveChart.SeriesCollection(2).XValues = "='" & Feuil_Name & "'!R74C3:R75C" & Nmr_Col
ActiveChart.SeriesCollection(2).Values = "='" & Feuil_Name & "'!R76C3:R76C" & Nmr_Col

Nmr_Col est elle tjrs >=3
la feuille est elle active
si tu es dans un while...end while il faut des points devant range et les 2 cells
Set PlageX = Range(Cells(74, 3), Cells(75, Nmr_Col))

à bientôt
 
Re : Bug VBA seriecollection

Bonjour Creepy, Pascal, Bebere

@Bebere
dans ta dernière remarque :
si tu es dans un while...end while il faut des points devant range et les 2 cells
Set PlageX = Range(Cells(74, 3), Cells(75, Nmr_Col))

je pense que tu veux pluôt parler d'un bloc "With" et non d'une boucle "while"...Une horreur de frappe...🙂

bon dimanche
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
3
Affichages
2 K
demonsares
D
S
Réponses
2
Affichages
1 K
S
J
Réponses
2
Affichages
3 K
jeanlaracine
J
Y
Réponses
5
Affichages
7 K
Y
Retour