*résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de boutons)

Tech

XLDnaute Junior
Bonjour le forum,

Je viens prendre quelques conseils auprès de ceux qui savent;)

je vous explique mon problème :

j'ai une feuille sur laquelle se trouvent une bonne centaine de CommandButtons (je les appellerai BP) tous nommés selon une règle bien précise.

tous ces BP n'ont en fait que 2 fonctions. 50% vont masquer des lignes de la feuille et 50% vont afficher ces même lignes selon l'endroit ou ils sont positionnés.

je parviens à faire ce que je souhaite en programmant chaque BP un par un, mais cette solution est fastidieuse et pas vraiment évolutive.

je voudrais savoir si il est possible de détecter un clic sur un des BP de la feuille et de récupérer son nom dans une variable pour ensuite lancer une macro.

après cela, selon le nom du BP qui à été cliqué je saurai quel type de commande exécuter et a partir de quel cellule l’exécuter.


qu'en pensez vous ? possible, pas possible ?
@ Bientôt
Tech
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Detecter un click sur un CommandButton (parmi un trés grand nbr de boutons)

bonjour Tech , Modeste geedee
on peut passer par une collection & class
code dans un module standard

Code:
Public Collect As Collection
Sub recup()
Dim Obj As OLEObject
Dim Cl As Classe1
 Set Collect = New Collection
For Each Obj In Feuil1.OLEObjects
If TypeOf Obj.Object Is MSForms.CommandButton Then
Set Cl = New Classe1
Set Cl.cmd = Obj.Object
 Collect.Add Cl
 End If
Next Obj
End Sub

code dans class

Code:
Public WithEvents cmd As MSForms.CommandButton
Private Sub cmd_Click()
MsgBox cmd.Caption & "  " & cmd.Name
End Sub

il faut appeler la macro recup pour que cela marche

Code:
Private Sub Workbook_Open()
recup
End Sub

Code:
Private Sub Worksheet_Activate()
recup
End Sub

attention je parle de controle active X ==>commandbutton & non controle formulaire

ideal mettre un fichier exemple
 

Tech

XLDnaute Junior
Bonjour laetita90, Modeste geedee, forum

Tout d'abord, merci pour vos réponses.


@laetita90
J'ai passé pas mal de temps à essayer de comprendre le fonctionnement du code cité dans ton message, mais c'est peine perdue, je ne maitrise pas assez vba... je bricole...:rolleyes: je ne sais pas encore manipuler les fonctions, collections ou encore modules de classe et pas mal d'autre choses ;););)

Mais bon, j'ai essayé ton code en collant les différentes parties aux bons endroits. Et bien, ça a l'air de fonctionner. j'ai bien un msgbox avec le nom du bouton qui apparait après chaque clic sur un BP. Il ne me reste plus qu'à me creuser encore un peu la tête pour exploiter tout cela.:)

Encore merci,
Bonne journée.
Tech
 

laetitia90

XLDnaute Barbatruc
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

re,:):)
milles excuses j'aurais du mettre un fichier exemple + explications:(:(
mais bon j'ai l'impression que tu y arrives si pb...
hesite pas a mettre un fichier exemple sans données confiden...
pour voir déja le code que tu mets a chaque bouton... pas bien compris ce que tu veus faire

pour l'ami modeste application .caller s'applique pas au active x ... shape ok... mais je peus me tromper
 
Dernière édition:

Tech

XLDnaute Junior
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Certes, j'aurais dû le préciser. Il s'agit bien d'activeX.

Pour l'exemple, je joins une version de demo.

A Mon avis, vous allez me dire qu'il y à beaucoup plus simple pour faire ce que je veux.
D'ailleurs, mon code ne fonctionne pas très bien...:eek:

dans le fichier de demo, il y à l'ancienne façon d'arriver à mes fins et le code de laetitia90.
pour l'utiliser, lancer la seule macro présente dans la liste. Une fois le tableau créé, utiliser les Bp pour afficher/masquer les lignes.

j'attends vos commentaires, soyez pas trop v...;););)

Tech
 

Pièces jointes

  • Projet_Vtmp3_avec base forum.xlsm
    63.1 KB · Affichages: 161

Tech

XLDnaute Junior
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

quelques problèmes rencontrés :
J'utilise ce fichier avec une base de donnée qui a une taille d'environ 100x celle présente dans le fichier de demo.
Lorsque je lance la macro de création de tableau, et ce depuis que j'y ai implanté la fonction d'ajout des BP, la macro s’exécute normalement au départ, quand je dis normalement, c'est plutôt rapidement, mais au fil des lignes créées, le rythme ralentit. Ce qui me provoque une durée globale d’exécution de 5min alors que sans les bP, c’est plutôt 30s

Autre chose, après création de la structure complète, je voudrais sauvegarder le fichier afin de le réutiliser ultérieurement sans avoir à toujours recréer le tableau. encore une fois, depuis que j'ai ajouté les BP, le fichier fait 1,7Mo et met prés de 40s à s'ouvrir. avant, c'était 300Ko et un temps négligeable pour l'ouverture.

J'en déduis que les commandButton ActiveX ralentissent les fichiers excel si ils sont utilisés en nombre.
il y a sans doute un moyen de faire autrement... je n'ai pas essayé avec des contrôles de formulaires.
 
C

Compte Supprimé 979

Guest
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Bonjour le fil salut Tech

Ma question va peut-être être idiote, mais pourquoi ne pas avoir créé des plans
plutôt que des boutons !?

A+
 

Tech

XLDnaute Junior
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Salut BrunoM45,

t'inquiète, pas de question idiote, j'ai fait ça comme ça car je ne voyait pas trop comment faire autrement. :eek:

Des plans ? kesako ?:confused: j'ai vu dans l'aide que ça pourrait m'aider.;););)

Il y à toujours moult façons de faire les choses en vba, et en bon novice, je suis open à toutes remarques.

@+
 
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Bonjour Tech, Bruno, aux participants et à ceux qui passeront par là,

Bruno, cela me permet de te saluer avec plaisir.:):):)

Tech, je ne vais pas me mêler particulièrement à la discussion, si ce n'est de te conseiller
d'étudier les Modules de Classe comme te le suggère Laetitia,:):):)
et aussi de passer par un USF qui rendrait plus simple la manœuvre.

Le travail sur une feuille est pour moi comme d'utiliser une pelleteuse,
alors qu'une brouette suffirait dans ce dernier!
Au regard de ce que tu entreprends; tu devrais bien y réussir!

Je ne suis là que pour dire que "[Résolu] est à proscrire,
et que de le mettre te prive, comme beaucoup, de suites enrichissantes.

Amicalement,

Yann
 
Dernière édition:

Tech

XLDnaute Junior
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Bonsoir YANN-56, Merci pour la précision du *Résolu* que je n'utiliserai plus ici.:confused:

et sinon, je préfère utiliser une pelleteuse plutôt qu'une brouette ! C'est surement moins fatigant :D:D:D

plus sérieusement, je pourrais utiliser un USF si j'avais un peu moins de données à afficher, mais comme dit plus haut, j'ai un tableau conséquent.
De ce que j'ai vu des listbox ou autres combobox, c'est assez difficilement applicable sur de très grands tableaux. Mais bon, j'suis loin d'avoir tout vu ;)

Sinon, la solution expliquée plus haut par laetitia fonctionne à merveille. j'ai pu l'adapter à ce que je souhaite pour mon fichier.

Impec encore merci :cool:
 

Fo_rum

XLDnaute Accro
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Bonsoir,

Je ne prends pas à mon compte ces assertions
...
Je ne suis là que pour dire que "[Résolu] est à proscrire,
et que de le mettre te prive, comme beaucoup, de suites enrichissantes.
...

J'ai constaté que les difficultés croissaient avec le nombre de "boutons" utilisés.
Voilà un exemple, non optimisé et pourtant simple, servant à afficher, masquer des lignes créées par macro.
L'évènement "DoubleClick" pourrait s'avérer plus judicieux dans certains cas.
 

Pièces jointes

  • FauxBoutonsEvenementielle.xls
    29 KB · Affichages: 162

Tech

XLDnaute Junior
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Bonjour Fo_rum,

Que dire, je suis bluffé par ton code qui s’exécute impeccablement bien :cool: Chapeau !

Maintenant, tu as peut être vu sur mon fichier exemple que le tableau se créé tout seul à partir d'une base de données. La difficulté est que cette base de données peut être modifiée. l'emplacement des boutons masquer/afficher sera donc variable.
Est il possible dans ton code de remplacer les adresses des cellules par des variables.
Idem pour le nombre de lignes à masquer. dans le fichier demo, je détermine ce nombre en fonction de ce qui se trouve dans la colonne qui suit directement celle ou est placé le BP.

J'ai pas plus de temps, le taf m'appelle.
Mais j'y reviendrai ;) ;) ;)
@+
Tech
 

Fo_rum

XLDnaute Accro
Re : *résolu* Detecter un click sur un CommandButton (parmi un trés grand nbr de bout

Bonjour,

un essai avec ton fichier : clic sur cellule rouge ou verte (bascule afficher cacher).

Faut dire que tu n'as pas fait simple pour les mises en forme, les décalages de colonne (1, 1 puis 2), l'ajout de ligne vide.
 

Pièces jointes

  • ClicPourAfficherCacherLignesi.xlsm
    64 KB · Affichages: 182

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 210
Membres
103 768
dernier inscrit
proxyci