Microsoft 365 Attente entre 2 sendkeys

Laurent78

XLDnaute Occasionnel
Bonjour à Tous,
Quelqu'un ici saura-t-il m'expliquer le fonctionnement bizarre que j'obtiens avec le code ci-dessous.

VB:
Sub aaa()
'    Application.Wait (Now + TimeValue("0:00:02"))
    Call CTRL_P
'    DoEvents
'    Application.Wait (Now + TimeValue("0:00:05"))
    For i = 1 To 100000000
    Next i
    Call ESC
End Sub

Sub CTRL_P()
Dim Wsh As Object
    Set Wsh = CreateObject("WScript.Shell")
    Wsh.SendKeys "^p", True
    Set Wsh = Nothing
End Sub

Sub ESC()
Dim Wsh As Object
    Set Wsh = CreateObject("WScript.Shell")
    Wsh.SendKeys "{ESC}", True
    Set Wsh = Nothing
End Sub

Lorsque j'appelle la macro aaa depuis une feuille Excel (ALT + F8), je n'obtiens pas l'effet souhaité : je voudrais ouvrir la fenêtre d'Impression, attendre un peu, puis la fermer en envoyer la touche ESC. L'attente se fait directement au début et non pas entre les deux SendKeys.
Par ailleurs, si je fais un DoEvents juste après le "Call CTRL_P", alors, j'ai la très vieille fenêtre d'impression qui s'affiche.
J'ai essayé avec le SendKey de l'application, même résultat. Idem sur différentes versions d'Excel et 32 ou 64 bits.
Bref, c'est très bizarre.

Si quelqu'un a une idée ...
Merci

PS : je suis tombé sur ce problème en essayant de cocher "Accès approuvé au modèle d'objet du projet VBA" dans les options d'Excel.

Bonne semaine,
Laurent
 

Statistiques des forums

Discussions
312 108
Messages
2 085 361
Membres
102 874
dernier inscrit
Petro2611