Module de classe et set Focus sur bouton

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

carlos

XLDnaute Impliqué
Bonjour

J'ai plusieur bouton de commande nommés "F1P1", "F1P2", "F1P31" ... "F1P4"

j'utilise un module de classe pour lancer une macro spécifique au bouton.

Ca marche bien si je clique sur le bouton.

Le code suivant me permet de prendre le focus d'un bouton :

Tournoi.Controls("F1P" & a).SetFocus

Ca marche aussi.

Mon probleme est que j'aimerai un code qiui me permet de lancer la macro liée au bouton , du genre :

cmd_Click
ou
Userform1.Controls("F1P" & a)_Click

Rq : "cmd " est le module de classe


Merci
 
Re : Module de classe et set Focus sur bouton

Bonjour,

Module de classe ClasseBoutons:

Code:
Public WithEvents GrBtn As MSForms.CommandButton
Private Sub GrBtn_Click()
  MsgBox GrBtn.Caption
End Sub

Userform:

Code:
Dim Btn(1 To 4) As New ClasseBoutons
Private Sub UserForm_Initialize()
  ' Crée un groupe de boutons GrBtn avec les boutons Bouton1,Bouton2,...
  For b = 1 To 4: Set Btn(b).GrBtn = Me("Bouton" & b): Next b
End Sub


JB
Formation Excel VBA JB
 

Pièces jointes

Dernière édition:
Re : Module de classe et set Focus sur bouton

Bonjour MJ13 , BOISGONTIER

Merci d'avoir repondu à mon appel.

Voici en PJ ma demande plus explicite.

En choisissant un item du combobox , cela place le focus sur le bouton approprié.

Comment faire pour qu'il lance le message Bouton.caption , lié au bouton.setfocus?

Merci

Carlos
 

Pièces jointes

Re : Module de classe et set Focus sur bouton

Re

Merci MJ13

Ton message .caption reprend la listindex du combo mais ne declenche pas le bouton.


En fait ca ne repond pas à ma demande car je veux pouvoir déclencher le bouton correspondant au combo choisi par du code.Ta proposition marche mais elle ne correspond pas véritablement à ce que je veux.

En resumé , une fois que mon bouton est selectionné (setfocus)je veux pouvoir remplacer la Touche entrée du clavier ( equivalent à un click ) par du code , genre :
bouton.enter 'mais je ne trouve rien dessus.

Merci

Carlos
 
Re : Module de classe et set Focus sur bouton

Bonjour


Tu peux tester cette adaptation.


Dans le module de classe nommé ClasseBoutons :
Code:
Option Explicit
 
Public Event GetFocus()
Public Event LostFocus(ByVal Cmd As String)
Private nomObjActif As String
 
Public Sub cibleFocus(USF As MSForms.UserForm)
    With USF
        If TypeName(.ActiveControl) = "CommandButton" Then
            nomObjActif = .ActiveControl.Name
            On Error GoTo Terminate
            Do
                DoEvents
                If .ActiveControl.Name <> nomObjActif Then
                    If TypeName(.ActiveControl) = "CommandButton" Then
                        RaiseEvent LostFocus(nomObjActif)
                        nomObjActif = .ActiveControl.Name
                        RaiseEvent GetFocus
                    End If
                End If
            Loop
            End If
        End With
Terminate:
    Exit Sub
End Sub



Dans le module du Userform :

Code:
Option Explicit
 
Private WithEvents USF As ClasseBoutons
 
Private Sub UserForm_Initialize()
    Dim B As Integer
 
    Set USF = New ClasseBoutons
    For B = 1 To 4
        ComboBox1.AddItem B
    Next B
End Sub
 
Private Sub UserForm_Activate()
    USF.cibleFocus Me
End Sub
 
Private Sub ComboBox1_Change()
    'Sélection dans le combobox
    Controls("Bouton" & ComboBox1.Value).SetFocus
End Sub
 
Private Sub USF_GetFocus()
    'Procédure quand le bouton a le focus
    MsgBox ActiveControl.Name
