IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Effacer toutes les séries d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut Effacer toutes les séries d'un graphique
    Bonjour,

    J'ai créé une macro qui modifie les séries d'un graphique. Problème : je n'arrive pas à effacer toutes les séries existantes avant de lancer le processus. Damned !!

    Voilà le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActiveSheet.Shapes("CompanyChart").Select
     
    Do Until ActiveChart.SeriesCollection.Count = 0
        ActiveChart.SeriesCollection(1).Delete
    Loop
    Et Excel me dit : "Delete method of serie class failed".

    Où est l'erreur ?

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Je crois qu'il s'agit d'un bug. (également constaté)
    Essaye avec de changer le type de série le temps de la suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    With ActiveSheet.ChartObjects("Graphique 1").Chart
      Dim sType As XlChartType
      sType = .ChartType  ' sauvegarde le type courant
      .ChartType = xlArea
     
       Do Until .SeriesCollection.Count = 0
            .SeriesCollection(1).Delete
        Loop
     
       .ChartType = sType  ' restaure le type de série
    End With
    Sinon de quel type de séries s'agit-il ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    xlLine. Courbes 
    xlLineMarkersStacked. Courbes empilées avec marqueurs 
    xlLineStacked. Courbes empilées 
    xlPie. Secteurs 
    xlPieOfPie. Secteurs de secteurs 
    xlPyramidBarStacked. Barres pyramidales empilées 
    xlPyramidCol. Histogramme pyramidal 3D 
    xlPyramidColClustered.  Histogramme pyramidal en cluster 
    xlPyramidColStacked. Histogramme pyramidal empilé 
    xlPyramidColStacked100. Histogramme pyramidal empilé à 100 % 
    xlRadar. Radar 
    xlRadarFilled. Radar plein 
    xlRadarMarkers. Radar avec indicateurs de données 
    xlStockHLC. Max-Min-Clôture 
    xlStockOHLC.  Ouverture-Max-Min-Clôture 
    xlStockVHLC.  Volume-Max-Min-Clôture 
    xlStockVOHLC.  Volume-Ouverture-Max-Min-Clôture 
    xlSurface. Surface 3D 
    xlSurfaceTopView. Surface (vue du dessus) 
    xlSurfaceTopViewWireframe.  Surface (Structure vue de dessus) 
    xlSurfaceWireframe. Surface 3D (structure) 
    xlXYScatter. Nuages de points 
    xlXYScatterLines. Nuages de points avec courbes 
    xlXYScatterLinesNoMarkers.  Nuages de points avec courbes et sans indicateurs de données 
    xlXYScatterSmooth. Nuages de points avec courbes lissées 
    xlXYScatterSmoothNoMarkers.  Nuages de points avec courbes lissées et sans indicateurs de données 
    xl3DArea. Aires 3D 
    xl3DAreaStacked. Aires 3D empilées 
    xl3DAreaStacked100. Aires empilées 100 % 
    xl3DBarClustered. Barres 3D en cluster 
    xl3DBarStacked. Barres 3D empilées 
    xl3DBarStacked100. Barres 3D empilées 100 % 
    xl3DColumn. Histogramme 3D 
    xl3DColumnClustered. Histogramme 3D en cluster 
    xl3DColumnStacked. Histogramme 3D empilé   
    xl3DColumnStacked100. Histogramme 3D empilé 100 % 
    xl3DLine. Courbes 3D 
    xl3DPie. Secteurs 3D 
    xl3DPieExploded.Secteurs 3D éclatés 
    xlArea. Aires 
    xlAreaStacked. Aires empilées 
    xlAreaStacked100. Aires empilées 100 % 
    xlBarClustered. Barres en cluster 
    xlBarOfPie. Barres de secteurs 
    xlBarStacked. Barres empilées 
    xlBarStacked100. Barres empilées 100 % 
    xlBubble. Bulles 
    xlBubble3DEffect. Bulles avec effets 3D 
    xlColumnClustered. Histogramme en cluster 
    xlColumnStacked. Histogramme empilé 
    xlColumnStacked100. Histogramme empilé 100 % 
    xlConeBarClustered. Barres coniques en cluster 
    xlConeBarStacked. Barres coniques empilées 
    xlConeBarStacked100. Barres coniques empilées 100 % 
    xlConeCol. Histogramme conique 3D 
    xlConeColClustered. Histogramme conique en cluster 
    xlConeColStacked. Histogramme conique empilé 
    xlConeColStacked100. Histogramme conique empilé 100 % 
    xlCylinderBarClustered.  Barres cylindriques en cluster 
    xlCylinderBarStacked. Barres cylindriques empilées 
    xlCylinderBarStacked100. Barres cylindriques empilées 100 % 
    xlCylinderCol. Histogramme en cylindres 3D 
    xlCylinderColClustered.  Histogramme conique en cluster 
    xlCylinderColStacked. Histogramme conique empilé 
    xlCylinderColStacked100. Histogramme en cylindres empilés 100 % 
    xlDoughnut. Anneau 
    xlDoughnutExploded. Anneau éclaté 
    xlLineMarkers. Courbes avec marqueurs 
    xlLineMarkersStacked100. Courbes empilées 100 % avec marqueurs 
    xlLineStacked100. Courbes empilées 100 % 
    xlPieExploded. Secteurs éclatés 
    xlPyramidBarClustered.  Barres pyramidales en cluster 
    xlPyramidBarStacked100. Barres pyramidales empilées 100 %

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Bonsoir,

    Merci pour cette réponse. C'est un graphique de type xlLine.

    J'ai essayé la solution que vous proposez, mais Excel renvoit l'erreur suivante :

    Type Mismatch
    Une idée ?

    Ci dessous un fragment du code avec votre ajout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    ActiveSheet.Shapes("CompanyChart").Select
     
    With ActiveSheet.ChartObjects("CompanyChart").Chart
      Dim sType As XlChartType
      sType = .ChartType  ' sauvegarde le type courant
      .ChartType = xlArea
     
       Do Until .SeriesCollection.Count = 0
            .SeriesCollection(1).Delete
        Loop
     
       .ChartType = sType  ' restaure le type de série
    End With
     
    'Création de la série 1
     
    If Not Cells(705, 1) = "n.a." Then
     
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(1).ChartType = xlLine
        .SeriesCollection(1).XValues = Cells(714, 2).Value
        .SeriesCollection(1).Values = Cells(715, 2).Value
        .SeriesCollection(1).Name = Cells(705, 1).Value
        .SeriesCollection(1).MarkerStyle = xlNone
        With .SeriesCollection(1).Border
            .ColorIndex = 17
            .Weight = xlMedium
            .LineStyle = xlContinuous
        End With
    End With
     
    End If
     
    'Création de la série 2
     
    If Not Cells(706, 1) = "n.a." Then
     
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(1).ChartType = xlLine
        .SeriesCollection(2).XValues = Cells(717, 2).Value
        .SeriesCollection(2).Values = Cells(718, 2).Value
        .SeriesCollection(2).Name = Cells(706, 1).Value
        .SeriesCollection(2).MarkerStyle = xlNone
        With .SeriesCollection(2).Border
            .ColorIndex = 18
            .Weight = xlMedium
            .LineStyle = xlContinuous
        End With
    End With
     
    End sub
    Merci beaucoup pour votre aide.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re

    Excel renvoit l'erreur suivante :Type Mismatch
    Sur quelle ligne de code ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Sur la 12 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ChartType = sType  ' restaure le type de série
    J'ai essayé en commentant cette ligne et en ajoutant les autres variables avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SeriesCollection(1).ChartType = xlLine
    Mais quand je relance la macro certaines variables ne disparaissent pas toujours.

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re.

    Et avec ? sans référence à .SeriesCollection(1)

    Pou infos j'utilise régulièrement une méthode similaire avec le type xlXYScatterLines
    Et je ne rencontre plus de problème depuis l'utilisation de cette astuce.

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Testé sur un graphique de type Ligne sur Excel 2010
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With ActiveSheet.ChartObjects("Graphique 1").Chart    'à adapter le nom de l'objet graphique
        Do While .SeriesCollection.Count > 0
            .SeriesCollection(1).Delete
        Loop
    End With

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Sous XLS2003, le code plante avec le message d'erreur "Delete method of serie class failed" (ou son équivalent Français)
    lorsque les cellules contenant les valeurs des séries sont vides.


    Exemple ci-joint. (cliquer sur le bouton pour lancer la suppression selon le code ci-dessous).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       Range("A1:C32").ClearContents
     
       With ActiveSheet.ChartObjects("Graphique 1").Chart
             'Dim sType As XlChartType
             'sType = .ChartType
             '.ChartType = xlArea
     
             Do Until .SeriesCollection.Count = 0 
                .SeriesCollection(1).Delete
             Loop
     
             '.ChartType = sType
        End With
    Sous XLS2003, en enlevant les commentaires (pour activer les lignes), le problème est corrigé.

    [Edit : le problème est le même avec un boucle en Do While .SeriesCollection.Count > 0 ]
    Fichiers attachés Fichiers attachés

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Mmmmh, ça a l'air de marcher. Merci beaucoup.

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Content qu'une solution ait été trouvé

    Juste pour mon info, quelle est finalement la solution adoptée ?
    (il a fallu changé le type de série temporairement ou ça n'a pas été nécessaire ?)

    Sur quelle version d'Excel se produisait ce problème ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 47
    Points : 34
    Points
    34
    Par défaut
    Le problème se produisait sur Excel 2003.

    Voici finalement le bout de code choisi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ActiveSheet.ChartObjects("SectorChart").Chart
      .ChartType = xlArea 
      Do Until .SeriesCollection.Count = 0 'boucle supprimant toutes les séries jusqu'à ce qu'on arrive à zéro
           .SeriesCollection(1).Delete
      Loop
    End With
    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les séries d'un graphique
    Par beatlejuice dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/07/2006, 17h42
  2. Réponses: 7
    Dernier message: 30/05/2006, 11h00
  3. effacer toutes les tables
    Par semaj_james dans le forum Oracle
    Réponses: 7
    Dernier message: 29/05/2006, 18h05
  4. Effacer toutes les données d'une colonne
    Par denisfavre dans le forum Access
    Réponses: 5
    Dernier message: 12/10/2005, 15h20
  5. Pb effacer toutes les tables d'une bd access
    Par madiam2004 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/05/2004, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo