Private Sub Worksheet_Activate()
Dim a, ch As Chart, P As Range, j%, b, i&, sc As Series
a = Array("YA", "YB", "YC")
Set ch = Sheets("Graph").ChartObjects(1).Chart
Set P = [Tableau9] 'tableau structuré
ThisWorkbook.Names.Add "X", P.Columns(1) 'définit les abscisses
For j = 0 To UBound(a)
b = P.Columns(j + 2)
If Not IsArray(b) Then b = P.Columns(j + 2).Resize(2) 'au moins 2 éléments
For i = 1 To UBound(b)
If Val(b(i, 1)) <= 0 Then b(i, 1) = 1 'valeur suffisamment petite
Next i
ThisWorkbook.Names.Add a(j), b 'définit les ordonnées
'---étiquettes---
Set sc = ch.SeriesCollection(Right(a(j), 1))
For i = 1 To UBound(b)
sc.Points(i).DataLabel.Characters.Text = IIf(b(i, 1) = 1, "", b(i, 1))
Next i, j
End Sub