astuce pour application.sendkeys

patricktoulon

XLDnaute Barbatruc
Bonjour a tous

Application.sendkeys"" is the solution


il est arrivé a plusieurs d'entres nous d'utiliser le "Application.sendkeys"..." en VBA EXCEL et de voir notre pavé numérique se désactiver
ce "Bug" est connu depuis des décennies
a ce jour par l’intermédiaire de l'api getkeystate on peux savoir si le pavé est activé ou non et selon un sendkeys"{NUMLOCK}" règle le problème
ça reste fastidieux et certaines personnes ne voudrons pas se servir des api windows

j'ai découvert ces deux derniers jour comment solutionner le problème d'une manière dont le mot simple est un euphémisme
il s’avère que quand le pavé se désactive un sendkeys (n'importe quelle lettre ou touche system ) le réactive
problème cette touche n'est pas désiré

alors j'ai tenté un sendkeys vide (application.sendkeys"") et la surprise!!! la mémoire du sendkeys est vidée et comme aucun code n'est envoyé aucune touche n'est simulée mais le pavé est réactivé
il s’avère après test que si le pavé n'aurait pas été désactivé ça n'a aucun effet ben bingo alors

un exemple parlant: la simulation de la touche snapshot qui la fâcheuse manie de désactiver le pavé a chaque coup
et bien la solution est simple
VB:
Sub test()
    For i = 1 To 20
        Application.SendKeys "(%{1068})", True'avec"%"=fenetre active ;  sans le "%" =plein écran
        Application.SendKeys ""
        DoEvents
        ActiveSheet.Paste
    Next
End Sub
c'est propre net et nul besoins d'autre chose