End Sub
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Set USF = Nothing
End Sub


adapté de Masaru Kaji aka Colo :
http://www.mrexcel.com/board2/viewtopic.php?t=69331&postdays=0&postorder=asc&start=0



bon après midi
michel
 
Re : Module de classe et set Focus sur bouton

Bonjour MichelXlmd

J'ai MAJ le fichier avec ton code.

J'ai utiliser ton code qui fonctionne tres bien mais cela ne repond malheureusement pas à mon cas car chaque bouton a une action particuliere qui est gerée par le module de classe.

Je ne vois pas tres bien ce que je peux faire avec ; cibleFocus(USF As MSForms.UserForm)
Ca me depasse cette boucle , a quoi sert elle ?

IL ME FAUT COMME UN CLICK SUR LE BOUTON POUR DECLENCHER LA MACRO QUI SE TROUVE DANS LE MODULE DE CLASSE.

Je reviens sur mon premier Post:

ClasseBoutons_Click
ou
Userform1.Controls("Bouton" & Combobox1.value)_Click ----> Qui n'est pas reconnu comme classe


Désolé si mes explications ne sont pas tres claires mais ....


Merci Carlos
 
Re : Module de classe et set Focus sur bouton

Re

J'aimerai que l'une des 2 formules suivantes marchent.(Selon MichelXld

Private Sub USF_GetFocus()
'Procédure quand le bouton a le focus
ClasseBoutons_Click
End Sub

ou bien


Private Sub USF_GetFocus()
'Procédure quand le bouton a le focus
Userform1.Controls("Bouton" & Combobox1.value)_Click ----> Qui n'est pas reconnu comme classe
End Sub


Merci
Carlos
 
Re : Module de classe et set Focus sur bouton

Bonsoir MichelXld


Je suis désolé mais depuis le premier post ma demande était axée sur l'événement Click et non sur le setfocus .Tu peux le voir.

Peut être que je me suis mal exprimé au premier post car c'est vrai les réponses n'ont pas étés ciblées à ma demande.

Bref , est il possible de terminer l'année en beauté avec cet évenement click ?.

Merci

Carlos
 
Re : Module de classe et set Focus sur bouton

Re


Si ca peux aider ...

En fait je veux "imiter" un click .

Pour l'instant je suis obligé de faire un setfocus sur bouton + la touche entrée ( pour remplacer le click).

j'aimerai ne pas avoir à faire la touche entrée ni cliquer reellement.


Carlos
 
Re : Module de classe et set Focus sur bouton

Bonjour MichelXld,MJ13,Boisgontier et le forum

Avant tout je vous souhaite une bonne et heureuse année 2009.
Merci pour votre présence journalière et votre disponibilité sans défaut.
Merci pour vos tutoriels , votre pédagogie et votre aide qui nous font progresser tous les jours.


J'ai un peu avancé sur mon projet .

Une fois que j'ai pris le focus sur le bouton , je peux simuler la touche entrée par l'événement suivant :Application.SendKeys "{enter}"

Private Sub ComboBox1_Change()
Controls("Bouton" & ComboBox1.Value).SetFocus
Application.SendKeys "{enter}"
End Sub

Malheureusement , rien ne se passe .


Voir Pj

Merci

Carlos
 

Pièces jointes

Re : Module de classe et set Focus sur bouton

Bonjour Carlos

Ton problème ne paraît pas simple. En fait, je ne comprend pas bien ce que tu veux faire. De plus, je ne sais pas comment simuler un click (mais cela peut être intéressant, il devrait quand même bien exister un évènement de simulation de click en module de classe ou autre).

En attendant une solution d'une personne qui sache le faire, tu pourrais t'aider de ce post où tu devrais pouvoir avec un fichier VBS faire une simulation de la touche entrée (en tout cas si je ne savais pas le faire, c'est la solution vers laquelle je me serais dirigé).

https://www.excel-downloads.com/threads/envoie-mail-automatique.108921/
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour