XL 2016 Boucle interminable ( prémisses au mouvement perpétuel ? )

Pounet95

XLDnaute Occasionnel
Bonjour,
J'espère que vous aurez, malgré les contraintes, passé un bon WE Pascal.
Je sais depuis hier soir 20h et des broquilles que je vais encore avoir du temps avant de mettre un bout d'orteil dehors, mais plutôt que d'attendre la fin du phénomène, je préférerais que vous me donniez l'astuce, si elle existe, pour stopper l'exécution d'une macro qui est partie "en vrille" suite à un mauvais code et/ou lancée par erreur à la place d'un pas à pas.
Pour le moment, j'en suis ) Ctrl + Alt +Supp qui me permet d'accéder au Gestionnaire des tâches et donc d'arrêter la session Excel en cours.
y aurait-il moins brutal ?
Merci de me dire

Oups : j'ai oublié de préciser que Ctrl C, Ctrl Q, Ctrl Pause restent inactifs
Quant à la recherche avec la liste à droite, bof !!!!
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

A ma connaissance il n'y a pas d'autre solution que le CTRL+ALT+SUPPR.
Si ce n'est que prévoir, dans la phase de test, un compteur (une variable integer) incrémenté dans la boucle. Une fois atteint un nombre d'itérations arbitraire mais suffisant sortir.
Exemple :
VB:
Dim cpt As Integer
Do While condition And cpt < 1000
    ' .... Actions
    ' incrémentation compteur
     cpt = cpt + 1
Loop

Au pire si la condition n'est jamais fausse, la boucle s'arrêtera à 999 itérations

cordialement
 

Pounet95

XLDnaute Occasionnel
Bonjour Roblochon,
Merci de ta réponse rapide.
Comme je ne sais pas exactement où ça démarre, il faut donc que je mette cela dans une procédure dont l'appel sera fait dans des endroits du code principal susceptibles d'être la cause du mal.
Un truc du genre :
VB:
Sub Principale()
      dim Source as string     'nom de l'endroit soupçonné d'être l'origine
      'le code
       Source="Ici"
      Compteur_Boucles Source
      .......
       Source="Là"
      Compteur_Boucles Source
     .... etc
End Sub[
/CODE]
 

jmfmarques

XLDnaute Accro
Bonjour Roblochon
Ta solution n 'est pas mauvaise, mais a un gros défaut : celui de déterminer à l'avance un nombre maximum d'itérations.
On utilise souvent une variable booléenne générale dont on change la valeur au clic sur un bouton et, au sein de la boucle un Doevents pour permettre d'évaluer l'état de cette variable et quitter au besoin la boucle.
Cette méthode est toutefois très chronophage en l'état. A ce point chronophage que je suis en train de rédiger à mes moments libres (j'en ai peu en ce moment) un petit "tuto" à propos de la bonne et de la mauvaise utilisation de cette méthode. ;)
 

Pounet95

XLDnaute Occasionnel
Bonjour jmfmarques ( je n'ai pas le droit au Bonjour? )
Même si la solution a un gros défaut, voire plus ( nbre d'itérations fixé, chronophage, et d'autres peut-être ?), elle a au minima le mérite de répondre à un problème, celui où potentiellement il y a risque que ça dure plus longtemps encore. Donc à traiter en préventif, non ?
J'ai hâte de voir ton tuto !
 

jmfmarques

XLDnaute Accro
Bonjour Pounet95
La méthode (que je conteste d'ailleurs en l'état) est simple. En voilà le mécanisme :
- Une variable booléenne générale genre :
Private toto as boolean
- un bouton de commande avec ce code au clic :
toto = true
- et dans la boucle (par exemble une boucle for to next):
.....
.....
doevents
If toto = true then exit fo
r
...
...
 

jmfmarques

XLDnaute Accro
Re,

N'ai-je pas dis :
Phase pendant laquelle il est bon de perdre du temps.

A chacun ses méthodes, qu'il propose et que le demandeur peut choisir.

Cordialement
Je vais te parler, moi, d'un exemple de cas totalement hors "test" où l'utilisateur devra et pourra décider de mettre un terme en pleine exécution :
-celui (par exemple et entre autre) de tentatives de connexions en boucle jusqu'à réussite ou abandon, sans pour autant sortir en mode debug. ;)
Il faut toujours se garder de conclusions trop rapides.
 

jmfmarques

XLDnaute Accro
Re,

@jmfmarques, certainement intéressant mais je ne suis pas là pour faire de la théorie. Ce qui m’intéresse est de savoir si @Pounet95 s'en sort.

cordialement
J'ai donné à cet effet toutes les indications nécessaires en mon message N° 10, non ?
Et suivra très bientôt un petit tuto pour limiter de manière très significative le caractère chronophage de cette méthode.
Que souhaites-tu de plus ?
 

Pounet95

XLDnaute Occasionnel
Ne t'en fais pas, Roblochon, j'y arriverai, à l'usure peut-être, mais je l'aurais un jour !! (pub)
Pour ne pas envenimer les choses ( il y a assez de ma macro qui part en vrille !), je vais clore ce fil et faire ma patouille avec tout ce que vous dites.
Au passage, je viens de me rendre compte que le fil de jmfmarques ( #10) vient seulement d'apparaître alors qu'il n'était pas présent lors de précédents rafraîchissements ????
C'est d'autant plus "con" qu'il y avait réparation de "l'oubli" signalé dans mon fil #8
Au prochain sujet donc
Merci à tous
 

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise