Bonjour à tous et à toutes,

Je voudrais solliciter votre aide pour une astuce que je ne trouve nulle part.
Je souhaiterais annuler le délai du clavier lorsqu'une touche reste enfoncée, via les fonctions KeyUp, KeyPress,KeyDown.

Un exemple tout bête de programmation : L'utilisateur appuie sur la touche "A", on fait bouger un bloc image dans un UserForm en modifiant les paramètres top, left.
Si on code ça "normalement" avec les fonctions Key disponibles, cela fait bouger le bloc comme lorsque qu'on reste appuyé sur une touche dans Windows (aaaaaaaa ne s'écrit pas totalement directement fluidement, après la première lettre il y a une tempo).

Existes t-il donc une autre fonction ou une astuce pour contourner ce problème ?

J'ai déjà trouvé un code pour réduire le délai et augmenter la fréquence de répétition, mais cela ne suffit pas car il y a toujours une tempo après le premier mouvement.
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
Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Const SPI_GETKEYBOARDDELAY = 22
Public Const SPI_GETKEYBOARDSPEED = 10
Public Const SPI_SETKEYBOARDDELAY = 23
Public Const SPI_SETKEYBOARDSPEED = 11
Public Const SPIF_SENDCHANGE = 1
Public OldKeySpeed As Long
Public OldKeyDelay As Long
 
Sub RendreClavierPlusRapide()
   Dim Retcode As Long
   Dim FastKeySpeed As Long
   Dim FastKeyDelay As Long
   Dim dummy As Long
   FastKeySpeed = 31
   FastKeyDelay = 0
   dummy = 0
 
   Retcode = SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, OldKeySpeed, 0)
   Retcode = SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, OldKeyDelay, 0)
   Retcode = SystemParametersInfo(SPI_SETKEYBOARDSPEED, FastKeySpeed, dummy, IF_SENDCHANGE)
   Retcode = SystemParametersInfo(SPI_SETKEYBOARDDELAY, FastKeyDelay, dummy, IF_SENDCHANGE)
End Sub
 
Sub RestaurerLeClavier()
   Dim Retcode As Long
   Dim dummy As Long
   dummy = 0
   Retcode = SystemParametersInfo(SPI_SETKEYBOARDSPEED, OldKeySpeed, dummy, PIF_SENDCHANGE)
   Retcode = SystemParametersInfo(SPI_SETKEYBOARDDELAY, OldKeyDelay, dummy, PIF_SENDCHANGE)
End Sub
N'hésitez pas à me poser des questions si vous ne comprenez pas l'entièreté de mon problème.

Merci d'avance et bonne journée,
ZowZow.