Ignorer les series nulles ou vide

Bonjour à tous,

J'ai plusieurs diagrammes dans une feuille Excel.

Lors de la selection de données de ces diagrammes j'ai sélectionner des cellules vides afin de pouvoir y ajouter des données plus tard et chaque diagrammes pourraient contenir 226 séries.

J'ai réalisé le code suivant pour mettre en forme chaque série.

Sub Etiquettes_Serie()

Application.ScreenUpdating = False
Dim reihe As Integer 'pour serie
 Dim indD As Integer ' indice du nom du diagramme

reihe = 2
indD = 1
'
For indD = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects("Diagramm " & indD).Activate
'ActiveChart.PlotArea.Select
ActiveChart.ApplyDataLabels

'ActiveChart.SeriesCollection(3).DataLabels.Select
'    Selection.ShowSeriesName = True
'    Selection.ShowValue = False

ActiveChart.SeriesCollection(1).DataLabels.Select
    Selection.ShowSeriesName = False
    Selection.ShowValue = False

    For reihe = 2 To 226
'
    ActiveChart.SeriesCollection(reihe).DataLabels.Select
    If ActiveChart.SeriesCollection(reihe).Value = 0 Then
        Selection.ShowSeriesName = False
    Else: Selection.ShowSeriesName = True
    End If

    Selection.ShowValue = False
'    Selection.Separator = " "

    With Selection.Format.TextFrame2.TextRange.Font.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorBackground1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.150000006
            .Transparency = 0
            .Solid
            .Bold = msoTrue ' Selection.Format.TextFrame2.TextRange.Font.Bold
    End With

    Next reihe
Next indD
End Sub

Le problème est que lors de l'exécution, cela prend énormement de temps (de plus la fenêtre devient blanche et redevient normale après l'exécution)

J'aimerais savoir comment je peux faire pour ignorer ces séries vides.

Merci d'avance pour vos réponses.

Cordialement

Elo7

Bonsoir,

si les séries sont vides alors les valeurs à 0 ?

Je ne comprend pas tout mais si vous faisiez une modification de votre code comme ceci :

Sub Etiquettes_Serie()

Application.ScreenUpdating = False
Dim reihe As Integer 'pour serie
 Dim indD As Integer ' indice du nom du diagramme

reihe = 2
indD = 1
'
For indD = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects("Diagramm " & indD).Activate
'ActiveChart.PlotArea.Select
ActiveChart.ApplyDataLabels

'ActiveChart.SeriesCollection(3).DataLabels.Select
'    Selection.ShowSeriesName = True
'    Selection.ShowValue = False

ActiveChart.SeriesCollection(1).DataLabels.Select
    Selection.ShowSeriesName = False
    Selection.ShowValue = False

    For reihe = 2 To 226
'
    ActiveChart.SeriesCollection(reihe).DataLabels.Select

    Selection.ShowValue = False

    If ActiveChart.SeriesCollection(reihe).Value = 0 Then
        Selection.ShowSeriesName = False
    Else
        Selection.ShowSeriesName = True

'    Selection.Separator = " "

        With Selection.Format.TextFrame2.TextRange.Font.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorBackground1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = -0.150000006
            .Transparency = 0
            .Solid
            .Bold = msoTrue ' Selection.Format.TextFrame2.TextRange.Font.Bold
        End With

    End If        
    Next reihe
Next indD
End Sub

Je l'avoue, c'est sans conviction vu que je ne comprend pas, mais au vu de ce que je comprend :

If ActiveChart.SeriesCollection(reihe).Value = 0 alors on évite toute la mise en forme "pour rien"

sinon

Else

Selection.ShowSeriesName = True

' Selection.Separator = " "

With Selection.Format.TextFrame2.TextRange.Font.Fill

.Visible = msoTrue

.ForeColor.ObjectThemeColor = msoThemeColorBackground1

.ForeColor.TintAndShade = 0

.ForeColor.Brightness = -0.150000006

.Transparency = 0

.Solid

.Bold = msoTrue ' Selection.Format.TextFrame2.TextRange.Font.Bold

End With

on met en place la mise en forme des données

donc pour toutes données à 0 on évite une grosse partie de la boucle....

Faut voir si je comprend dans le bon sens

@ bientôt

LouReeD

LouReeD a écrit :

Bonsoir,

si les séries sont vides alors les valeurs à 0 ?

Bonjour LouReed,

merci pour ta réponse et désolée pour la réponse tardive.

les séries vides peuvent avoir comme valeur 0 ou tout simplement " " (rien).

Je vais ajouter un OR (ou) à ta condition comme suit et je verrai si cela va mieux comme cela.

If ActiveChart.SeriesCollection(reihe).Value = 0 OR ActiveChart.SeriesCollection(reihe).Value = "" Then 

Cordialement

Elo7

Bonsoir,

dans l'attente du résultat

Oui oui, je sais être patient

@ bientôt

LouReeD

merci pour la patience......

cdlt

Elo7

Bonjour et bon début de semaine,

j'ai finalement essayé le code mais il y a une erreur.

Cela est dû certainement à l'ordre des instructions

Selection.ShowValue = False

et

Selection.ShowSeriesName = True 'ou False

Une fois que Selection.ShowValue est désactivé (valeur FALSE), Excel supprime l'étiquette de donnée et donc la prochaine instruction (Selection.ShowSeriesName ) n'est plus réalisable et ca conduit à une erreur.

Pas sûr à 100% que ce soit la cause mais je vais essayer d'arranger ca.

Cdlt

Elo7

Bonjour,

avez-vous un fichier ?

Parce que là j'ai du mal à suivre

@ bientôt

LouReeD

Vous ne retrouvez pas le fichier ?

Bonsoir et @ bientôt

LouReeD

Bonsoir,

Je ne peux malheureusement pas envoyer ce fichier.

Cdlt

Elo7

Bonsoir,

malheureusement ?

Le PB existe toujours ?

pas de solution ?

mais si il vous suffit d'envoyer un fichier "type" du votre, avec moins de données sans les noms ou les valeurs, juste pour nous permettre de comprendre...

@ bientôt

LouReeD

Bonsoir,

J'ai pas pu faire ce que je voulais faire avant de poster ce sujet, mais j'ai finalement opter pour une autre façon de faire dans mon programme et j'ai contourné le problème.

Donc pour l'instant, je ne m'embête pas avec ça.

Par contre ce que tu m'as proposé dans ta solution m'a servi pour autre chose.

Je ferme ce sujet et te remercie pour ton implication.

Et encore désolée pour les longues périodes sans réponse.

Cdlt

Elo7

Rechercher des sujets similaires à "ignorer series nulles vide"