VBA - Evènements de graphique

Bonjour,

J'ai un onglet dans lequel sont insérés deux graphiques.

Le premier est un diagramme circulaire (un camembert), le deuxième un histogramme.

Je souhaiterais que quand l'utilisateur clique sur une partie du camembert, l'histogramme se mette à jour automatiquement.

J'ai créé un module de classe "Classe 1":

Option Explicit

Public WithEvents GlobalChart As Chart

Private Sub GlobalChart_MouseDown(ByVal ElementID As Long, _

ByVal arg1 As Long, ByVal arg2 As Long)

Dim ID As Long

Dim arg1 As Long

Dim arg2 As Long

Dim n As Integer

GlobalChart.GetChartElement x, y, ID, arg1, arg2

If ElementID = 3 Then

n = ActiveChart.SeriesCollection(1).Points(arg2).Value

For i = 20 To 27

If n = Cells(i, 15).Value Then

ThisWorkbook.Worksheets("Chart 4").Activate

ActiveSheet.ChartObjects("Chart 2").Activate

ActiveChart.FullSeriesCollection(1).Name = ThisWorkbook.Worksheets(4).Cells(i, 2).Value

Set SourceRng = Sheets("Chart 4").Range("B" & i & ":N" & i)

ActiveChart.FullSeriesCollection(1).Values = SourceRng

End If

Next

End If

End Sub

Et sur la feuille qui contient les graphiques ("Chart 4"):

Option Explicit

Dim adaptGraph As New Classe1

Sub Worksheet_Activate()

Set adaptGraph.GlobalChart = Sheets("Chart 4").ChartObjects("Chart1").Chart

End Sub

Mais mon code ne fonctionne pas. Pas de message d'erreur, on dirait simplement que le code ne s'exécute pas.

Peut-être avez-vous une idée de ce qui est faux/de ce qui manque?

Merci d'avance pour votre aide!

Bonsoir,

Essayer ce code :

Option Explicit
Public WithEvents GlobalChart As Chart

Public Property Set Obj_Chart(ByVal graphe As Chart)
    Set GlobalChart = graphe
End Property

Private Sub GlobalChart_MouseDown(ByVal ElementID As Long, _
    ByVal arg1 As Long, ByVal arg2 As Long)

    Dim ID As Long
    Dim arg1 As Long
    Dim arg2 As Long
    Dim n As Integer

    GlobalChart.GetChartElement x, y, ID, arg1, arg2

    If ElementID = 3 Then

        n = ActiveChart.SeriesCollection(1).Points(arg2).Value

        For i = 20 To 27
            If n = Cells(i, 15).Value Then
                ThisWorkbook.Worksheets("Chart 4").Activate
                ActiveSheet.ChartObjects("Chart 2").Activate
                ActiveChart.FullSeriesCollection(1).Name = ThisWorkbook.Worksheets(4).Cells(i, 2).Value

                Set SourceRng = Sheets("Chart 4").Range("B" & i & ":N" & i)

                ActiveChart.FullSeriesCollection(1).Values = SourceRng
            End If
        Next
    End If

End Sub
Option Explicit
Dim adaptGraph As New Classe1

Sub Worksheet_Activate()
    Set adaptGraph.Obj_Chart = Sheets("Chart 4").ChartObjects("Chart1").Chart
End Sub

Bonsoir thev,

Merci pour votre réponse.

Je viens d'essayer votre code (la seule différence était bien dans le Public Property Set, non) mais il ne marche pas

Rechercher des sujets similaires à "vba evenements graphique"