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

fanjomtl
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Dernière intervention
27 janvier 2008
- 8 juin 2007 à 23:32 - Dernière réponse : cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 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 !
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 9 juin 2007 à 00:44
2
Merci
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

Merci cs_MPi 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_MPi
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 9 juin 2007 à 00:47
0
Merci
J'oubliais de mentionner ...
Accelerator est aussi accessible dans les propriétés du contrôle

MPi
Commenter la réponse de cs_MPi
cs_Exploreur
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 9 juin 2007 à 09:13
0
Merci
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


 
Commenter la réponse de cs_Exploreur
fanjomtl
Messages postés
20
Date d'inscription
jeudi 11 novembre 2004
Dernière intervention
27 janvier 2008
- 10 juin 2007 à 02:34
0
Merci
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
Commenter la réponse de fanjomtl
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 10 juin 2007 à 02:45
0
Merci
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.

@++

(
Commenter la réponse de mortalino
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 10 juin 2007 à 04:58
0
Merci
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
Commenter la réponse de cs_MPi
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 10 juin 2007 à 05:02
0
Merci
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
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.