Page 1 sur 2
[R] Sortie de boucle
Posté : mer. 30 mai 2012 19:21
par exemptya
Bonjour, bonsoir
Voila, je souhaite faire un programme (déjà écrit) mais il se trouve dans une boucle, automatisation de taches répétitive.
En fait ce que je souhaite c'est que le programme tourne en boucle jusqu’à ce que l'utilisateur fasse quelque chose pour le stopper. Je suis nouveau sur autoit j'espère que je ne pose pas une question trop bête.
Voila j'espère avoir été suffisamment clair sinon n'hésiter pas a me demander ce que je veux réellement ><
Merci
Re: Sortie de boucle
Posté : mer. 30 mai 2012 19:23
par blacksoul305
Commence par éditer ton message et change le titre : [..] Sortie de boucle.
Re: Sortie de boucle
Posté : mer. 30 mai 2012 19:27
par exemptya
Je devrais mettre quoi à la place ?
Re: Sortie de boucle
Posté : mer. 30 mai 2012 19:29
par blacksoul305
Rajouter la balise [..].
Donc ça donne : [..] Sortie de boucle
Et quand tu auras eu ta réponse : [R] Sortie de boucle.
[..] = En cours de résolution
[R] = Résolu
Re: Sortie de boucle
Posté : mer. 30 mai 2012 19:30
par exemptya
Ok, pourquoi cette balise ?
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 19:31
par blacksoul305
Je viens d'éditer mon post. Maintenant que tout est bon, la solution :
► Afficher le texte
Code : Tout sélectionner
#include <Misc.au3>
Global $n = 0
While 1 ; première boucle
ToolTip("Première boucle : " & $n,5,0)
If _IsPressed("1B") Then ExitLoop ; si on appuie sur la touche "ESC", on quitte la première boucle
$n += 1
Sleep(50)
WEnd
$n = 0
Sleep(100)
While 1 ; seconde boucle
ToolTip("Seconde boucle : " & $n,5,0)
If _IsPressed("1B") Then ExitLoop ; si on appuie sur la touche "ESC", on quitte la seconde boucle
$n += 1
Sleep(50)
WEnd
Exit
Si jamais tu comprends pas, fais-le savoir.
EDIT : Ajout d'une explication dans le code.
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 19:33
par exemptya
Je ne connais pas Tooltip si tu pouvais me donner une brève explication stp
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 19:39
par blacksoul305
C'est la petite bulle. C'est juste pour te montrer qu'on change de boucle. Elle apparaît en haut à gauche normalement.
EDIT : Bon, j'vais mieux expliquer. C'est tout simplement une bulle que tu peux placer à un endroit sur l'écran a l'aide des coordonnées x et y. Dans mon exemple tu en as une qui est dans la première boucle et qui donc affiche : "Première boucle : ". La variable qui suit montre qu'en fait il y a bien une action qui se fait en même temps.
Quand tu appuies sur ESC (échappe), on quitte la boucle.
Oui j'avais oublié, il faut appuyer sur échap.
EDIT : J'ai ajouté un commentaire dans le code.
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 19:50
par exemptya
Code : Tout sélectionner
#include <Misc.au3>
Global $n = 0
While 1 ; première boucle
ToolTip("Première boucle : " & $n,5,0)
If _IsPressed("1B") Then ExitLoop ; si on appuie sur la touche "ESC", on quitte la première boucle
Je place mon programme ici ?
$n += 1
Sleep(50)
WEnd
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 19:51
par overflow
Si il y a une interface tu peu aussi rajouter un bouton "stop"
Ou te servir d une hotkey
et plein d autre encore
si tu peu poster le code en question tu auras surement des reponses plus ciblé sur ton probleme

Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 20:37
par blacksoul305
Il faudra que tu prennes le temps de lire
ça. Donc maintenant tu dois mettre le code dans le message entre les balises
Code : Tout sélectionner
prévues pour.
Ensuite, non. Là c'était pour te montrer comment sortir d'une boucle et par quel moyen, à savoir avec la commande ExitLoop.
La commande ExitLoop va te permettre de sortir de la boucle, mais pour sortir de la boucle, il faut bien une condition non ? La condition dans mon code c'est d'appuyer sur échap :
[code=text]If _IsPressed("1B") Then ; si l'utilisateur appuie sur échap
ExitLoop ; on sort de la boucle
EndIf
EDIT : Pour compléter la réponse d'Overflow, je conseille pas trop les HotKeys car ils ont tendances à monopoliser la touche voulue, et ceux pour quasi le même fonctionnement de ma précédente fonction _IsPressed.
EDIT 2 : Ou alors poster ton code entier comme l'a proposé Overflow. Comme ça on cible directement le problème, on le règle et on t'explique.
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 21:12
par mikell
Aussi, ça peut dépendre de la fréquence de la "tâche répétitive"
Un programme qui tourne dans une boucle While, ça bouffe beaucoup de ressources
Une solution alternative possible :
Code : Tout sélectionner
AdlibRegister("mysoft", 60*1000) ; lance 1 fois par minute
While 1
If ... (ce que tu veux).. Then AdlibUnregister("mysoft")
Wend
Func mysoft()
(la tache répétitive)
EndFunc
Re: [..] Sortie de boucle
Posté : mer. 30 mai 2012 22:18
par exemptya
Pardon à ceux qui attendait ma réponse si j'ai été un peu long (recherche d'appart avec sa chérie oblige =) )
donc voila ça c'est ma première idée en gros ouvrir des fichiers excel, allez a la page souhaitée et copier le contenu pour ensuite allez le coller dans l'autre feuille ouverte et ainsi de suite.
► Afficher le texte
Code : Tout sélectionner
Do
MouseClick("left",) ; double clique sur fichier n°1
Sleep(200)
MouseClick("left",) ; ouverture de la page souhaiter du fichier excel
Sleep(2000)
MouseClick("left",) ; ouverture du menu
sleep(2000)
MouseClick("left",) ; copier la page
sleep(2000)
MouseClick("left",) ; on appuie sur l'autre page excel ouverte
Sleep(2000)
MouseClick("left",) ; on appuie sur le menu
sleep(2000)
MouseClick("left",) ; on colle le contenu
sleep(2000)
MouseClick("left",) ; on affiche le dossier avec les autres fichiers
Until ()
Il ne me manque que les coordonnées mais je vais les faire =)
Et donc j'aimerais stopper ce programme quand je veux voila voila
Merci à ceux qui continueront à m'aider, pas facile de débuter !
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 18:33
par blacksoul305
Salut,
donc dans le code suivant, le script s'arrêtera une fois que tu auras appuyé sur échap.
► Afficher le texte
Code : Tout sélectionner
#include <Misc.au3>
Do
MouseClick("left",) ; double clique sur fichier n°1
Sleep(200)
MouseClick("left",) ; ouverture de la page souhaiter du fichier excel
Sleep(2000)
MouseClick("left",) ; ouverture du menu
sleep(2000)
MouseClick("left",) ; copier la page
sleep(2000)
MouseClick("left",) ; on appuie sur l'autre page excel ouverte
Sleep(2000)
MouseClick("left",) ; on appuie sur le menu
sleep(2000)
MouseClick("left",) ; on colle le contenu
sleep(2000)
MouseClick("left",) ; on affiche le dossier avec les autres fichiers
Until _IsPressed("1B")
EDIT : Il est clair que pour commencer, les MouseClick sont plus évidents, mais si tu veux éviter ce processus plutôt carton*, tu peux utiliser les fonctions Exel inclues dans AutoIt !
remarque * : Carton qui veut dire instable. Admettons qu'Exel mette plus du temps à se lancer, tout tes MouseClick cliqueraient n'importe comment. Ton programme est donc moins fiable et très limité.
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 21:29
par jchd
Exact : il suffit d'un popup d'une appli tierce ("Coucou, j'ai fini le backup !" ou "Chouette, y'a une nouvelle photo sur le réseau social Tartempion") pour que toute ta belle construction parte à dame, avec des conséquences éventuellement destructrices.
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 21:40
par blacksoul305
C'était juste un exemple, pour dire : "Tu peux sortir de ta boucle de cette façon". Son job étant donc de chercher un système pour ce faire si la mienne ne plaît pas, ou de nous demander si il n'y arrive pas.
EDIT : Ah mince, vous parlez de sa construction "MouseClick", j'croyais que mon échap allait poser problème !
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 22:48
par exemptya
Bonsoir et merci a tous, je l'ai fait, et j'arrive pas à sortir >< ça tourne en boucle, comment je stop ça ?
Merci
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 22:49
par blacksoul305
J'ai essayé le code et la touche échap devrait marcher...
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 22:52
par exemptya
Bon j'ai stopé ça en coupant le processus >< Bah écoute la touche échap n'a pas fonctionnée avec moi, une idée ?
Re: [..] Sortie de boucle
Posté : jeu. 31 mai 2012 22:54
par blacksoul305
De toute façon, la commande pour sortir d'une boucle, c'est ExitLoop. Maintenant plusieurs moyens de procéder :
- Soit on reste dans l'utilisation d'une boucle, et on se penche sur la gestion de celle-ci.
- Soit on part sur les commandes Adlib, mis mes connaissances sont très limités sur ce sujet.
Donc dans l'hypothèse ou nous partons sur une boucle, il suffit juste de se décider sur comment tu veux sortir de la boucle.
- A l'appuie d'une touche
- Système de compteur
- Système de timer
- Autre condition