Bonjour tout le monde.

J'ai un petit soucis sur du code vba que j'ai, je suis bloqué, je ne comprend vraiment pas ce qui bloque, quelqu'un aura peut êter une idée pour moi ?

Le but du code est simple, associer un sendkey à un raccourci clavier. Exemple, j'appuie sur CTRL + D et ça me fait sendkey, "toto".

Le code ci dessous fonctionne la première fois que j'appuye sur le raccourcis. Par contre si je refais le raccourcis dans les 3/4 secondes aprés, ça ne m'envoit plus toto, mais des caratères étranges. Si j'attends plus de 5s entre deux raccourcis, ça fonctionne bien ... Quelqu'un aurait une idée pour moi s'il vous plait ? Merci d'avance !

Voilà le petit bout de code : (je suis sur vba d'excel 2003)

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Private Const MOD_ALT = &H1 
Private Const MOD_CONTROL = &H2 
Private Const MOD_SHIFT = &H4 
Private Const PM_REMOVE = &H1 
Private Const WM_HOTKEY = &H312 
 
Private Type POINTAPI 
    x As Long 
    y As Long 
End Type 
 
Private Type msg 
    hWnd As Long 
    message As Long 
    Wparam As Long 
    lparam As Long 
    time As Long 
    pt As POINTAPI 
End Type 
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _ 
    ByVal lpClassName As String, _ 
    ByVal lpWindowName As String _ 
) As Long 
 
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, _ 
    ByVal id As Long, _ 
    ByVal fsModifiers As Long, _ 
    ByVal vk As Long _ 
) As Long 
 
Private Declare Function UnregisterHotKey Lib "user32" ( _ 
    ByVal hWnd As Long, _ 
    ByVal id As Long _ 
) As Long 
 
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" ( _ 
lpMsg As msg, _ 
    ByVal hWnd As Long, _ 
    ByVal msgFilterMin As Long, _ 
    ByVal wMsgFilterMax As Long, _ 
    ByVal wremoveMsg As Long _ 
) As Long 
 
Private Declare Function WaitMessage Lib "user32" () As Long 
 
sub test() 
Dim message As msg 
Dim messageVoid As msg 
 
ffa = RegisterHotKey(WinID, &HBFFF, MOD_CONTROL, vbKeyQ) 
Do 
    WaitMessage 
    If (PeekMessage(message, WinID, WM_HOTKEY, WM_HOTKEY, PM_REMOVE)) Then 
         testString = "toto" 
         SendKeys testString, True 
    End If 
    DoEvents 
Loop 
 
End sub