Connaissance d'évènements dans nouveau classeur

Pticle94

XLDnaute Nouveau
Bonjour,

Dans ma macro je crée un nouveau classeur.
Puis à l'aide de boutons et d'UserForm je crée un graphique.

Avec le code suivant, lorsque ma feuille graphique est déjà créée je peux contrôler l'évènement "on a cliqué à l'aide de la souris (sur le graphe)":
Code:
Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
End Sub

Mais dans mon cas, je ne peux pas écrire dans le code de la feuille graphique puisque celle-ci n'est pas créée.

Comment puis-je donc agir suite à un évènement qui apparaît dans un classeur qui va être créé.

Merci d'avance
 

MichelXld

XLDnaute Barbatruc
Re : Connaissance d'évènements dans nouveau classeur

bonjour

Tu peux utiliser un module de classe qui va gérer l'évènement Chart_MouseDown et intégrer l'objet graphique au moment de sa création:

https://www.excel-downloads.com/resources/exemples-modules-de-classe.211/

https://www.excel-downloads.com/threads/ref-wiki-page-8-de-michelxld.92376/

Utiliser les évènements dans les graphiques Excel - Club d'entraide des développeurs francophones



Une autre solution pourrait consister à écrire le code dynamiquement après que la feuille graphique soir créée.


Bonne journée
MichelXld
 
Dernière édition:

Pticle94

XLDnaute Nouveau
Re : Connaissance d'évènements dans nouveau classeur

Bonjour et merci Michel

J'ai cru comprendre comment faire mais en fait comme je n'ai pas de résultats j'ai rien compris.

Donc voilà le code de mon module de classe
Code:
Option Explicit
Public WithEvents Graph As Chart

Private Sub Graph_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Application.DisplayAlerts = False
Graph.Delete
Application.DisplayAlerts = True

End Sub

Et lorsque je crée mon graphique je lui donne le nom "Graph" en ayant au préalable défini Graph par Private Graph As New Classe1

Mais lorsque je clique sur mon graphique fraîchement créé il ne se passe rien.
C'est ainsi que je me suis rendu compte que je n'ai pas bien compris les modules de classe.

Merci de m'aider.
 
Dernière édition:

Pticle94

XLDnaute Nouveau
Re : Connaissance d'évènements dans nouveau classeur

Je donne mon fichier pour expliquer.

Après quelques "Enchères" le bouton "Graphique" apparaît.
Lorsqu'on clique dessus il crée une feuille graphique et affiche l'évolution du nombre de points de chaque joueurs en fonction de nombre de partie.
Je voudrais donc que lorsque je clique sur la feuille Graphique celle ci soit supprimée.

J'espère avoir été assez clair.

Merci d'avance
 

Pièces jointes

  • Score_Tarot.zip
    37.5 KB · Affichages: 14
  • Score_Tarot.zip
    37.5 KB · Affichages: 16
  • Score_Tarot.zip
    37.5 KB · Affichages: 17

Pticle94

XLDnaute Nouveau
Re : Connaissance d'évènements dans nouveau classeur

Je donne mon fichier pour expliquer.

Après quelques "Enchères" le bouton "Graphique" apparaît.
Lorsqu'on clique dessus il crée une feuille graphique et affiche l'évolution du nombre de points de chaque joueurs en fonction de nombre de partie.
Je voudrais donc que lorsque je clique sur la feuille Graphique celle ci soit supprimée.

J'espère avoir été assez clair.

Merci d'avance
 

Pièces jointes

  • Score_Tarot.zip
    37.5 KB · Affichages: 23
  • Score_Tarot.zip
    37.5 KB · Affichages: 26
  • Score_Tarot.zip
    37.5 KB · Affichages: 25

MichelXld

XLDnaute Barbatruc
Re : Connaissance d'évènements dans nouveau classeur

rebonsoir

A la place du module de classe utilise cette adaptation de la procédure Afficher_Graphique

Code:
Sub Afficher_Graphique()
Dim X As Integer
 
Charts.Add
comp = ActiveWorkbook.Sheets("Scores").Cells(1, 7)
 
With ActiveChart
    .SetSourceData Source:=ActiveWorkbook.Sheets("Scores").Range("B1:F" & comp), PlotBy:=xlColumns
    .ChartType = xlXYScatterSmoothNoMarkers
    .HasTitle = True
    .ChartTitle.Text = "Tarot du " & Format(Date, "dddd d mmm yyyy")
    .Name = "Graph"
    .Axes(xlValue).HasTitle = True
    .Axes(xlValue).AxisTitle.Caption = "Points"
    .PlotArea.Interior.ColorIndex = xlNone
    .PlotArea.Border.ColorIndex = xlNone
    .Axes(xlValue).HasMajorGridlines = False
    .SeriesCollection(1).Border.ColorIndex = 1
    .SeriesCollection(1).Border.Weight = xlMedium
    .SeriesCollection(2).Border.ColorIndex = 4
    .SeriesCollection(2).Border.Weight = xlMedium
    .SeriesCollection(3).Border.ColorIndex = 3
    .SeriesCollection(3).Border.Weight = xlMedium
    .SeriesCollection(4).Border.ColorIndex = 7
    .SeriesCollection(4).Border.Weight = xlMedium
    .SeriesCollection(5).Border.ColorIndex = 5
    .SeriesCollection(5).Border.Weight = xlMedium
End With
 
With ActiveWorkbook.VBProject. _
    VBComponents(ActiveWorkbook.Sheets("Graph").CodeName).CodeModule
    X = .CountOfLines
    .InsertLines X + 1, "Private Sub Chart_MouseDown" & _
        "(ByVal Button As Long, ByVal Shift As Long," & _
        "ByVal X As Long, ByVal y As Long)"
 
    .InsertLines X + 2, "Application.DisplayAlerts = False"
    .InsertLines X + 3, "ActiveSheet.Delete"
    .InsertLines X + 4, "End Sub"
End With
 
End Sub


bonne soirée
MichelXld
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Connaissance d'évènements dans nouveau classeur

Bonsoir mon cher Michel et Pticle94, le forum,

Pticle94, sans rapport avec le sujet, pourrais-tu supprimer cette ridicule signature, qui n'apporte rien mais peut inquiéter quelques participants...
Même si la chose est connue....

Nous sommes, ici, entre amis, les oh je t'ai vu, je te connais, je t'ai repéré, ne sont pas de mise...

Merci, ce n'est pas pour moi, mais j'ai vu, il n'y a pas très longtemps et sur d'autres sites et pour quelques collègues, que ce type de message indisposait....

Bon week-end en tous cas.

Jean-Pierre
 

Pticle94

XLDnaute Nouveau
Re : Connaissance d'évènements dans nouveau classeur

MichelXld à dit:
rebonjour

Pourquoi? Tu es pressé ?

Lien supprimé



Bon week end
MichelXld

Bonjour,
Désolé pour mon impatience.
En ce moment je ne fais que du excel et comme j'étais bloqué j'étais trop impatient.

rebonsoir

A la place du module de classe utilise cette adaptation de la procédure Afficher_Graphique
[...]

Merci beaucoup pour ce code mais j'ai eu un message: L'accès par programme au projet Visual Basic n'est pas fiable

Il a fallu que dans le menu Outils->Macro->Sécurité,sous l'onglet Sources fiables, j'active la case à cocher Faire confiance au projet Visual Basic.

Bonsoir mon cher Michel et Pticle94, le forum,

Pticle94, sans rapport avec le sujet, pourrais-tu supprimer cette ridicule signature, qui n'apporte rien mais peut inquiéter quelques participants...
Même si la chose est connue....

Nous sommes, ici, entre amis, les oh je t'ai vu, je te connais, je t'ai repéré, ne sont pas de mise...

Merci, ce n'est pas pour moi, mais j'ai vu, il n'y a pas très longtemps et sur d'autres sites et pour quelques collègues, que ce type de message indisposait....

Bon week-end en tous cas.

Jean-Pierre

Désolé pour ma signature.
Méfait supprimé.



Merci encore à MichelXLD qui répond efficacement à mes messages et rapidement en plus.
Merci aussi au forum.
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed