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!
- Messages
- 4'064
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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