Raccourci clavier dans un userform (VBA) [Résolu]

Signaler
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour à tous

J'ai fait un userform dans l'éditeur VB de Excel.
J'aimerai associer la touche Q du clavier à mon "Command button"  Quitter
et les touche A et B à deux "Option button" que j'ai mis

Ça semble facile mais je ne trouve pas..
Merci !

7 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Voici un exemple pour un bouton

Private Sub UserForm_Initialize()
    CommandButton1.Accelerator = "Q"
End Sub

Pour activer le bouton, il faudra taper ALT-Q

MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
J'oubliais de mentionner ...
Accelerator est aussi accessible dans les propriétés du contrôle

MPi
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Regarde ce bout de code de Jmfmarques, il devrait répondre à ta demande :

Private touche1 As Boolean, touche2 As Boolean


Private Sub Form_Activate()
   Me.KeyPreview = True
End Sub


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   controle_touche "C", "D", KeyCode  ' c'est ici que l'on décide des touches réactives (ici C + D)
End Sub


Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    touche1 = False
    touche2 = False
End Sub


Private Sub controle_touche(T1, T2, KC)
   If touche1 And touche2 Then
      touche1 = False
      touche2 = False
   End If   If UCase(Chr(KC)) T1 Then touche1 True   If UCase(Chr(KC)) T2 Then touche2 True
   If touche1 And touche2 Then MsgBox T1 & "+" & T2 & " sont présenteùent enfoncés"
End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Bonjour et merci des réponses

dans Private Sub UserForm_Initialize()  le fait de mettre la ligne :

BoutonQuitter.Accelerator = "Q"

"souligne" bien la lettre Q du mot Quitter de mon bouton ce qui fait que le raccourci a l'air d'être accepté.

Cependant, en appuyant sur la touche q ou Q rien ne se passe (alors qu'en appuyant sur mon bouton, le userform se ferme)

Pareil avec le champ Accelerator de mon contrôle, qui souligne bien la lettre mais une fois le userform lancé, appuyer sur la touche Q ne quitte pas le formulaire.

Faut-il se placer sur le bouton avec des Tabs pour pouvoir utiliser le raccourci ? (cela semble un peu inutile alors..)

Merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

tu as mal lu ce que t'as dit MPi, il faut faire Alt Q  (et non Q seul) pour lancer l'exécution de ton bouton.

@++

(
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Merci Mortalino,

fanjomtl, n'oublie pas que si tu as des contrôles textbox et que tu veuilles écrire un Q dans un de ceux-ci, il ne faudrait pas que la feuille se ferme pour autant...

C'est le principe de tous les raccourcis Windows. Taper ALT puis une lettre ou autre. Dans certains cas, on pourrait même y aller avec Ctrl ou un mélange Ctrl et Alt. L'important, c'est que ça ne t'empêche pas de travailler de façon normale.

MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Tu peux aussi définir la propriété Default = True d'un bouton qui s'activera alors sur ENTER

Ou encore définir sa propriété Cancel = True
À ce moment, le bouton sera activé en tapant Échap (ESC)

MPi