Diverses questions

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
Répondre
nico95i
Messages : 3
Enregistré le : 28 déc. 2020, 17:40

Diverses questions

Message par nico95i » 28 déc. 2020, 18:19

Bonsoir,

J'aimerais savoir s'il est possible de créer plusieurs variables différentes correspondant à un endroit ou ma souris doit cliquer mais aléatoirement parmi ces variables en ne cliquant jamais 2 fois au même endroit à par au moment où la souris aura cliquer sur toutes les variables une fois.

En même temps si cela est possible, j'ai une autre question, afin de me simplifier la tâche, je possède tous mes temps de pause sur un classeur excel, est t'il possible de reprendre la cellule d'un classeur excel comme variable pour la reprendre en temps de pause ? De réussir à détecter si la variable aléatoire est la 1 ou 2 pour reprendre le temps de pause adéquat, et aussi de détecter combien de fois il a déjà cliquer à cette endroit pour reprendre la ligne correspondante?

clique souris 1 (x=var1 y=var2) clique souris 2 (X=var3 y=var4)
1ere serie 3min 2min30
2eme serie 4min 3min
3eme serie 7min 4min

Merci d'avance

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

Re: Diverses questions

Message par plvh935 » 28 déc. 2020, 22:21

Bonjour,
Question 1 :
Ce que tu envisages est possible de plusieurs façons.
Première façon un peu lourde mais qui doit marcher :
1- Tu fais appel à un fichier texte comportant sur chaque ligne les positions X et Y que tu souhaites et un indicateur.
2- Par Fonction/hasard tu choisis aléatoirement la ligne à lire : Fonction <Pos>;Hasard;Nombre;1;20;
3- Tu lis le fichier texte à la ligne tirée dans la variable <Pos>. Cela peut donner par exemple pour la ligne tirée : 125;156;0
4-Tu charge les variables X et Y et l'indicateur de tirage avec les valeurs extraites de la ligne tirée au sort.
5-Tu déplaces ta souris à ces paramètres.
ET pour éviter de tirer toujours la même ligne il te faut un indicateur sur la ligne et tester sa valeur lors de la lecture de cette ligne. Donc suivant l'exemple X = 125, Y = 156 et le tirage est à zéro (ligne pas encore tirée)
Par un examine tu fais le tri : si le tirage est à zéro on déplace la souris et on met le tirage à 1, si le tirage est à 1 on relance le tirage.
Pour la deuxième façon il faut utiliser le plugins Data Excel et faire à peu près la même chose : mettre les valeurs X en colonne A, les valeurs Y en colonne B l'indicateur de tirage en colonne C et boucler dessus avec des GET et des SET.
Question 2 :
Oui, avec le même plugins il est possible de reprendre la cellule d'un classeur excel comme variable. Après j'ai pas bien compris ce que tu veux en faire.
Essaye déjà la première partie et reviens avec plus d'explications pour tes temps de pause.
Bon courage.

nico95i
Messages : 3
Enregistré le : 28 déc. 2020, 17:40

Re: Diverses questions

Message par nico95i » 29 déc. 2020, 02:02

Tout d'abord merci pour la réponse rapide,

Sinon je ne vais pas mentir que je suis plutôt débutant et ça va assez vite pour moi :lol:

Variable <Pos>;0;Numerique;
Fonction <Pos>;Hasard;Nombre;1;18;
Lire C:\position.txt;<Pos>;<Pos>;
Pause 00:00:01
Variable <X>;0;Numerique;
Fonction <X>;Texte;Caractère(s)/Position(s);<Pos>;1;3;
Variable <Y>;0;Numerique;
Fonction <Y>;Texte;Caractère(s)/Position(s);<Pos>;5;7;
Variable <tirage>;0;Numerique;
Fonction <tirage>;Texte;Caractère(s)/Position(s);<Pos>;9;9;
Label <Label1>
Examine <tirage>;=;0;
Goto deplacement souris
Goto <Label1>
Label deplacement souris
Move Mouse <X>;<Y>;Direct;
Pause 00:00:02
Calcul évolué <tirage>=<tirage>+1
Goto <Label1>


Voila ce que j'ai fait pour le moment cependant cela ne fonctionne pas, j'obtiens toujours la première position de mon fichier texte, quand vous dites faire appel à un fichier texte, c'est pour m'aider à comprendre ou il y a réellement une ligne à rajouter dans la macro?
Ensuite pour ma macro, j'ai un doute sur le calcul évolué +1, va t'il bien s'affecter à mon nombre de fois ou la souris s'est déplacé à cet endroit précis, ou au nombre de fois total où la souris s'est déplacée?

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

Re: Diverses questions

Message par plvh935 » 29 déc. 2020, 11:32

