Raccourci clavier dans un userform (VBA)

Résolu
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008 - 8 juin 2007 à 23:32
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 10 juin 2007 à 05:02
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

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
9 juin 2007 à 00:44
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
2
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
9 juin 2007 à 00:47
J'oubliais de mentionner ...
Accelerator est aussi accessible dans les propriétés du contrôle

MPi
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
9 juin 2007 à 09:13
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


 
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
10 juin 2007 à 02:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
10 juin 2007 à 02:45
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.

@++

(
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
10 juin 2007 à 04:58
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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
10 juin 2007 à 05:02
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
0