OVH Cloud OVH Cloud

Arrêter du code en court d'execution

2 réponses
Avatar
Manu
Bonjour,

dans une appli access j'ai mis en place un code qui tourne près de 10
minutes. Une fois lancer, c'est trop tard il faut booter. Comment puis-je
faire un bouton annuler, comme dans les installations pour arrêter le code
en cours d'éxécution?

Merci de votre réponse

Manu

2 réponses

Avatar
Eric
Bonjour Manu,

Une idée, peut-être :
Dans ta longue procédure(ton code), mettre un DoEvents.

Sur l'évenement click du Bouton :
envoyer 3 fois la touche TAB. Pourquoi ? On peut arrêter une routine VBA
par CTRL + Pause. Ca t'arrete dans l'interface VBE et tu as une fenêtre
indiquant Exécution interrompue : Continuer, Fin, Debogage, Aide. Avec
Debogage actif
Pour atteindre FIN 3 tabulations.

Exemple: je parcours un jeu d'enregistrement en oubliant de mettre un
rs.MoveNext, donc je n'atteindrai pas la fin du jeu mais resterai sur le
1er, boucle perpetuelle.

Voici le code :
Private Sub Commande0_Click()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("LaTable")
While Not rs.EOF
Debug.Print rs(0)
DoEvents
Wend
End Sub

Private Sub Commande1_Click()
SendKeys "{TAB 3}"
MsgBox "arrêt"
End Sub

PS : Ne marche pas s'il s'agit d'une exécution par Jet d'une requête
complexe

A+
Eric

Bonjour,

dans une appli access j'ai mis en place un code qui tourne près de 10
minutes. Une fois lancer, c'est trop tard il faut booter. Comment puis-je
faire un bouton annuler, comme dans les installations pour arrêter le code
en cours d'éxécution?

Merci de votre réponse

Manu




Avatar
Manu
Merci eric,
Je teste et on en reparle
Bon Week


"Eric" a écrit dans le message de news:
%
Bonjour Manu,

Une idée, peut-être :
Dans ta longue procédure(ton code), mettre un DoEvents.

Sur l'évenement click du Bouton :
envoyer 3 fois la touche TAB. Pourquoi ? On peut arrêter une routine VBA
par CTRL + Pause. Ca t'arrete dans l'interface VBE et tu as une fenêtre
indiquant Exécution interrompue : Continuer, Fin, Debogage, Aide. Avec
Debogage actif
Pour atteindre FIN 3 tabulations.

Exemple: je parcours un jeu d'enregistrement en oubliant de mettre un
rs.MoveNext, donc je n'atteindrai pas la fin du jeu mais resterai sur le
1er, boucle perpetuelle.

Voici le code :
Private Sub Commande0_Click()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("LaTable")
While Not rs.EOF
Debug.Print rs(0)
DoEvents
Wend
End Sub

Private Sub Commande1_Click()
SendKeys "{TAB 3}"
MsgBox "arrêt"
End Sub

PS : Ne marche pas s'il s'agit d'une exécution par Jet d'une requête
complexe

A+
Eric

Bonjour,

dans une appli access j'ai mis en place un code qui tourne près de 10
minutes. Une fois lancer, c'est trop tard il faut booter. Comment puis-je
faire un bouton annuler, comme dans les installations pour arrêter le
code en cours d'éxécution?

Merci de votre réponse

Manu