Gestion clavier (contrôle appui sur une touche)

gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012 - 3 janv. 2012 à 14:48
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012 - 9 janv. 2012 à 15:22
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
3 janv. 2012 à 16:03
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
0
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012
3 janv. 2012 à 16:48
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
3 janv. 2012 à 20:44
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
0
Ichiflo Messages postés 7 Date d'inscription mardi 20 décembre 2011 Statut Membre Dernière intervention 4 janvier 2012
4 janv. 2012 à 13:50
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/
0

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

Posez votre question
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012
9 janv. 2012 à 09:28
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"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
9 janv. 2012 à 10:51
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
0
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012
9 janv. 2012 à 14:19
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 ...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
9 janv. 2012 à 14:26
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
0
gourmand86 Messages postés 33 Date d'inscription mercredi 6 octobre 2010 Statut Membre Dernière intervention 9 janvier 2012
9 janv. 2012 à 15:22
merci
0