Facileeeeeee ....

stolken Messages postés 73 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 1 août 2006 - 1 août 2005 à 15:01
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Derniè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.

Aidez moi please.
PS : c'est dans VBA excel

3 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 6
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

@+
0
stolken Messages postés 73 Date d'inscription mardi 19 juillet 2005 Statut Membre Derniè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)

Je pige pas la ...
0
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 6
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
0