[..] Script pour entreprise.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour entreprise.

#21

Message par sksbir »

Copie de données: simuler la souris pour faire un copier-coller n'est pas une bonne idée : Il vaut mieux simuler les raccourcis clavier.
Pour accéder au contenu du presse-papier, il y a les fonctions clipget() et clipput()

Pour stopper sur fenetre inactive ( vraiment inactive ? ou carrément absente ?) , il suffit d'utiliser winwaitactive() , avec un timeout, puis d'exploiter le code retour ( = 0 si le timeout est arrivé ) pour sortir du script
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#22

Message par loix »

Merci pour ta réponse. Je vais voir pour les copiers coller comment le pourrais faire avec les touche clavier.

Pour ce qui est de "Pour stopper sur fenetre inactive ( vraiment inactive ? ou carrément absente ?) , il suffit d'utiliser winwaitactive() , avec un timeout, puis d'exploiter le code retour ( = 0 si le timeout est arrivé ) pour sortir du script"
Je suis désolé mais je ne sais absolument pas ce que cela signifie. C'est trop technique pour moi.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Script pour entreprise.

#23

Message par ZDS »

Bonjour,

Copier des données en passant par la souris le clavier ou le presse papier sont des méthodes sales quand on peut faire autrement.
Exemple pour lire la cellule B7 d'un fichier Excel :
► Afficher le texteLire cellule
Une quantité impressionnante de flags et de fonctions _ExcelXXXXXXXXX permettent de ne pas afficher la fenetre Excel ou de gérer les droits d'accès au fichier, de lire ou écrire des valeurs et de les sauvegarder, etc... Tout ce qu'il faut faire, c'est charger le flux du fichier au début du script pour ne pas avoir à le faire à chaque lecture.

Pour la copie, jette ton ton clic-droit/coller à la poubelle et utilise plutot un ControlSend (récupère les identifiants dont je t'ai parlé avec AutoIt3Info, il est installé de base, le raccourci est dans le menu Démarrer et dans les menus de Scintilla).

A bientôt.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#24

Message par loix »

Vous êtes trop fort pour moi. J'ai beau y mettre de la bonne volonté, je ne comprend pas.
Je ne veux pas que sa soit propre ou sale.
Je veux juste faire le script et l'utiliser une fois pour mettre a jour nos prix de produit.
Je n'y arriverais pas avec vos techniques de pro :)

Pour AutoIt3Info j'essaye de l'utiliser mais je ne comprend pas qu'elle infos je doit récupéré.
En bref, je pense abandonné. Ce n'es pas contre vous mais chacune de vos réponse m’embrouille un peu plus....
Je demande un copier coller plus ou moins propre on me répond d'utiliser uniquement des fonction excels.
Je suis nul en Auto-it et je n'ai pas vraiment envie d'aprendre a m'en servir. je veux juste savoir utilisé les fonctions de base.
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour entreprise.

#25

Message par sksbir »

On pourrait te donner des réponses plus précises, mais pour ça, il faudrait que tu publies sur le forum le script autoit que tu as généré avec le recorder ( celui qui fonctionne, mais que tu veux améliorer en mettant des controles dedans ).
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#26

Message par loix »

Je n'ai pas fait le scrit avec le recorder, sa ne fonctionnait pas.
Je peux essayer. Sa vous donnera des info. je le post quand j'ai fini.
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#27

Message par loix »

Voila le code généré par AU3recorder. il ne fonctionne pas, le mien ne ressemble pas vraiment a celui ci.

Code : Tout sélectionner

region --- Au3Recorder generated code Start ---
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","Yoshimura 2011 DIST ")
MouseClick("left",62,301,2)
MouseClick("right",62,301,1)
_WinWaitActivate("classname=Net UI Tool Window","")
MouseClick("left",27,31,1)
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","Yoshimura 2011 DIST ")
MouseMove(379,903)
MouseDown("left")
MouseMove(379,902)
MouseUp("left")
_WinWaitActivate("APISOFT Gestion Commerciale XCS - xxxxxxxxxxxxxxxxxxxx - Dossier en Euro - [Admin]","Articles : Standard")
MouseClick("left",87,134,2)
MouseClick("right",81,130,1)
MouseClick("left",113,198,1)
MouseClick("left",112,171,2)
_WinWaitActivate("APISOFT Gestion Commerciale XCS -xxxxxxxxxxx - Dossier en Euro - [Admin]","GSXR 600 K1-K5 - Lig")
MouseClick("left",233,903,1)
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","Yoshimura 2011 DIST ")
MouseClick("left",520,303,2)
MouseClick("left",534,296,2)
MouseClick("right",534,301,1)
_WinWaitActivate("classname=Net UI Tool Window","")
MouseClick("left",39,33,1)
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","Yoshimura 2011 DIST ")
MouseMove(363,903)
MouseDown("left")
MouseMove(363,902)
MouseUp("left")
_WinWaitActivate("APISOFT Gestion Commerciale XCS - xxxxxxxxxxxxxxx - Dossier en Euro - [Admin]","GSXR 600 K1-K5 - Lig")
MouseClick("left",321,530,2)
_WinWaitActivate("APISOFT Gestion Commerciale XCS - xxxxxxxxxxxxxxxx - Dossier en Euro - [Admin]","Article [Modificatio")
MouseClick("right",326,530,1)
MouseClick("left",364,594,1)
Send("{DOWN}{DOWN}{DOWN}")
MouseClick("left",366,373,1)
MouseClick("left",693,417,1)
Send("???{DOWN}{DOWN}{DOWN}{LEFT}{LEFT}??")
MouseClick("left",263,672,1)
_WinWaitActivate("APISOFT Gestion Commerciale XCS - xxxxxxxxxxxxxxx - Dossier en Euro - [Admin]","Articles : Standard")
MouseMove(267,903)
MouseDown("left")
MouseMove(267,902)
MouseUp("left")
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","Yoshimura 2011 DIST ")
MouseClick("right",17,303,1)
_WinWaitActivate("classname=Net UI Tool Window","")
MouseClick("left",67,124,1)
")

#region --- Internal functions Au3Recorder Start ---
Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
EndFunc
#endregion --- Internal functions Au3Recorder End ---

#endregion --- Au3Recorder generated code End ---
#endregion --- Au3Recorder generated code End ---
 
Le probleme est que chaque Modification d'article a un nom de fenetre en fonction du nom du produit.
Modifié en dernier par loix le lun. 30 mai 2011 15:24, modifié 2 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Script pour entreprise.

#28

Message par Tlem »

Merci de rajouter les balises de code.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#29

Message par loix »

Voila. Désolé :)
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour entreprise.

