Keypress d'une forme [Résolu]

Messages postés
675
Date d'inscription
samedi 31 mai 2003
Dernière intervention
26 mai 2013
- - Dernière réponse : cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
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
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Dernière intervention
26 mai 2013
0
Merci
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
Commenter la réponse de petiflamand
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Mais bon, ta MsgBox ne ressemble à rien.
Elle t'affichera toujours 96 = vbKeyNumpad0
Commenter la réponse de cs_Jack
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Dernière intervention
26 mai 2013
0
Merci
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
Commenter la réponse de petiflamand
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Dernière intervention
26 mai 2013
0
Merci
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
Commenter la réponse de petiflamand
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
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.
Commenter la réponse de cs_Jack
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Dernière intervention
26 mai 2013
0
Merci
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.
Commenter la réponse de petiflamand
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
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
Commenter la réponse de cs_Jack

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.