Keypress d'une forme

Résolu
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 - 15 mai 2011 à 21:14
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 16 mai 2011 à 19:48
Bonjour

Je cherche Comment faire pour récupérer les touche appuyer.

j'essaye ceci
Private Sub FORM_AffichePADF_keypress(keyascii As Integer)
MsgBox vbKeyNumpad0

End Sub

Mais cela ne fonctionne pas
Merci pour votre aide

12 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2011 à 10:03
Ucfoutu :
Qu'est ce qui ne va pas, d'après toi, dans cette déclaration ?
Private Sub FORM_AffichePADF_keypress(keyascii As Integer)

La forme s'appelle FORM_AffichePADF, pourquoi pas
La procédure keypress, bien qu'en minuscule, devrait être reconnue.
--------------------------------------------------------------------------------
Kleine Vlaamse :
On est bien d'accord : dans ton dernier exemple ci-dessus (juste là ^), ta forme s'appelle bien "form" ?
TRES mauvaise idée : Ne jamais appeler un objet ou une variable avec un mot clé du langage.
Si tu changes le nom de ta forme, il faudra recopier le code (MsgBox) dans la nouvelle Sub, ça ne se fait pas tout seul.

D'autre part, KeyPreview à True doit être mis dans les propriétés de la forme, pas dans le Load (on a parfois des surprises).

Et dernière chose : les touches ne seront 'captées' uniquement si ta forme a le focus (est sélectionnée). Si tu travailles sur un autre programme pendant ce temps là, ton application ne recevra rien et c'est normal.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2011 à 10:26
Re-bonjour, Jack,
Chez moi, que le Form s'appelle toto, titi, tata ou Form1 ou ce que tu veux d'autre, l'évènement sera toujours :
Private Sub Form_KeyPress(KeyAscii As Integer)

et tout autre essai de remplacement de Form par le nom donné au Form (quel qu'il soit) et ce : quel que soit l'évènement (tous les évènements) est sans aboutissement
Aurais-je une version "spéciale" de VB ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 mai 2011 à 21:57
Bonjour,

C'est en quel langage, ce code ?
Surement pas du VB6, qui, déjà, ne reconnaîtrait pas l'évènement
Private Sub FORM_AffichePADF_keypress

Sans préjudice du reste (non utilisation de la valeur du Keyascii !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
15 mai 2011 à 22:02
Bonsoir ucfoutu ,

Sisi ces du vb6 et ça fonctionne si je mes ça pour un textbox mais je veux faire ça sur la form
donc même avec
Private Sub FORM_keypress



Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2011 à 02:09
Salut

Si, VB6, pourquoi ucfoutu ?
Les min/maj qui te troublent ?

Pour que ta forme reçoive les touches avant les composants qu'elle héberge, il faut que sa propriété KeyPreview soit à True.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2011 à 02:11
Mais bon, ta MsgBox ne ressemble à rien.
Elle t'affichera toujours 96 = vbKeyNumpad0
0
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
16 mai 2011 à 06:40
Bonjour Jack,
Oui Jack la valeur Me.KeyPreview = True est bien mise a ma form.load
et non la valeur du msgbox varie
0 = 48
1 = 49
ect.... ces ce que je reçois , mais je suis obligé de taper dans un textbox , et justement je voudrais que ça recoivent les touche appuyer sans devoir aller dasn un textbox
MErci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2011 à 06:49
Bonjour, Jack,

Ma question "quel langage ?" se référait (de manière certes un peu "taquine") à une procédure évenementielle qui ne risque pas d'être exécutée :
Private Sub FORM_AffichePADF_keypress(keyascii As Integer)
MsgBox vbKeyNumpad0

End Sub





____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
16 mai 2011 à 07:00
Bonjour ,
Private Sub form(KeyAscii As Integer)

 MsgBox ("Touche " & Chr(KeyAscii) & " = " & KeyAscii & " en ASCII"), vbInformation
 End Sub


Voila comme ceci cela ne fonctionne pas non plus
sauf si je tape dans un textebox
mais je voudrais justement ne pas devoir utiliser un texbox seulement la form
Merci
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2011 à 19:41
Ah mais oui, c'est bien sûr.
lol, comme c'est le genre de chose qu'on n'écrit jamais, ça ne m'est pas venu à l'idée.
Autant pour moi.
0
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
16 mai 2011 à 19:46
Bonjour a vous deux ,
J' ai mis réponse accepté , même si ça ne fonctionne pas , que ce soit form ou le nom de ma feuille.
Je me suis servir d'un timer et d'un boutton vide que je cache et le timer fait un setfocus sur le boutton et la ça fonctionne.

Merci quand même.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2011 à 19:48
Petit flamand, pour en revenir à ta question, ucFoutu à raison : Tu as toi même écrit la syntaxe de la Sub ou tu as fait un Replace du mot "Form" par autre chose, sans trop vérifier, et voilà que tu te retrouves avec une Sub qui n'est n'est plus attachée à l'objet, mais devient une Sub personnelle.

Doucle-clique sur ta forme pour arriver dans sa page de code.
En haut de cette page, deux ComboBox :
- à gauche : le nom de l'objet auquel il se rattache ou "Déclarations" si procédure personnelle
- à droite : l'évènement dans lequel on veut mettre du code.

Depuis le temps que tu poses des questions sur le forum, je pensais que tu étais devenu familier du b.a.ba de l'éditeur.
Rassure toi : on se fait tous piéger au moins une fois.

Le plus important est de pouvoir trouver l'erreur soit même. Pour cela, un seul réflexe : le débogage afin de suivre ton programme à la trace :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement
0
Rejoignez-nous