Interrompre l'exécution d'un code VBA

Bonjour le forum,

Dans certaines boucles la touche Echap n'y rien ne répond plus et je ne trouve pas d'autre solution que de fermer Excel à la malpropre pour interrompre le calcul. Voici un exemple de code court mais dont l'exécution prends du temps que je n'arrive pas à interrompre avec Echap (ni par Ctrl+Pause) passé un certain temps. Peut-on remédier à cela ? Cette boucle n'est qu'un exemple je suis fréquemment confronté à ce problème.

Sub Exemple()
dim tb()
t=0
do
redim tb(t)
t=t+1
loop
End Sub

Merci d'avance

Bonjour toutes et tous

@Stephane1972

et en essayant d'effectuer un CTRL + Pause (Break)


j'ai vu aussi ceci ci-dessous mais, avec prudence ( attendre un peu la réponse d'un pro d'Excel):

5. Although Excel VBA resets the EnableCancelKey property automatically to xlInterrupt at the end of your macro, it's good practice (when using the previous code line) to end your macro with the following code line:

5. Bien qu'Excel VBA réinitialise automatiquement la propriété EnableCancelKey sur xlInterrupt à la fin de votre macro, il est recommandé (lors de l'utilisation de la ligne de code précédente) de terminer votre macro avec la ligne de code suivante: (traduction Google)

-----------

Application.EnableCancelKey = xlInterrupt

crdlt,

André

Merci pour ta réponse André, j'ai testé le xlInterrupt et le Ctrl+Pause , sans succès... Le problème n'apparait qu'au bout d'un certain temps et la barre de titre de VBE ou d'Excel indique : "ne répond pas". J'ai ce même message avec une autre boucle que je ne sais pas interrompre mais pourtant si je lui en laisse le temps le calcul fini par aboutir preuve qu'Excel continue à répondre quand même un peu !

Bonjour à tous,

la barre de titre de VBE ou d'Excel indique : "ne répond pas"

Quand une boucle fait cela > souvent c'est quelle tourne à l'infinie > il pourrait y avoir une coquille dans cette boucle ...

ric

Merci Ric, je ne pense pas qu'il y'ait de coquilles dans toutes les boucles où ce problème m'arrive. Ce sont toujours des boucles répétées un très grand nombre de fois (jusqu'à plusieurs millions) mais en aucun cas à l'infini... (et aucune procédure liée à un évènement ne vient interférer)

Slts

Bonjour à tous,

une possibilité avec une Checkbox 'Pause macro' sur la feuille :

Sub test()
    Dim i As Long
    Do
        i = i + 1
        If i Mod 10000 = 0 Then
            DoEvents
            If CheckBox1 Then Stop ' traitement que tu veux (msgbox de choix ?)
        End If
    Loop Until i > 100000
End Sub

Règle le Mod 10000 en fonction de temps de calcul de ta boucle et de la réactivité voulue.
Le but étant d'avoir le moins de DoEvents possible qui coûtent très très cher en temps, et comme tu parles de millions de boucles....
Si ton 'traitement' est de relancer, remettre la Checkbox à False
eric

Merci beaucoup pour ta réponse eriiic, le DoEvents semble solutionner partiellement mon problème j'arrive maintenant à interrompre mes boucles depuis Excel avec Echap et reprendre en partie le contrôle mais continue de devoir arrêter le code dans VBE. Maintenant je vais chercher à remplacer ton Stop par un Exit Sub et mon problème devrait être résolu.

Slts

A ta place je mettrai plutôt une msgbox proposant d'arrêter ou de reprendre.
Ca laisse le choix en cas de clic nerveux...

Rechercher des sujets similaires à "interrompre execution code vba"