#30

Message par sksbir »

loix a écrit :Voila le code généré par AU3recorder. il ne fonctionne pas, le mien ne ressemble pas vraiment a celui ci.
......
Donc, tu as codé quelque chose, mais tu nous publies un autre code qui ne fonctionne pas ?
loix a écrit :Le probleme est que chaque Modification d'article a un nom de fenetre en fonction du nom du produit.
Par défaut, le titre des fenêtres est comparé à partir du début.
Donc :
_WinWaitActivate("APISOFT Gestion Commerciale XCS - MCT Distribution - Dossier en Euro - [Admin]","Articles : Standard")
devient
_WinWaitActivate("APISOFT Gestion Commerciale XCS - MCT Distribution")
et comme ça, ça fonctionnera pour toutes les fenêtres dont le titre commence par la phrase recherchée.

Même remarque avec excel:
_WinWaitActivate("Microsoft Excel")
ça devrait suffire à condition que tu déclares comme postulat que le seul excel qui est ouvert, c'est ta feuille d'où tu copies les infos.

Pour que _winwaitactivate fonctionne sans lui préciser le 2eme argument, il faut modifier la déclaration de _winactivate :
Func _WinWaitActivate($title,$text,$timeout=0)
devient
Func _WinWaitActivate($title,$text="",$timeout=0)

Par ailleurs, je t'invite à recommencer la capture avec le recorder, mais en activant la capture du clavier, et surtout, à utiliser les raccourcis claviers quand tu fais ta capture : CTRL+C CTRL+V pour faire un copier-coller par exemple, et les flèches du clavier pour te déplacer, et ALT+xxxx pour activer les menus grâce aux lettres soulignées.

Ainsi, tu vas éviter que ton script foire juste parce qu'une fenêtre a été déplacée, ou parce que tu rejoues ton script sur un autre PC qui a une résolution d'écran différente...
N'utilise la souris que pour passer d'une fenetre à l'autre en cliquant sur le titre de la fenêtre. Comme winactivate n'a pas besoin de la souris, tu pourras alors virer de ton script tout ce qui est mousemove et mouseclick : tu ne garde que les _winactivate, en changeant le titre comme précisé au début de mon message.
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#31

Message par loix »

Oulala. Je vais essayer.
Sinon mon code c'est simplement des coordonnées et la souris qui click donc...
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#32

Message par loix »

Voila le code.
cela marche a peut pret. il y a quelques erreur étant donné qu'il n'y a pas encore de pause, le teps qu ele logiciel se lance.

Code : Tout sélectionner

#region --- Au3Recorder generated code Start ---
_WinWaitActivate("Program Manager","")
MouseMove(266,883)
MouseDown("left")
MouseMove(266,882)
MouseUp("left")
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","")
MouseClick("left",96,305,1)
Send("{CTRLDOWN}c{CTRLUP}")
_WinWaitActivate("Program Manager","")
MouseMove(360,899)
MouseDown("left")
MouseMove(333,682)
MouseUp("left")
_WinWaitActivate("APISOFT Gestion Commerciale XCS - xxxxxxxxxxxxx - Dossier en Euro - [Admin]","")
Send("{CTRLDOWN}v{CTRLUP}{ENTER}{ENTER}")
_WinWaitActivate("Program Manager","")
MouseClick("left",168,897,1)
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","")
MouseClick("left",542,306,1)
Send("{CTRLDOWN}c{CTRLUP}")
_WinWaitActivate("Program Manager","")
MouseMove(391,890)
MouseDown("left")
MouseMove(389,889)
MouseUp("left")
_WinWaitActivate("APISOFT Gestion Commerciale XCS - xxxxxxxxxxxxxxxxxxxxx - Dossier en Euro - [Admin]","")
Send("{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{CTRLDOWN}{CTRLUP}{DOWN}{DOWN}{DOWN}{CTRLDOWN}{TAB}{TAB}{TAB}{CTRLUP}{CTRLDOWN}{RIGHT}{CTRLUP}{TAB}{TAB}???{DOWN}?{DOWN}?{DOWN}?{SHIFTDOWN}{TAB}{TAB}{SHIFTUP}??")
MouseMove(423,677)
MouseDown("left")
MouseMove(422,673)
MouseUp("left")
_WinWaitActivate("Program Manager","")
MouseMove(239,892)
MouseDown("left")
MouseMove(229,879)
MouseUp("left")
_WinWaitActivate("Microsoft Excel - Yoshimura 2011 DIST PRICE LIST(2)  [Mode de compatibilité]","")
MouseClick("left",19,302,1)
MouseClick("right",19,302,1)
_WinWaitActivate("classname=Net UI Tool Window","")
MouseClick("left",54,121,1)

#region --- Internal functions Au3Recorder Start ---
Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
EndFunc
#endregion --- Internal functions Au3Recorder End ---

#endregion --- Au3Recorder generated code End ---
#endregion --- Au3Recorder generated code End ---
Modifié en dernier par loix le lun. 30 mai 2011 15:29, modifié 1 fois.
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour entreprise.

#33

Message par sksbir »

Tu as encore pas mal de mousemove et mouseclic, mais c'est toi qui voit
N'oublie pas de mettre le sujet en [R] si tu penses que c'est résolu.
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#34

Message par loix »

Mon sujet n'es pas du tout clos.
Le code ne fonctionne pas. C'est vous qui m'avez demander de poster cela.
Il n'y a pas encore les vérifications etc etc..
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Script pour entreprise.

#35

Message par sksbir »

loix a écrit :Mon sujet n'es pas du tout clos.
Le code ne fonctionne pas. C'est vous qui m'avez demander de poster cela.
Il n'y a pas encore les vérifications etc etc..
Comment ça, il ne fonctionne pas ? C'est toi qui l'a généré avec le Au3 recorder, alors si tu te remets dans le même contexte que celui de ton PC au moment de l'enregistrement, il va fidèlement réexécuter ce que tu lui as appris.

Mais maintenant, c'est à toi de continuer. Nous, on n'a pas tes fenêtres sous les yeux, et on ne sait pas exactement comment tu veux les manipuler et puis "etc..etc...", c'est un peu léger comme spécifications fonctionnelle non ?

Maintenant, pour améliorer ton script, tu dois déjà comprendre les instructions qui sont présentes . Par exemple, le début, c'est
_WinWaitActivate("Program Manager","")
MouseMove(266,883)
MouseDown("left")
MouseMove(266,882)
MouseUp("left")
_WinWaitActivate("Microsoft Excel

Bon, t'as utilisé le clic gauche, OK, ça, on le voit dans le code, mais il n'y a que toi qui sait pourquoi... Si c'est juste pour activer la fenetre excel, alors comme je te l'ai déjà dit, tu peux rééditer ton script et supprimer les 3 appels "mouse.."

mais avant de rééditer, je t'avais suggéré de remplacer tes actions à la souris par des actions au clavier pendant que tu fais l'enregistrement du script...RAPPEL : cocher la case "enregistrer le clavier" dans Au3 recorder avant de démarrer l'enregistrement.
loix
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mer. 11 mai 2011 14:15
Status : Hors ligne

Re: [..] Script pour entreprise.

#36

Message par loix »

A la base ma question était comment récupéré les données d'un champ..
Et personne ne ma encore répondu pour cela.
Vous m'avez demander de faire un record de mon exécution avec le moins de click souris possible.
Le voila.

Maintenant vous me dites c'est bon tu peux te débrouiller tout seul.
Mais pas du tout.
Je ne connais toujours pas le nom du champ du code et aucune de vos méthode ne ma permis de l'identifier.
Je pensais être sur le forum officiel ..
Annefnd
Niveau 1
Niveau 1
Messages : 1
Enregistré le : ven. 19 juil. 2024 23:09
Localisation : Reims
Status : Hors ligne

Re: [..] Script pour entreprise.

#37

Message par Annefnd »

Voici un exemple de script en AutoIt qui pourrait t'aider à automatiser les étapes que tu as décrites. Ce script ouvre Excel, copie certaines cellules, puis interagit avec un autre logiciel de gestion. Assure-toi d'avoir installé AutoIt et que l'application Excel et le logiciel de gestion sont correctement identifiés avant de lancer le script.

autoit
Copier le code
; Ouvrir Excel
Run("excel.exe")
WinWaitActive("Microsoft Excel")

; Sélectionner la première ligne dans Excel
Send("{HOME}") ; Aller au début de la ligne
Send("{DOWN}") ; Aller à la première ligne
Send("^c") ; Copier le contenu de la cellule (Ctrl+C)

; Passer à l'application de gestion
Run("nom_de_lapplication_ici.exe")
WinWaitActive("Nom de votre application")

; Coller le contenu dans la barre de recherche du logiciel de gestion
Send("^v") ; Coller (Ctrl+V)

; Revenir à Excel et copier le 3ème champ de la ligne
WinActivate("Microsoft Excel")
Send("{RIGHT 2}") ; Aller à la troisième cellule de la ligne
Send("^c") ; Copier le contenu de la cellule

; Revenir à l'application de gestion et coller ce contenu dans le champ approprié
WinActivate("Nom de votre application")
Send("^v") ; Coller

; Revenir à Excel pour supprimer la première ligne
WinActivate("Microsoft Excel")
Send("{HOME}") ; Aller au début de la ligne
Send("{DOWN}") ; Sélectionner la première ligne
Send("^x") ; Couper la première ligne (Ctrl+X)

; Fin du script
Explication :

Le script démarre Excel et s'assure qu'il est actif avec WinWaitActive().
Il navigue dans le tableau Excel, copie la première cellule de la première ligne, puis passe à l'application de gestion pour coller cette information.
Ensuite, il revient à Excel, copie le troisième champ de la même ligne, et le colle dans l'application de gestion.
Enfin, il revient dans Excel et supprime la première ligne après avoir copié les données.
Quelques précautions :

Vérifie que les applications sont bien nommées dans les commandes WinWaitActive() et Run().
Assure-toi que le chemin du programme Excel et de l'application de gestion sont corrects.
Tu peux ajuster ce script en fonction des spécifications exactes de ton projet. Bon courage pour ton stage ! ;)
Répondre