|
 Posté le 23/10/2015 @ 12:33 |
Petit astucien
| bonjour le forum,
quand je crée un userform sur Excel (2010), je veux pouvoir le fermer en appuyant sur la touche Echap, quel que soit le focus sur le userform. pour ça, je suis obligé (en l'état actuel de mes connaissances) d'écrire, dans le code du userform, une procédure ad hoc pour chaque élément.
si mon userform contient 3 textbox (TextBox_1, TextBox_2, TextBox_3), je dois taper ça :
Private Sub TextBox_1_Keydown(ByVal CODE_KEY As MSForms.ReturnInteger, ByVal SHIFT As Integer) ____If CODE_KEY = vbKeyEscape Then Unload Me End Sub
Private Sub TextBox_2_Keydown(ByVal CODE_KEY As MSForms.ReturnInteger, ByVal SHIFT As Integer) ____If CODE_KEY = vbKeyEscape Then Unload Me End Sub
Private Sub TextBox_3_Keydown(ByVal CODE_KEY As MSForms.ReturnInteger, ByVal SHIFT As Integer) ____If CODE_KEY = vbKeyEscape Then Unload Me End Sub
ça peut faire des pages et des pages sur un userform avec beaucoup d'éléments. je cherche donc une méthode plus simple, enfin surtout plus courte, pour éviter ces répétitions de codes à gogo. les champions en VBA ont sûrement ça dans leur boîte à idées (?) Modifié par Boogie Palace le 26/10/2015 11:48
|
|
|
|
|
|
Posté le 23/10/2015 à 23:20 |
| |
|
Posté le 23/10/2015 à 23:26 |
Astucien | Bonjour Boogie,
Si tu as un bouton Annuler ou Quitter qui ferme le Userform, tu mets sa propriété Cancel sur True, la procédure sera exécutée à l'appui sur la touche Suppr (Del).
De même si pour un bouton OK ou Valider, tu mets la propriété Defaut sur True, il répondra à l'appui sur Entrée.
Il ne peut y avoir qu'un seul bouton ayant la propriété Cancel, également un seul ayant la propriété Defaut.
Cordialement |
|
Posté le 26/10/2015 à 12:17 |
Petit astucien
| merci yojema, mais le code que tu proposes est spécifique au "fond" du userform, c'est-à-dire si le focus n'est sur aucun contrôle. il faut envisager que le focus soit sur n'importe quel contrôle (comme les textbox), et donc écrire les procédures correspondantes (mes trois exemples).
merci ferrand, ta solution fonctionne encore mieux que prévu, car c'est bien la touche Echap (et non Suppr) qui permet de quitter le userform, après avoir mis la propriété Cancel à True sur mon bouton ANNULER. excellente astuce.
pour info, au cours de mes recherches, j'ai découvert une piste très prometteuse ici, qui collait parfaitement à ce que je cherchais : http://tissotemmanuel.developpez.com/articles/VBA/modules-de-classe/#LIII-B
mais je n'ai pas réussi à l'adapter à mon cas ; les modules de classes, c'est encore nébuleux pour moi. ta solution ferrand est bien plus simple.  |
|
Posté le 26/10/2015 à 15:43 |
Astucien | Au temps pour moi : j'ai pensé Esc et écrit Suppr ! 
C'est bien Escape ! J'ai le document que tu cites (en PDF) mais ne me suis pas encore lancé... mais ton rappel m'intéresse pour un projet en cours...
Bonne continuation |
|