associer un bouton d'une barre d'outils personnalisée à un évènement graphique

atlas

XLDnaute Occasionnel
Bonjour ,
Je viens de créer une barre d’outils par le code

Succintement ….
Du code du genre

Code:
Set Cbut = Cbar.Controls.Add(Type:=msoControlButton, before:=1)
With Cbut
.FaceId = 130
.OnAction = "Graph_Select"  
.TooltipText = "dessiner une droite"
End With

Tout est Ok ma barre d’outils personnalisée apparaît en haut à droite de l’écran .

Maintenant je voudrais associer 1 bouton à l’événement Graph_select
Et un autre bouton à l’événement Graph_MouseDown .

Tous les évènements ont été au préalable désactiver dans le module thisworkbook avec
Application.EnableEvents = False

NB : voir le fichier joint pour avoir tout le code
 

Pièces jointes

  • ChartPos2.zip
    28.3 KB · Affichages: 31
  • ChartPos2.zip
    28.3 KB · Affichages: 35
  • ChartPos2.zip
    28.3 KB · Affichages: 23

atlas

XLDnaute Occasionnel
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

oups ...!Je remets la bonne piece jointe .
L'onglet Graph a été supprimé et le graphique avec les séries ont été collés sur l'onglet "Base"
 

Pièces jointes

  • ChartPos2.zip
    27.5 KB · Affichages: 24
  • ChartPos2.zip
    27.5 KB · Affichages: 31
  • ChartPos2.zip
    27.5 KB · Affichages: 24

kjin

XLDnaute Barbatruc
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

Bonsoir,
Pour utiliser les événements liés à un graphique incorporé il faut créer un module de classe au préalable.
Maintenant, je ne vois absolument pas où tu vas...
A+
kjin
 

atlas

XLDnaute Occasionnel
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

Et bien j'aie reussi à creer une macro qui dessine une droite en cliquant 2 points sur un objet Chart .
Une 2 ème macro est en cours pour dessiner une courbe toujours en cliquant à la souris .
Le fond de mon problème est que chacune des 2 macros à un évènement différent et qu'ils se gênent mutuellement .

Je suis moins géné dans une certaine mesure avec mousedown dont le petit inconvénient est qu'il ne différencie pas le clic droit du clic gauche .L'évènement _ beforerightclick a été rejeté parce qu'il n'a pas de paramètre byval x et byval y donc je ne peux pas récupérer les coordonnées d'un point sur un graphique excel .

J'ajoute qu'il y a 2 méthodes pour utiliser les évènements liés à un graphique en passant par un module de classe c'est vrai mais cela marche aussi avec public events MonGraph as Chart dans un simple module objet .Mes évènements graphiques fonctionnent sans passer par un module de classe
(du reste je ne perçois jamais l'utilité d'un module de classe)
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

Bonjour,
J'ai bien parlé d'un graphique incorporé conformément à ton fichier exemple
Pourquoi ne fais tu pas passer un fichier contenant les macros ?
A+
kjin
 

PMO2

XLDnaute Accro
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

Bonjour,

Un exemple de code qui empêche certains évènements graphique de se produire.
J'utilise des variables booléennes publiques, un WithEvents sur les contrôles de votre barre personnalisée.
Je me suis limité à 2 contrôles (CommandBarButton).

Voir le code de la pièce jointe qui sera à extrapoler par vos soins.

Cordialement.

Patrick Morange
 

atlas

XLDnaute Occasionnel
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

Code:
Private WithEvents CBBEvents1 As CommandBarButton
Private Sub CBBEvents1_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
If Ctrl.State = msoButtonDown Then
  Ctrl.State = msoButtonUp
  BLOQUE_EVENT_SELECT = False
Else
  Ctrl.State = msoButtonDown
  BLOQUE_EVENT_SELECT = True
End If
End Sub

Ok bravissimo PM02 , c’est exactement ce que je cherchais .L’aspect bouton enfoncé /bouton relevé , c’est ce qui me manquait .En plus les paramètres de la procédure évènementielle ne s’écrive pas automatiquement , là j’avoue que c’est un petit peu trop fort pour moi .(Et des événement sur graphique incorporé sans module de classe si, si …)

Pour Kjin mon projet fait actuellement 12.5 Mo , je ne peux pas le mettre en pièce jointe aussi , je taille les morceaux de code signicatifs sur une autre fichier .

Je poste un autre fichier on l’on voit que l’on peut faire un système de coordonnées sur un objet chart avec l’événement mousemouve (avec un module de classe et utilisation des API cette fois) .Je poste ce fichier parce que je trouve que c’est une belle technique .On voit les coordonnées qui bougent dans la barre d’état .

J’en conclue que non seulement on peut transformer excel en base de donnée mais on peut aussi le transformer en logiciel de dessin avec des systèmes de coordonnées .

Ce qui flanche avec la barre d’outils dessin fournis par excel :certes on peut dessiner des droites et des courbes mais on peut pas les dessiner avec des valeurs précises .

NB : le top du top pour la finition serait de transformer la forme du pointeur de souris en croix lorsque la souris passe sur l’objet Chart . Application.Cursor n’a rien donné de probant .
 

Pièces jointes

  • ChartPos.zip
    23.5 KB · Affichages: 25

PMO2

XLDnaute Accro
Re : associer un bouton d'une barre d'outils personnalisée à un évènement graphique

Bonjour,

NB : le top du top pour la finition serait de transformer la forme du pointeur de souris en croix lorsque la souris passe sur l’objet Chart . Application.Cursor n’a rien donné de probant .

Un exemple de code avec la pièce jointe.

A l'ouverture du classeur, la procédure Workbook_Activate affecte les évènements aux graphiques
de toutes les feuilles du classeur à travers un module de classe.

Chaque fois qu'un graphique est activé le curseur se transforme en croix (+).
Pour retrouver le curseur classique il suffit de sélectionner une cellule.

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso