Public WithEvents Graph As Chart
'***
'la macro utilise une forme (rectangle) insérée dans le graphique
'***
Private Sub Graph_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
    'Variables de la commande getChartElements
    'x et y : position  horizontale et verticale du pointeur au moment du clic
    'ElementID : le type d'élément du graphique si clic sur une série, ElementID = 3
    'Si ElementID =3,
    'Arg1 = N° de la série
    'Arg2 = N° du point de la série
    Dim ElementID As Long
    Dim Arg1 As Long, Arg2 As Long
    Dim C As Range
    Dim Txt As String
    On Error Resume Next
    'Récupération des éléments :
    ActiveChart.GetChartElement x, y, ElementID, Arg1, Arg2
    'Si on n'a pas cliqué sur une série
    If Arg2 = 0 Then
        'on masque le rectangle
        ActiveChart.Shapes("Rectangle 1").Visible = msoFalse
    Else
        'Sinon, on a cliqué sur une série
        With ActiveChart.Shapes("Rectangle 1")
            'on rend la forme dimensionnable selon la longueur du texte
            .TextFrame2.AutoSize = msoAutoSizeShapeToFitText
            'La variable Txt va contenir le texte à mettre dans le rectangle
            Txt = ""
            'Boucle sur la plage utile de la colonne A
            For Each C In Range("A3", Cells(Rows.Count, 1).End(xlUp))
              '[T5].Offset(Arg2) renvoie le numéro de semaine
              'Si la cellule de la colonne A est égale au numéro ded semaine
              If C = [T5].Offset(Arg2) Then
                'et si elle n'est pas vide
                If C.Offset(, 14) <> "" Then
                  'On ajoute un saut de ligne et la valeur de C à Txt
                  Txt = Txt & Chr(10) & C.Offset(, 14)
                End If
              End If
            Next C
            'On retire le saut de ligne au début de Txt
            Txt = Right(Txt, Len(Txt) - 1)
            'On affiche le rectangle
            .Visible = msoTrue
            'On entre la valeur du texte
            .TextFrame2.TextRange.Text = Txt
            'positionnement gauche du rectangle
            ' égal à la position gauche du point de série cliqué +7 points
            .Left = ActiveChart.SeriesCollection(1).Points(Arg2).Left + 7
            'positionnement haut du rectangle
            ' égal à la position haute du point de série cliqué
            .Top = ActiveChart.SeriesCollection(1).Points(Arg2).Top
        End With
    End If
End Sub