> Tous les forums > Forum Bureautique
 simplifier méthode pour quitter userform depuis n'importe où avec EchapSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Boogie Palace
  Posté le 23/10/2015 @ 12:33 
Aller en bas de la page 
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
Publicité
yojema
 Posté le 23/10/2015 à 23:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Hello

je t ai trouvé ça a copier coller direct dans le code de ton userform :

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If (KeyCode = vbKeyEscape) Then
Call fermer
End If

End Sub

Public Sub fermer()
Unload Me
End Sub

et comme j aime bien rendre a césar ce qui appartient a césar je trouvé ça

en suivant ce lien :

http://www.developpez.net/forums/d583075/logiciels/microsoft-office/excel/macros-vba-excel/fermer-userform-appuyant-touche/

voila

a+

ferrand
 Posté le 23/10/2015 à 23:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  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

Boogie Palace
 Posté le 26/10/2015 à 12:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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.

ferrand
 Posté le 26/10/2015 à 15:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  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

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
12,54 €Micro clé USB 3.1 Sandisk Ultra Fit 64 Go à 12,54 €
Valable jusqu'au 25 Janvier

Amazon fait une promotion sur la micro clé USB Sandisk Ultra Fit d'une capacité de 64 Go qui passe à 12,54 €. La minuscule taille de cette clé USB va vous permettre de la laisser brancher en permanence sur votre portable, votre TV ou votre autoradio sans qu'elle dépasse de manière disgracieuse. Sa compatibilité USB 3.1 lui permet d'atteindre des débits jusqu'à 130 Mo/s. 


> Voir l'offre
269 €Smartphone Xiaomi Mi Note 10 Lite (6.47 pouces, 6 Go/128 Go) à 269 € avec le code BIENVENUE10
Valable jusqu'au 26 Janvier

RueDuCommerce propose le smartphone Xiaomi Mi Note 10 Lite à 269 € avec le code promo BIENVENUE10. Ce smartphone possède un écran 6.47 pouces Full HD+ (1080x2340 pixels), un processeur 8 coeurs Qualcom Snapdragon 730G, 128 Go d'espace de stockage. Il possède 4 capteurs photos à l'arrière (grand angle 64 MPixels, ultra grand angle 8 MPixels, Macro 2 MPixels et profondeur 5 MPixels) Un capteur d'empreinte est disponible sous l'écran, il possède le WiFi AC, le Bluetooth 5, le NFC, le GPS et un port USB C. Sa batterie haute capacité fait 5260 mAh et permet de tenir jusqu'à 2 jours sans charge. Un chargeur 30W est fourni. Le tout tourne sous Android 10.


> Voir l'offre
68,28 €Souris Logitech MX Anywhere 3 (Bluetooth, Unifying) à 68,28 € livrée
Valable jusqu'au 26 Janvier

Amazon Allemagne fait une promotion sur la nouvelle souris sans fil Logitech MX Anywhere 3 qui passe à 63,43 € (avec la TVA ajustée). Comptez 4,85 € pour la livraison en France soit un total de 68,28 € livrée alors qu'on la trouve ailleurs à partir de 90 €. Cette souris que vous pourrez emporter partout avec votre PC ou Mac portable offre une double connectivité sans fil unify ou Bluetooth. Son capteur laser Dark field vous permettra de l'utiliser sur n'importe quelle surface et sa molette débrayable permet un défilement ultra rapide. Prévue pour la polyvalence et la mobilité, vous pouvez appairer cette souris à trois appareils simultanément ! Choisissez ensuite facilement quel appareil contrôler via le curseur placé sous la souris. De plus, grâce au logiciel Logitech Options, copiez-collez des documents et des images d'un ordinateur à l'autre juste avec la souris, même entre MacOS et Windows.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre

Sujets relatifs
Mise en page pour faire livret en A5 avec pagination
Problème avec Word illisible ..pour moi
securiser fichier avec mot de passe pour chacun
Besoin d'aide pour commencer avec Excel 2010
Utiliser des caracteres génériques pour rechercher avec NOtepad ++
soucis avec Excel starter 2010 pour imprimer..
Quelques précisions pour débuter avec Excel
userform pour rechercher
Poignée de redimensionnement pour un Userform
code pour userform
Plus de sujets relatifs à simplifier méthode pour quitter userform depuis n''importe où avec Echap
 > Tous les forums > Forum Bureautique