Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2016VBA - Comment afficher le prompt d'interruption
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 !
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.
Bonjour,
J'avais utilisé initialement l'instruction Stop mais elle ne propose pas Continuer ou Debug, ce fameux Dialogue qui intervient en Control + Pause sur un MsgBox que je tente avec un succès mitigé de reproduire.
Bonjour à tous
perso je pense qu'avant d'essayer de réinventer la roue
il faudrait apprendre a connaitre touts les event userform et leur property
donc cela étant dit je fait ce que je dis
donc on utilisera les event adéquats
avant tout je rappelle pour la Nième fois que le userform est un module classe avant tout et qu'il transporte avec lui le CLISD permettant d'afficher un object de la classe Forms
quel est l'event qui est déclenché quand on ""nothing"" une classe
le but c'est quoi ?
faire un control+pause sur un textBox
ok
donc question
d'après toi @Dudu2
1° quel sont les event déclenchés lorsque l'on ferme un userform ?
2° les quels concerne l'object forms et les quels concerne la classe(nomdel'userform)
essaie donc cela voir un peu
VB:
Public interruption As Boolean
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 3 Then interruption = True: Unload Me
End Sub
Private Sub UserForm_Terminate()
If interruption Then MsgBox "intérrompu"
End Sub
pas besoins de display ou de show perso et tout y couintiti
Public interruption As Boolean
Public Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 3 Then interruption = True: une_sub
End Sub
Sub une_sub()
If interruption Then
x = MsgBox("interruption", vbYesNo)
If x = vbYes Then Unload Me
End If
End Sub
Quand tu fais un MsgBox et Control + Pause dessus, tu as le dialogue affiché et le code arrêté sur la 1ère instruction qui suit le MsgBox.
C'est ce que j'essaie de reproduire avec le UserForm.
Faire le l'arrêt dans le code du UserForm n'a pas d'intérêt car on ne sait pas d'où il a été appelé et c'est l'instruction qui suit son appel qui nous intéresse pour le debug.
Bonjour,
J'avais utilisé initialement l'instruction Stop mais elle ne propose pas Continuer ou Debug, ce fameux Dialogue qui intervient en Control + Pause sur un MsgBox que je tente avec un succès mitigé de reproduire.
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.
Bonjour à tous
j'en etais arrivé là depuis un moment delà(affichage du vbe)
cela dit avant le stop on pourrait afficher un message puisque c'est quand même la base de la demande
re
non y a pas de mal @mapomme
par contre ce que je pige pas c'est que vous ayez besoin du stop
chez moi ctrl+pause dans le keydown du textbox ouvre le vbe (SANS CODE)
conclusion si on se passe du message on peut se passer de code aussi
re Bonjour à tous
juste en passant
si la touche ctrl ne doit être utilisée pour autre chose dans le textbox
comme les messages application et vbe sont prioritaires par rapport au msgbox vba
le message d'interruption apparait
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Shift <> 0 Then Shift = 0: MsgBox KeyCode
End Sub
Bonjour @patricktoulon,
C'est bien vu mais même avec un If KeyCode = 17 Then MsgBox 1, on reste dans le code UserForm (au niveau du TextBox1_KeyDown()) et pas moyen de renvoyer l'interruption sur l'instruction suivante si l'appel du UserForm est fait par une fonction publique. J'ai essayé des dizaines de trucs et pas moyen.
En fait quand on fait un SendKeys (API keybd_event ou pas) de "^{BREAK}", on ne sait jamais quand ça va arriver au gestionnaire d'interruption. Un boucle de 10.000 DoEvents après se solde par des interruptions à des valeurs plus ou moins grande de l'indice de boucle.
- 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