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