XL 2010 Fermer un USF au moyen du clavier

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'essaie tout simplement de trouver le moyen de fermer un USF en appuyant sur la touche "ESC" (en haut du clavier, tout à gauche).
J'ai bien tenté ce truc, trouvé quelque part :
VB:
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = 27 Then Unload Me 'touche "ESC" --> l'USF est occulté

End Sub
sans succès...
Comment s'y prendre ?
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Magic_Doctor,

Peut-être avec SendKey() ? mais ça désactive le NumLock du pavé numérique ;
je sais qu'il existe une parade, mais je ne me rappelle plus laquelle.

En faisant une recherche sur le net, peut-être que tu trouveras cette parade ?

soan
 

soan

XLDnaute Barbatruc
Inactif
Bonjour mapomme,

un grand Bravo pour ton astuce !!! :)

mais j'comprends pas comment elle marche, lollllllllll ! :p

j'ai bien vu le bouton en mode édition, après avoir élargi la fenêtre ;
mais la sub s'appelle CommandButton1_Click() ; donc en principe,
elle devrait se déclencher seulement si on clique sur le bouton ;
or c'est pas le cas quand on appuie sur la touche Echap !!! :eek:o_O

même si moi pas comprendre, moi mettre à toi un très très gros Like,
car toi grand sorcier vaudou ! :p (et ton astuce marche très bien !)


soan
 

mapomme

XLDnaute Barbatruc
Supporter XLD
elle devrait se déclencher seulement si on clique sur le bouton ;
or c'est pas le cas quand on appuie sur la touche Echap !!!

Tu as négligé le point primordial : On met la propriété Cancel de ce bouton à True (Microsoft nous simplifie bien la vie sur ce coup :))

Ci-dessous ce que dit l'aide de VBA au sujet de la propriété Cancel :
Cancel, propriété (Microsoft Forms)

Cette propriété renvoie ou définit une valeur indiquant si un bouton de commande correspond au bouton Annuler d’un formulaire.

Syntaxe

objet. Annuler [= Booléen ]

La syntaxe de la propriété Cancel comprend les éléments suivants :

Syntaxe
ÉlémentDescription
objectObligatoire. Un objet valide.
BooleanFacultatif. Indique si l’objet est le bouton Annuler .
Settings

Les paramètres de Boolean sont les suivants :

Settings
ValeurDescription
TrueLe bouton de commande est le bouton Annuler .
FalseLe **** bouton de commande n’est pas le bouton Annuler (valeur par défaut).
Remarques

Un contrôle CommandButton ou un objet qui se comporte comme un bouton de commande peut être désigné comme bouton de commande par défaut. Pour les contrôles de conteneur OLE (Windows uniquement), la propriété Cancel est fournie uniquement pour les objets qui se comportent spécifiquement comme des boutons de commande.

Un seul contrôle CommandButton d’un formulaire peut être le bouton Annuler . Définir la propriété Cancel sur True pour un bouton de commande la définit automatiquement sur False pour tous les autres objets du formulaire. Lorsque la propriété Cancel d’un bouton de commande est définie sur true et que le formulaire est le formulaire actif, l’utilisateur peut cliquer sur le bouton de commande en cliquant dessus, en appuyant sur Échap ou en appuyant sur entrée lorsque le bouton a le focus.

Un usage classique de Cancel consiste à donner à l’utilisateur le choix d’annuler des modifications non programmées et de rétablir l’état précédent d’un formulaire.

Vous devez envisager de faire en sorte que le bouton Annuler soit le bouton par défaut pour les formulaires qui prennent en charge les opérations qui ne peuvent pas être annulés (par exemple, Delete). Pour ce faire, définissez Cancel et la propriété Default sur True.
 

Pièces jointes

  • 1602439640021.png
    1602439640021.png
    68 bytes · Affichages: 28
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonsoir a tous
a ben oui ça c'est une astuces sympa
pas mal l'accelerator sans accelerator
elle a sa place dans les astuces vba ;)
bravo!! @mapomme

jusqu’à présent j'utilisais application.onkeys"ESC","procedure" dans le activate du userform
et dans le query close onkeys "esc" tout court , pour lâcher la gestion de touche
la procédure unload userform1 " bien sur
 

Dranreb

XLDnaute Barbatruc
Bonjour
L'UserFom2 ne me semble pas être bon par contre.
De toute évidence vous vous êtes trompé de bouton: vous avez mis à True la propriété Cancel du CommandButton1 ("OK"), qui mériterait, me semble-t-il, sa propriété Default à True pour qu'il réagisse plutôt à la touche Entrée, au lieu de la mettre ainsi au CommandButton2 ("OUT") qui ferme l'UserForm
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma