stolken
Messages postés73Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention 1 août 2006
-
1 août 2005 à 15:01
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 2009
-
1 août 2005 à 18:49
... mais pas pour moi
bonjour tt le monde,
mon soucis : j'ai mis ca dans le code de ma userform1 :
Sub UserForm1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
MsgBox ("ca marche !!")
End Sub
Je lance le programme et rien ne se passe quand j'appuie sur une touche.
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 1 août 2005 à 15:27
Salut,
Les événements des UserForm sont utilisés avec le mot clé "UserForm" et pas avec leur nom. Donc il te suffit d'enlever le "1" dans le nom de ton événement
Sub UserForm<STRIKE>1</STRIKE>_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
MsgBox ("ca marche !!")
End Sub
stolken
Messages postés73Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention 1 août 2006 1 août 2005 à 15:42
Merci de ta réponse,
Dans mon programme j'ai 2 userform
Le code fonctionne seulement la première d'entre elle et comme par hasard ce n'est pas la bonne
Je comprend pas pourquoi.
J'ai une userform1 avec un bouton qui appele la 2eme userform comme ca :
Private Sub bouton_Click()
UserForm1.Hide
UserForm2.Show
End sub
Jai donc mis le code dans dans les deux feuilles et ca ne fonctionne que sur la premiere (userform1)
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 1 août 2005 à 18:49
Ce que moi je ne comprends pas, c'est pourquoi ça fonctionne dans la première UserForm.
Je m'explique :
Le KeyPress se déclenche sur l'objet qui a le focus au moment où tu presses sur une touche.
Si tu as un bouton sur ta feuille 1 et que celui ci est sélectionné, si tu appuies sur une touche, il va rentrer dans la procédure Bouton_KeyPress au lieu de UserForm_KeyPress.
Le Hic dans l'histoire, c'est que dès que tu as un composant (textbox, bouton, listbox ...), le focus n'est plus jamais sur la UserForm (à ma connaissance, mais je n'ai pas la science infuse ). Donc l'évènement UserForm_KeyPress ne peut plus jamais se déclencher.
A chaque fois, que j'ai voulu faire un truc de ce style, je me suis retrouvé obligé de gérer le KeyPress de chacun des controles de la feuille.
PS : En VB6.0, il y a une propriété KeyPreview sur les Form qui permet d'intercepter les événements claviers dans le Form_KeyPress avant qu'ils ne soient renvoyés vers les différents "Controles"_KeyPress. Si qqn sait comment simuler ça en VBA, qu'il n'hésite pas à nous le faire partager