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:
et dans un deuxieme:
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
Merci
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
Partager