Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

gestion évenements deux graphique sur une feuille

Aucune réponse
Avatar
horti34
Bonjour,

Merci pour l'existence de ce forum. J'ai utilisé des choses que j'ai vues et j'ai bidouillé un fichier qui ne marche pas. A mon avis je suis près du but mais il me faudrait votre aide. Je n'arrive pas à contrôler deux graphiques de séries différentes avec la gestion des événements dans un module de classe et la spécification de mon objet dans un worksheet. Quelqu'un pourrait corriger cela ou m'indiquer où je fais fausse route? Merci bien. Je mets dans un module de classe, classe chart.

Option Explicit

Public WithEvents chart1 As Chart

'*** Utilisation des évènements *********

Private Sub chart1_MouseMove(ByVal Button As Long, ByVal Shift As Long, _
ByVal x As Long, ByVal y As Long)

Dim ElementID As Long
Dim Arg1 As Long, Arg2 As Long


On Error Resume Next
ChartObjects(1).GetChartElement x, y, ElementID, Arg1, Arg2

If Arg2 = 0 Then
ActiveChart.Shapes("e;Rectangle 1"e;).Visible = msoFalse
Else

With ActiveChart.Shapes("e;Rectangle 1"e;)
.Visible = msoTrue
.TextFrame.Characters.Text = _
Range("e;C1"e;).Offset(Arg2, -2) & vbCrLf & _
Range("e;C1"e;).Offset(Arg2, -1) & vbCrLf & _
Range("e;C1"e;).Offset(Arg2, 0)
.Left = x - (x * 0.4)
.Top = y - (y * 0.4)
End With
End If
End Sub

Option Explicit

Public WithEvents chart2 As Chart

'*** Utilisation des évènements *********

Private Sub chart2_MouseMove(ByVal Button As Long, ByVal Shift As Long, _
ByVal x As Long, ByVal y As Long)

Dim ElementID As Long
Dim Arg1 As Long, Arg2 As Long


On Error Resume Next
ChartObjects(2).GetChartElement x, y, ElementID, Arg1, Arg2

If Arg2 = 0 Then
ActiveChart.Shapes("e;Rectangle 1"e;).Visible = msoFalse
Else

With ActiveChart.Shapes("e;Rectangle 1"e;)
.Visible = msoTrue
.TextFrame.Characters.Text = _
Range("e;C1"e;).Offset(Arg2, -2) & vbCrLf & _
Range("e;C1"e;).Offset(Arg2, -1) & vbCrLf & _
Range("e;C1"e;).Offset(Arg2, 0)
.Left = x - (x * 0.4)
.Top = y - (y * 0.4)
End With
End If
End Sub

Dans une autre module de classe Appli
Option Explicit

Public WithEvents XL As Excel.Application

Dim ClTabChart() As ClasseChart

'Permet d'intègrer les graphiques incorporés de la feuille active
Public Sub XL_SheetActivate(ByVal Feuille As Object)
Dim i As Integer
'Vérifie qu'il s'agit d'une feuille de calcul
If TypeOf Sheet3("e;Y.S Densité"e;) Is Worksheet Then
'Vérifie s'il y a des graphiques dans la feuille
If Sheet3("e;Y.S Densité"e;).ChartObjects.Count = 0 Then Exit Sub
'S'il y a des graphiques,
'boucle pour les intégrer dans le module de classe
For i = 1 To Sheet3("e;Y.S Densité"e;).ChartObjects.Count
ReDim Preserve ClTabChart(i)
Set ClTabChart(i) = New ClasseChart
Set ClTabChart(i).Graph = Sheet3("e;Y.S Densité"e;).ChartObjects(i).Chart
Next i
End If
End Sub

'Permet de vider la classe lors de la désactivation de la feuille
Private Sub XL_SheetDeactivate(ByVal Feuille As Object)
Dim j As Integer
On Error Resume Next
For j = 1 To UBound(ClTabChart)
Set ClTabChart(j).Graph = Nothing
Next
End Sub
Dans This workbook:

Option Explicit
Dim ClTabChart1 As ClasseChart
Dim ClTabChart2 As ClasseChart
Dim XlAppli As New ClasseAppli

Private Sub Workbook_Open()
Set XlAppli.XL = Excel.Application
Sheets("e;Y.S Densité"e;).Activate
Set ClTabChart1 = New ClasseChart
Set ClTabChart2 = New ClasseChart
Set ClTabChart1.Graph = Worksheets("e;Y.S Densité"e;).ChartObjects(1).Chart
Set ClTabChart2.Graph = Worksheets("e;Y.S Densité"e;).ChartObjects(2).Chart

'désactive les intitulés et les valeurs
Application.ShowChartTipNames = False
Application.ShowChartTipValues = False
End Sub



Private Sub Workbook_BeforeClose(Cancel As Boolean)
'réactive les intitulés et les valeurs
Application.ShowChartTipNames = True
Application.ShowChartTipValues = True
End Sub

erreur de compilation attribut incorrect

Réponses