[VBA] Etiquette de données sur dernier point

Bonjour à tous

Je souhaiterais créer un évènement qui, à chaque changement de données, ajuste automatiquement les étiquettes de données sur le dernier point, avec pour étiquette seul le "SeriesName".

J'ai essayé avec ce code associé à la Feuille 1, mais pour l'instant je n'y arrive pas... Pourriez-vous m'aider quelque peu ?

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C2:K9")) Is Nothing Then

Dim sc As Series, i As Byte, j As Byte
    For i = 1 To 8
    For j = 2 To 9
        Set sc = Worksheets("Feuil1").ChartObjects(1).Chart.SeriesCollection(i)
        With sc
            .ApplyDataLabels Type:=xlDataLabelsShowNone
            .Points(WorksheetFunction.CountA(Range(Cells(j, 3), Cells(j, 11)))).ApplyDataLabels ShowSeriesName:=True, ShowValue:=False
        End With
    Next j
    Next i
    Set sc = Nothing

End If

End Sub

En PJ un fichier exemple pour faciliter la description de mon problème...

Merci beaucoup !

Re tout le monde, je triture un peu mon code, et je m'aperçois avec le code suivant (cette fois associé à un bouton) que l'étiquette de données s'appuie sur la dernière valeur de la dernière série seulement, et pas sur chacune des séries...

Dim sc As Series, i As Byte, j As Byte
For i = 1 To 8
        Set sc = Worksheets("Feuil1").ChartObjects(1).Chart.SeriesCollection(i)
        With sc

            For j = 2 To 9

            .ApplyDataLabels Type:=xlDataLabelsShowNone
            .Points(WorksheetFunction.CountA(Range(Cells(j, 3), Cells(j, 11)))).ApplyDataLabels ShowSeriesName:=True, ShowValue:=False

            Next j

        End With

        Next i
End Sub

D'où vient le problème et comment mettre placer les étiquettes de données sur chaque dernier point de chaque série ?... Un grand merci !

Désolé d'insister, je me permets de remonter le sujet... Une petite piste SVP .....

Bonjour , mon problème n'est donc pas très intéressant...

J'aurai pourtant énormément besoin de cet outil, j'ai beaucoup de courbes à faire apparaitre sur un même graphe..

Quelqu'un aurait une idée svp ?

Bonjour,

Avec un peu de difficulté aussi avant de comprendre le truc :

Sub test()
    Dim sc As Series, i As Long, j As Long
    For i = 1 To 8
        Set sc = Worksheets("Feuil1").ChartObjects(1).Chart.SeriesCollection(i)
        With sc
            For j = 2 To 9
                .ApplyDataLabels Type:=xlDataLabelsShowNone
            Next j
            dernier = Cells(i + 1, 12).End(xlToLeft).Column - 2
            .Points(dernier).ApplyDataLabels ShowSeriesName:=True, ShowValue:=False
        End With
    Next i
End Sub

eric

Bonjour,

Un début de réponse à adapter.

Cdlt.

Option Explicit
Dim ws As Worksheet
Dim ch As ChartObject
Dim s As SeriesCollection
Dim nbs As Long, i As Long

Public Sub Creer_Etiquettes()
Dim c As Long

    Application.ScreenUpdating = False
    Set ws = ActiveSheet
    Set ch = ws.ChartObjects(1)

    nbs = ch.Chart.SeriesCollection.Count

    For i = 1 To nbs
        c = ws.Cells(i + 1, Columns.Count).End(xlToLeft).Column - 2
        'Debug.Print c
        With ch.Chart.SeriesCollection(i).Points(c)
            .HasDataLabel = True
            .DataLabel.Text = ws.Cells(i + 1, 2).Value
        End With
    Next i

    Set ch = Nothing: Set ws = Nothing

End Sub

Jean-Eric², un énorme merci pour vos deux réponses, les deux fonctionnent parfaitement.

J'espère que ce sujet sera utile à d'autres, je le note comme résolu. Encore merci...

Rechercher des sujets similaires à "vba etiquette donnees dernier point"