Gestion clavier (contrôle appui sur une touche)

Signaler
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012
-
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012
-
Bonjour tout le monde est bonne année.
Je reviens avec un gros problème
Actuellement je détecte les touche appuyer comme sa :

Sub macro
    ' code ...
    Dim duree As Single
    duree = 0.01

    while (continuer=1)        
        Pause duree
        If GetAsyncKeyState(&H25) 1 Then directionJ1 1
        If GetAsyncKeyState(&H27) 1 Then directionJ1 2
        If GetAsyncKeyState(&H51) 1 Then directionJ2 1
        If GetAsyncKeyState(&H44) 1 Then directionJ2 2
        ' code ...
    wend

End sub


Sub Pause(duree As Single)
   Dim T As Single
         T = Timer

    Do While Timer < T + duree
        DoEvents
    Loop
End Sub


Le problème est que catia a une zone appelé entrée clavier est lors ce que j’appuis sur une touche, sa l’active.
J’aimerais savoir si il y a d’autre moyen pour détecter la touche appuyer ou si on peut se passer du DoEvents (se qui me semble impossible) ?

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,

Comment veux-tu que l'on devine ce dont tu as besoin avec d'une part le code montré et d'autre part ce que tu exposes ?
Seule ma boule de cristal me souffle (mais comment être certain de ce qu'elle ne se trompe pas ?) que tu cherches à dire quelque chose du genre :

"je ne veux pas que des instructions (celles de ton code) s'exécutent lorsque je suis dans une zone de saisie au clavier"

Est-ce cela ?
Si oui :
-utilisation d'une variable générale booléenne à mettre à True lorsque tu quittes cette zone et à False lorsque tu y entres. Puis exécution de tes instructions uniquement (expression conditionnelle) si cette booléenne est False.
Le DoEvents n'est ici pas concerné.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

Se que je cherche, c'est qu'autre fonction qui permette de détecter l’appui du touche autre que :
GetAsyncKeyState(&H25)=1


La zone appelé entrée clavier est un moteur de recherche de Catia, et ne possède aucune fonction pour le désactiver, voir le contenue ...

Le problème est que quant j’appuis sur une touche, sa m’active se moteur de recherche, ma macro continu de tourné mais c est le moteur de recherche qui a la priorité sur les touches appuyer (pour ma macro, les touches ne sont jamais appuyer).

Le DoEvents est concerné car j’appel la fonction pause qui appel DoEvents
Ou alors je me plante complètement et DoEvents doit être dans la même fonction que :
GetAsyncKeyState(&H25)=1
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Désolé, mais je ne comprends rien de ce que tu tentes d'exposer.
(trop vieux, sûrement, pour te "suivre")
Bonne chance.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
7
Date d'inscription
mardi 20 décembre 2011
Statut
Membre
Dernière intervention
4 janvier 2012

J'ai pas tout compris non plus mais le keypress convient surement pas. Peut etre Application.OnKey "{Enter}", "MaProc"

Sinon soluce propoce ici:
http://www.developpez.net/forums/d669409/logiciels/microsoft-office/excel/macros-vba-excel/evenement-keypress-cellule-excel/
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

Peut etre Application.OnKey "{Enter}", "MaProc"

Si je me rappel bien, cette fonction défini que l'or ce que l'on appui sur entré, sa lance MaProc ?

Pour mon problème :

Vous voyer le petit cadre blanc en bas à droite ? C’est un moteur de recherche, et à chaque fois que l’on appuis dessus, il s’active pour écrire même quand ma macro est lancé
C’est comme si dans un MMO, l’or ce que l’on appui sur "Z" pour avancer sa active la zone de chat et écrie "z"
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,

Il faudrait avoir CATIA pour te répondre valablement.
Si CATIA te permet de savoir si tu es dans cette zone de saisie (je n'en sais rien sans CATIA), il te suffit d'une expression conditionnelle (si dans alors, sinon ...)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

si tu es dans cette zone de saisie

Non justement, catia se moque si on est dedans ou pas. Pour lui, tu appuis sur une touche, il te mais dedans.
C’est comme si couter (ou je ne sais qu'elle jeu auquel tu joue) te mais sur le chat à chaque fois que tu clic sur une lettre.
Es ce que c’est possible de dire que ma touche n’est plus une touche mais une variable ? Quand j’appui dessus elle passe a 1 si non elle passe a 0. En gros la touche "a" ne sera plus "a" mais "variable_haut".
et apré je récupère cette variable dans ma macro :
if variable_haut=1 then ...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Désolé. Faudrait avoir CATIA sous la main (et je ne l'ai pas).
Bonne chance.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
mercredi 6 octobre 2010
Statut
Membre
Dernière intervention
9 janvier 2012

merci