Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA - Comment afficher le prompt d'interruption

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour à tous,

Savez-vous s'il existe une méthode pour afficher ce prompt qu'on obtient par exemple en faisant CTRL + PAUSE sur un MsgBox ?

 
Solution
Alors il est vrai que Stop permet le debug (affichage des valeurs de variables) et la continuation de l'exécution avec l'interface du VBE.
Donc on peut avantageusement remplacer le MsgBox par un Stop.
Ça reste une gestion programmée du Control + Pause mais c'est plus léger.
re
bonjour @Dudu2
ben ...
createobject("wscript.shell").sendkeys + ,les touches ctrl et pause
il existe aussi une api windows pour afficher les messages avec leur numero de code windows je dois avoir ça quelque part
mais ou là c'est une autre histoire
 
En fait c'est un peu compliqué.
Je suis dans un UserForm qui simule un MsgBox et je voudrais que Ctrl + Pause agisse comme pour une MsgBox standard, c'est à dire arrête le code et affiche le dialogue de l'exécution interrompue.

Il y a 2 cas.

1er cas: le UserForm est en vbModal: le code est interrompu sur le .Show mais pas de dialogue (fichier joint).
On peut intercepter le Ctrl + Pause (KeyCode = 3 si EnableCancelKey = False) mais comment afficher le dialogue ?
 

Pièces jointes

Dernière édition:
2ème cas: le UserForm est en vbModeless (en "pseudo-modal"): le code est interrompu avec dialogue d'exécution interrompue après le MsgBox qu'il a fallu ajouter (c'est pas vraiment ce que je veux) pour que l'interruption soit sortie du code du UserForm (fichier joint). Mais ce n'et pas 100% garanti. A condition de laisser les instructions sans pause (DoEvents) sinon ça ramène l'interruption dans le code du UserForm.

En fait c'est trop compliqué, laissez tomber cette question.
 

Pièces jointes

Dernière édition:
Suffit d'essayer.
Mais ne perds pas trop de temps là-dessus. Je crois que c'est un truc imaginaire non réalisable.
Sauf si tu sais via l'API afficher la boite de dialogue d'Exécution Interrompue.
 
Chez moi, Desktop & Laptop Windows 10 64bits
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    'Escape
    If KeyCode = 27 Then
        Unload Me
        Exit Sub
    End If
  
    'Control
    If KeyCode = 17 Then Exit Sub
  
    'Pause
    If KeyCode = 19 Then Exit Sub
  
    'Control + Pause
    If KeyCode = 3 Then
        MsgBox "KeyCode = 3 => Control + Pause"
        Exit Sub
    End If
  
    MsgBox "KeyCode = " & KeyCode
End Sub
 

Pièces jointes

Dernière édition:
En fait l'idée serait d'inhiber le Control + Pause (Application.EnableCancelKey = False) ce qui n'empêche pas d'intercepter le fait d'entrer Control + Pause (KeyCode = 3) et d'afficher le dialogue d'Exécution Interrompue par un moyen quelconque (API ou SendKeys). Je vais essayer le SendKeys.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
304
  • Question Question
Réponses
6
Affichages
286
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…