Question sur les touches du clavier

Signaler
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012
-
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012
-
Bonjour a tous

je cherche un code simple et cour qui me permet de faire :
afficher dans un msgbox la touche appuie (non le numero)
ex: l'utilisateur appuie sur "D", un msgbox avec D.

j'ai trouver GetKeyState, mais le code est long

Merci
DraaFil

11 réponses

Messages postés
23
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
30 août 2006

Sans plus de précisions, je ne peux t'aider plus que ce que je vais faire :

Private Sub Text1_KeyPress(KeyAscii As Integer)
 MsgBox Chr$(KeyAscii)
End Sub
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

c'est justement ce qu'il me faut. mais peut-on faire pareil mais dans KeyDown, si oui comment

et merci

DraaFil
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

En essayant le code proposé par  vbPink Tu aurais pu trouver toi même.

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) 
Call MsgBox(Chr$(KeyCode)) 
End Sub 

 

<small> Coloration syntaxique automatique [AFCK]</small>
       

En suite peu etre que ceic n'est pas du tout ce que tu cherchais mais dans ce cas il faut etre plus explicite.
Pense a appuyer sur réponse acceptée sur le ou les posts qui t'on aidé si tu estime que ton problème est résolu.

@+,   Ju£i?n
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Bonjour,
Si sa reste dans ton appli les réponses données ci-dessus sont ok mais il est clair qu'avant de poser ce genre de question pense à faire une recherche sur le site. Second cas si tu cherchais effectivement a intercepter le status des touches claviers dans l'environement de Windows alors la oui utilise GetKeyState (tu trouveras de nombreux exemples sur google).

++
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Attention, Julien, KeyCode <> KeyAscii...

pour passer de l'un a l'autre, tu peux utiliser l'API ToAscii

j'ai mis une fonction, sur VbFrance :
http://www.vbfrance.com/codes/KEYCODE-ASCII_33577.aspx

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
> Renfield: Merci pour la précision. Pourquoi M$ utilise des variables si "différentes" pour des événements si "proches".
J avais remarqué que c'était un peu différent car un appui sur "a" te renvoie "A" en keydown

@+,   Ju£i?n
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

merci de vos reponce,

le code donne est bon. je me suis rendu compte d'un prrobleme, je vous explique.
j'ai une listview avec plusieurs element. j'appuis sur "enter" sur celle que je veux mais le probleme c'est que la valeur du "enter" ecrase la valleur de la touche que j'ai de besoin. Donc, j'ai toujours la valeur du "enter". Avez-vous une idee comment resoudre ce probleme.

Merci
code :
Private Sub View1_KeyDown(KeyCode As Integer, Shift As Integer)


    Dim Var() As String
    Dim tmp As String
    Dim mot As String


    mot = Chr$(KeyCode) & ";"


   
   
   
   
    'Quitter le programme
    If KeyCode = vbKeyF12 Then
        Dim Rep As String
        Rep = MsgBox("Voulez-vous quitter?", vbYesNo, "Quitter")
        If Rep = vbYes Then
            End
        End If
    End If


 




    If KeyCode = vbKeyReturn Then


        Open Patch For Input As 1 'on ouvre le fichier à analyser


        Do Until EOF(1) 't'en qu'on est pas à la fin du fichier:
            Line Input #1, tmp 'on lis la ligne et on la stock dans la variable
       
            If Right$(tmp, 1) = ";" Then
                tmp = Left$(tmp, Len(tmp) - 1)
            End If
           
            Var = Split(tmp, ";")
            If ((InStr(tmp, mot)) > 0) Then 'on vérifi si le mot rechercher ne serais pas dans la ligne
                MsgBox (tmp) 'si oui alors on en fait part
                MsgBox (Var(2))
            End If
        Loop
        Close #1
    End If
   
    If KeyCode = vbKeyF1 Then
        MsgBox "Aide"
    End If
   
End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
tu pourrais faire ton test avec Entrée et F12 dans les evenements clavier de ta Form (en y ajoutant KeyPreview = True)

ca simplifierai ton problème

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

pourrias-tu me donne plus de teail, pour savoir sa fait quoi et pkoi dans ma form , explique moi
svp

merci
DraaFil
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
le plus simple, et le plus pratique, pourl'utilisateur, serais d'ajouter des Menus.

ainsi, les raccourcis F1 et F12 seraient clairement visibles pour l'utilisateur

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

ok merci pareil