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

Macros et VBA Excel Discussion :

probleme avec "keypress"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Par défaut probleme avec "keypress"
    Bonjour je voudrais avoir le fonctionnement suivant:
    execusion de la macro (manuellement)
    quand j'appuis sur "espace" le programme commence
    il fait "clique gauche" puis un "entrer" a 1 sec d'intervalle
    quand j'appuis sur "Echap" le programme s'arrete.
    j'ai le code suivant et seul la dectection des touches "espace" et "echap" ne sont pas dectectées: les variables de changeent pas d'état.
    De plus, et cela je ne comprend pas, en faisant un debogage en pas a pas le programme ouvre un menu contextuel comme si il faisait un clique droit au lieu d'un clique gauche quand il arrive a la fin de la procedure "leftdown". et il y a une ambigueté avec "Form_keypress" mais ca ne marche pas non plus si j'enleve une des deux procedure.
    Encore une chose, je voudrais savoir si "keypress" marche si on est sur un autre programme (le "clique gauche" suivit de "entrer" marchent si c'est une autre fenetre au premier plan, est ce la meme chose pour "keypress"?
    Je travail sous Exel 2000 et j'ai vista.
    voici le code:
    dans un premier module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Const MOUSEEVENTF_LEFTDOWN = &H8
    Const MOUSEEVENTF_LEFTUP = &H10
     
    Public Sub LeftDown()
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
     
    End Sub
     
    Public Sub mamacro()
    Dim arrêt As Boolean
    Dim début As Boolean
    Dim PauseTime, Start
    arrêt = False
    début = True
    While début = False
    Wend
        While arrêt = False
            LeftDown
            PauseTime = 1
            Start = Timer
            Do While Timer < Start + PauseTime
            Loop
     
            appui_touche (vbKeyReturn)
            PauseTime = 1
            Start = Timer
            Do While Timer < Start + PauseTime
            Loop
        Wend
        End
    End Sub
     
    Private Sub Form_KeyPress(KeyAscii1 As Integer)
    If KeyAscii1 = vbKeySpace Then début = True
    End Sub
     
     
    Private Sub Form_KeyPress(KeyAscii2 As Integer)
    If KeyAscii2 = vbKeyScape Then arrêt = True
    End Sub
    et dans un deuxieme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Declare Sub keybd Lib "user32" Alias "keybd_event" _
      (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
      ByVal dwExtraInfo As Long)
     
    Public Sub appui_touche(T As Long)
    'appuie sur la touche
    keybd T, 0, 0, 0
    'relache la touche
    keybd T, 0, 2, 0
    End Sub
    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour,

    j ai vu passé une discussion sur l utlisation du click gauche avec vista il y a qq
    jours (1/2sem) environ
    je recherche.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Par défaut
    ca devais etre moi mais la cest surtout le probleme du keypress.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    pour la detection d un evenement keypress avec space et echap
    dans un userform place ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 32 Then MsgBox "detection appui sur espace"
    If KeyAscii = 27 Then MsgBox "detection appui sur echap"
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 90
    Par défaut
    je n'utilise pas de userform je suis dans un module et je voudrais que le programme detecte l'appuis ded la touche espace ou echap quelque soit la fenetre en premier plan.

    si je mets "UserForm_keypress" est ce que cela marche si j'ai pas ma fenetre "UserForm" au premier plan? sinon mercide me donner une solution car je bloque et je n'arrive pas a trouver une autre solution sur le net vu que mon niv en programmation est bas.
    Merci

    Et avec le code que tu me donnes patbou j'ai une erreur qui s'affiche:
    Erreur de compilation:
    type defini par l'utilisateur non defini

    l'erreur est sur la ligne: "Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Je répondrait comme d'habitude (je devrais faire un texte pour le copier/Coller)
    Avec Vista il est souvent nécessaire d'ouvrir une appli en tant qu'administrateur.
    A la place de double clic sur l'appli ou sont raccourci..
    Clic droit, dans le menu choisir 'Exécuter en tant qu'administrateur'.
    Les erreurs incompréhensibles sont résolues à 90%.
    A+

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