Bonjour,
Pour un débutant c'est pas mal ! Toutefois il y a quelques erreurs :
- met toutes tes déclarations de variables en début de macro c'est plus lisible.
- ta variable <Pos> contient et la position de la ligne à lire et le contenu de cette ligne. Tu peux créer une variable <Ligne> qui contient la ligne lue à la position <Pos>, c'est aussi plus clair, même si ça marche quand même comme ça.
- le label n'est pas à la bonne place. Il faut que tu recommences ta boucle au choix (hasard) de la ligne si tirage est à 1.
- pour dire que tu as déjà lu la ligne il faut que tu écrives dans ton fichier texte que tirage = 1 pour cette ligne. Donc tu reprends en écriture dans le fichier tes variables X et Y et tirage, ce qui peut donner 128;255;1 pour dire que la position 128x255 est déjà lue (à 1).
Corrigée mais pas finie (manque l'écriture dans le fichier .txt du "1") cela donne :
Variable <Pos>;0;Numerique;
Variable <X>;0;Numerique;
Variable <Y>;0;Numerique;
Variable <tirage>;0;Numerique;
Label <Label1>
Fonction <Pos>;Hasard;Nombre;1;5;
Lire C:\Users\USER\Documents\Base2.txt;<Pos>;<Pos>;
Pause 00:00:01
Fonction <X>;Texte;Caractère(s)/Position(s);<Pos>;1;3;
Fonction <Y>;Texte;Caractère(s)/Position(s);<Pos>;5;7;
Fonction <tirage>;Texte;Caractère(s)/Position(s);<Pos>;9;9;
Examine <tirage>;=;0;
Goto deplacement souris
Goto <Label1>
Label deplacement souris
Move Mouse <X>;<Y>;Direct;
Pause 00:00:02
Commentaire ***Ici écriture de la ligne <Pos> avec <X>, <Y> et <tirage>***
Goto <Label1>

A toi de faire.
Après, je sais pas ce que tu veux faire. Ne passer qu'une fois sur chaque position ou compter le nombre de fois ou tu as tiré cette ligne ? Dans cette macro tu ne peux passer qu'une fois sur chaque position.
Bon courage.

nico95i
Messages : 3
Enregistré le : 28 déc. 2020, 17:40

Re: Diverses questions

Message par nico95i » 30 déc. 2020, 20:42

Merci beaucoup ! Après plusieurs essais avec un fichier texte ça ne marchais pas du tout, j'ai donc installé le plugin excel et la ça fonctionne parfaitement, et je peux faire même bien plus que ce que je voulais de base, il y a juste un petit problème au niveau du calcul évolué..

Label 1
Variable A;A;Alphanumérique
Variable Ligne;1;Numérique
Variable Aléatoire;0;Numérique
Fonction Aléatoire;Hasard;Nombre;1;5;
Calcul évolué : Ligne=Ligne+Aléatoire
Calcul évolué : A=A+Ligne

Ensuite ma macro me reprends tous mes éléments parfaitement, s'il y a déjà eu un clique à cet endroit elle recommence à Label 1 sinon elle va faire un clique puis me rajoute +1 dans excel, cependant à la 2eme boucle ma variable "A" n'est plus égal à A mais A+Ligne, et donc j'aimerais savoir s'il y a moyen de recommencer avec toutes les valeurs à 0 lors de la seconde boucle? Ou bien dois je peut être faire le contraire des calculs à la fin de ma première boucle?

J'aimerais aussi savoir s'il y a aussi la possibilité de faire une macro qui serait relié à une autre macro, et cette première macro s’effectuerait par exemple toutes les 20min, mais quand elle s'effectue, la deuxieme macro qui si elle était en cours s'arrête puis recommence la ou elle en était lorsque la macro principale est terminée.

Et un grand merci pour toute l'aide déjà apportée !

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

Re: Diverses questions

Message par plvh935 » 30 déc. 2020, 23:35

Bonsoir,
Bien, ça prend tournure.
Tu dis "à la 2eme boucle ma variable "A" n'est plus égal à A mais A+Ligne". C'est normal vu la fin de ton bout de macro : Calcul évolué : A=A+Ligne. Il te faut mettre toi-même la variable à "A" par un Calcul évolué : A=A avant ton appel à Label 1.
Ta deuxième question est plus complexe. Dans le cours de ta macro 1 appeler une macro 2 ne pose pas de problème. Dans ce cas macro 1 passe la main à macro 2 et reprend ensuite son déroulement quand macro 2 est terminée. Pour cela tu utilises Exécute/Programme (donc l'autre macro) ou la barre d'outils Supplément/Inclusion.
Si j'ai bien compris tu veux que la macro 1 se lance toutes les 20 Mn et bloque une macro 2 jusqu'à la fin de son déroulement. Là je sais pas trop faire.
Peut être inverser le problème et faire tourner la macro 2 en continu qui lance macro 1 toutes les 20 Mn, comme décrit ci-dessus ? Dans ce cas ça marcherai, mais je sais pas ce que doivent faire ces macro.
Creuse un peu tout cela.
Bon courage.

Répondre