IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

problème code touches clavier


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Homme Profil pro
    masquée
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : masquée
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut problème code touches clavier
    Bonjour à tous,

    Je viens à vous pour espérer trouver une solution à mon problème qui est le suivant:

    j'utilise la fonction GetAsyncKeyState(x) pour détecter l'appuie d'une touche clavier avec une boucle de 1 à 255.
    Mais lorsque j'appuie sur la touche 1 du pavé numérique cela me renvoie le code 97 et me dit que j'ai appuyé sur a... 2 cela me dit b etc...
    lorsque j'appuie sur a en minuscule cela me l'affiche toujours en A majuscule.

    Je voulais savoir comment rendre cohérent la pression de la touche du clavier et l’interprétation par le vba?

    Merci si quelqu'un trouve une solution pour que lorsque j'appuie sur une touche du clavier il me dise vraiment sur laquelle j'ai appuyé

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Mais lorsque j'appuie sur la touche 1 du pavé numérique cela me renvoie le code 97 et me dit que j'ai appuyé sur a... 2 cela me dit b etc...
    lorsque j'appuie sur a en minuscule cela me l'affiche toujours en A majuscule
    Normal, vous verrez que l'appui sur la touche 1 du pavé numérique est codé par le chiffre 0x61 soit 97 en base décimale.
    Cependant cela ne correspond pas du tout au a minuscule du code ASCII.

    Regardez peut-être ici la correspondance de l'appui sur les touches.
    Virtual-Key Codes
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Futur Membre du Club
    Homme Profil pro
    masquée
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : masquée
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton explication.
    Mais alors quelle est la fonction qui permet de récupérer cette valeur 0x61 (c'est du code windows-1252 de l'unicode de l'ansi? je suis un peu perdu) lorsqu'on appuie sur la touche 1 du pavé numérique par exemple.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    masquée
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : masquée
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé cela:

    je pense que c'est avec cette référence qu'il faut que je travaille non?
    http://msdn.microsoft.com/en-us/goglobal/cc305145
    Le soucis c'est comment récupérer les codes...

  5. #5
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Aucun rapport !
    tu mélanges 2 types de codes.
    Tu as le code de touche
    et le code Ascii

    et tu mélanges aussi deux formes de numérotation : héxadécimal(h) et décimal(d)
    donc, 61h = 97d
    une manière de noter 97d en héxa, c'est 0X61, une autre &h61, une autre 61h ...

    le code ASCII 97d correspond à la lettre a minuscule (voir ici)
    le code touche 97d correspond à la touche du pavé numérique 1 (voir ici)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    masquée
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : masquée
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Vous me conseillez quoi à la place de GetAsyncKeyState(x) pour avoir les codes touches?

  7. #7
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    ben... déjà, il serait peut-être utile que tu nous en dise un peu plus, comme par exemple ...
    Tu travailles sur quel logiciel ? quelle version ? Tu veux faire quoi ? Comment t'orientes-tu actuellement vers ce genre de solution, etc.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    masquée
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : masquée
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai posté dans vba donc je travaille sous vba excel, word etc...
    je souhaite que lorsque je tape sur une touche du clavier il me dise sur quelle touche j'ai appuyé comme par exemple pour la touche du pavé numérique 1 qu'il me dise que c'est "1" et non "a" comme il me dit actuellement...

  9. #9
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut Virtual-Key Codes
    Bonjour,

    Il ne te dit pas que c'est "a" mais bien un.
    Tu peux regarder le lien suivant chez Microsoft sur les Virtual-Key Codes qui montrent que la touche 1 du pavé numérique est bien codé par le code hexadécimal 0x61.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx
    Il n'existe pas de version française de cette documentation, donc c'est en anglais.
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  10. #10
    Futur Membre du Club
    Homme Profil pro
    masquée
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : masquée
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ca doit être mon code qui est pourri alors pour qu'il m'affiche n'importe quoi...
    Voici un bout de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 1 To 255 
            result = 0
            result = GetAsyncKeyState(i)
            If result = -32767 Then
                touche =Chr$(i)
                MsgBox(touche) 'la s'est sensé affiché le charactere de la touche
                MsgBox (i) 'la ca affiche le code de la touche
            End If
    Next i
    ca m'affiche bien "a" à la place de "1" quand j'appuie sur la touche 1 du pavé numérique et code 97...

Discussions similaires

  1. Problème TwebBrowser : touches claviers
    Par Invité(e) dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/07/2011, 07h47
  2. Code touches clavier
    Par bob456 dans le forum C#
    Réponses: 2
    Dernier message: 28/06/2010, 11h31
  3. Problème evenement touche clavier + souris
    Par nasriOM dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 08/11/2007, 12h55
  4. remplacement des codes touches clavier
    Par compas dans le forum Périphériques
    Réponses: 4
    Dernier message: 22/08/2006, 08h29
  5. [TP] Problème code touche clavier
    Par phildeb dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 02/12/2005, 22h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo