Les boucles :

Les questions les plus posées trouvent leurs réponses ici
Répondre
Avatar du membre
Onissius
Messages : 746
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Les boucles :

Message par Onissius » 15 mai 2016, 17:55

Elles servent à répéter plusieurs fois quelque chose ou à attendre que quelque choses arrive pour faire autre chose.

Il y a deux types :
  1. Les boucle infini (celle qui ne s’arrête jamais) :

    Code : Tout sélectionner

    Label	<Debut>
             la macro
     Goto	<Debut>
    Label <Debut>
    Je donne le nom "Debut" à cet endroit comme le début de la boucle, mais j'aurais pu l'appeler autrement. Si possible, évitez les caractère accentués, les caractères spéciaux ou les espace dans le nom. Ça n'est pas une faute en soi, mais prenez en l'habitude en programmation. En effet, pour certains systèmes le A et le a sont deux caractères différents. Parfois le programme que vous utilisez gère mal les espaces et le caractères accentué peuvent être une cause d'erreurs.

    Commentaire Action de la macro
    ici, on fait la ou les actions que l'on souhaite répéter. C'est à la place du commentaire qu'est votre macro.

    Goto <Debut>
    C'est la fin de la boucle qui nous renvois au début de la boucle pour recommencer votre macro.
  2. Les boucle définie (Celles qui s'arrête au bout de x fois "plus un") :

    Code : Tout sélectionner

    Variable <nbr_de_boucle>;5;Numerique;
    Calcul évolué <nbr_de_boucle>=<nbr_de_boucle>-1
    Label <Début>
    Commentaire Action de la macro
    Calcul évolué <nbr_de_boucle>=<nbr_de_boucle>-1
    Examine <nbr_de_boucle>;=;0;
    Goto <Fin>
    Goto <Début>
    Label <Fin>
    Variable <nbr_de_boucle>;5;Numerique; (Variable où on défini le nombre de fois que l'on souhaite faire boucler la boucle. Cinq fois dans cet exemple)

    Calcul évolué <nbr_de_boucle>=<nbr_de_boucle>-1
    Vu que la boucle va tourner une première fois sans que le compteur soit incrémenté, ou soustrait ici 1 au nombre de boucle. Sinon, la boucle va tourner en tout six fois.

    Label <Début>
    (on nome cet endroit comme le début de la boucle)

    Commentaire Action de la macro
    Là, j'ai mis un label, mais c'est le contenu de votre macro qui doit être placé ici.

    Calcul évolué <nbr_de_boucle>=<nbr_de_boucle>-1
    Ici, en fin de boucle ou change le compteur de boucle en lui enlevant 1 à chaque fois.

    Examine <nbr_de_boucle>;=;0;
    Examine fonctionne un IF…Then…Else. Ici, si la condition est de vérifier si le nombre de boule est égale à Zéro...

    Goto <Fin>
    …si la condition est vérifié et donc VRAI que le nbr_de_boucle est bien égale à Zéro, alors on va en fin de macro…

    Goto <Début>
    …si la condition n'est pas vérifié et donc FAUSSE, alors on retourne en début de macro.

    Label <Fin>
    On nome cet endroit comme étant la fin de la boucle.

    On peut aussi utiliser le plug-in "Boucle" pour faire moins de ligne dans la macro.

    Code : Tout sélectionner

    Boucle	4
    Commentaire	Action de la macro
    Boucle	[FIN]
ATTENTION :
Une boucle s’exécute toujours une première fois avant de boucler, il faut donc en tenir compte.
Si on veut faire 5 boucles il fait bien penser à demander à la boucle de tourner 4 fois.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

will
Messages : 1
Enregistré le : 25 mars 2024, 21:12

Re: Les boucles :

Message par will » 25 mars 2024, 21:17

bonjour , je n'arrive pas après plusieurs recherches a créer un boucle qui prendra que une partie de ma macro , car si je lance la boucle se fait que sur le début et est répété a l'infinie .
si vous me reponder j'aimerais bien avoir votre contact pour pouvoir vous envoyer des photos car c'est plus explicite
merci beaucoup
william

plvh935
Messages : 166
Enregistré le : 10 sept. 2014, 22:33

Re: Les boucles :

Message par plvh935 » 25 mars 2024, 22:08

Bonsoir,
Difficile de t'aider avec le peu d'information que tu nous donnes.
Si ta boucle ne se fait que sur une partie de ta macro c'est sans doute parce que tu as une condition ou un goto qui te renvoie au début de la boucle. Et si elle tourne indéfiniment c'est parce que la condition n'est jamais remplie. Elle ne va jamais au bout.
Je te propose de mettre une variable qui compte le nombre de tours de ta boucle, et qui te l'affiche. En déplaçant la variable dans ta macro tu pourras contrôler le déroulement de cette macro. Si tu peux nous donner accès à ta macro (copier/collé en texte simple) on peut regarder.
Bon courage

Répondre