[R] Traitement d'une feuille excel
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Traitement d'une feuille excel
Bonjour, j'écris mon premier script lu les différents tutos sur autoit et l'udf excel et je rencontre quelques difficultés (les passages en rouge)
But du bot ? copier les données contenues dans chaque ligne, ligne apres ligne
Comment est construite la feuille ?
5000 lignes
La premiere colonne est vide et sert à écrire "reprise" : quand le bot s'arrete de travailler (exemple ligne 1254 : l'ordi est éteint quand je pars) je voudrais que le lendemain en lançant le .exe il reprenne tut seul à la ligne 1254 pour ça j'ai trouvé la solution d'écrire "reprise dans la premiere colonne vierge et à la ligne 1254
Les autres colonnes sont réservées pour le nom, prénom, adresse, code postal, ville ...
Voici mon script :
$chemin_database = ("C:\Users\Vincent\Documents\Database.xlsx")
#include <Excel.au3>
$database=_ExcelBookOpen($chemin_database)
$search_first_good_cell = $database.Columns("A").Find("REPRISE")
;et là je bloque
1) je voudrais qu'il mette en variable $name (corespondant à ce qu'il y a d'écrit dans la collonne B ligne $ligne
mais comment à partir de $search_first_good_cell je peu extraire le numéro de la ligne pour pouvoir le mettre dans $ligne
é) je voudrais qu'il efface "reprise" et l'écrive dans la ligne $ligne+1 colonne A (j'ai essayé avce _ExcelWriteCell ma syntaxe doir etre mauvaise)
j'espere avoir été le plus concis possible
merci d'avance pour votre aide
But du bot ? copier les données contenues dans chaque ligne, ligne apres ligne
Comment est construite la feuille ?
5000 lignes
La premiere colonne est vide et sert à écrire "reprise" : quand le bot s'arrete de travailler (exemple ligne 1254 : l'ordi est éteint quand je pars) je voudrais que le lendemain en lançant le .exe il reprenne tut seul à la ligne 1254 pour ça j'ai trouvé la solution d'écrire "reprise dans la premiere colonne vierge et à la ligne 1254
Les autres colonnes sont réservées pour le nom, prénom, adresse, code postal, ville ...
Voici mon script :
$chemin_database = ("C:\Users\Vincent\Documents\Database.xlsx")
#include <Excel.au3>
$database=_ExcelBookOpen($chemin_database)
$search_first_good_cell = $database.Columns("A").Find("REPRISE")
;et là je bloque
1) je voudrais qu'il mette en variable $name (corespondant à ce qu'il y a d'écrit dans la collonne B ligne $ligne
mais comment à partir de $search_first_good_cell je peu extraire le numéro de la ligne pour pouvoir le mettre dans $ligne
é) je voudrais qu'il efface "reprise" et l'écrive dans la ligne $ligne+1 colonne A (j'ai essayé avce _ExcelWriteCell ma syntaxe doir etre mauvaise)
j'espere avoir été le plus concis possible
merci d'avance pour votre aide
Modifié en dernier par Vincent31 le lun. 21 nov. 2011 18:06, modifié 3 fois.
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [] Traitement d'une feuille excel
Et tu veux que ton script fasse quoi ? Je n'ai pas trop saisis , Tu veux écrire le nom dans ton programme et qu'il te renvoie le numéro de ligne ? Car excel possède de nombreuse fonction de base et c'Est peut-être plus adapté de l'utiliser
Sinon j'éditerais bien ton titre de message si j'aurais les droits mais malheuresement tu devras le faire toi même ==> [..]
Sinon j'éditerais bien ton titre de message si j'aurais les droits mais malheuresement tu devras le faire toi même ==> [..]
Compte skype : bloodwolfff
Re: [] Traitement d'une feuille excel
en fait avant on travaillait sur excel et on a un logiciel exprès aujourd'hui pour referencer tous les clients ...bloodwolff a écrit :Et tu veux que ton script fasse quoi ? Je n'ai pas trop saisis , Tu veux écrire le nom dans ton programme et qu'il te renvoie le numéro de ligne ? Car excel possède de nombreuse fonction de base et c'Est peut-être plus adapté de l'utiliser
Sinon j'éditerais bien ton titre de message si j'aurais les droits mais malheuresement tu devras le faire toi même ==> [..]
mais je ne veux pas recopier les données une a une moi meme et comme en plus j'ai envie d'apprendre autoit
je voudrais faire mon script de sorte que
le bot trouve le terme "reprise" a ce moment la il sait sur quelle ligne d'excel il faut travailler et sur cette ligne (que je voudrais mettre en variable $ligne) il y a le nom etc.. qu'il faut qu'ille mette en variable $name .. ensuite je saurais faire le coller vers mon logiciel
ce sont les fonctions _Excel qui me posent souci
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [..] Traitement d'une feuille excel
Moi j'irais avec la fonction
Ensuite tu n'as qu'à faire une boucle (la plus approprié dans ce cas est la Do...Until) pour retrouver ta valeur "reprise" dans la première colonne
Une fois trouvé il faudra Retirer la valeur "reprise"
Récupérer les valeur noms etc, des autres colonnes et les mettre dans tes variables (Et éventuellement pauser pour effectuer les actions voulu)
Répéter cette dernière étape en incrémentant toujours la rangée de 1
Et à la fin penser de remettre "reprise" dans la première colonne
Pour la suite il est probablement possible d'insérer les valeurs automatiquement dans le nouveau logiciel mais ce n'est pas le sujet du post
Si tu as besoin de plus d'info ou si certains points sont flou , je reste à l'affu pour te répondre
pour transférer toute les données des cases excel dans un tableau Autoit._ExcelReadSheetToArray()
Ensuite tu n'as qu'à faire une boucle (la plus approprié dans ce cas est la Do...Until) pour retrouver ta valeur "reprise" dans la première colonne
► Afficher le texte
Une fois trouvé il faudra Retirer la valeur "reprise"
Récupérer les valeur noms etc, des autres colonnes et les mettre dans tes variables (Et éventuellement pauser pour effectuer les actions voulu)
Répéter cette dernière étape en incrémentant toujours la rangée de 1
Et à la fin penser de remettre "reprise" dans la première colonne
Pour la suite il est probablement possible d'insérer les valeurs automatiquement dans le nouveau logiciel mais ce n'est pas le sujet du post
Si tu as besoin de plus d'info ou si certains points sont flou , je reste à l'affu pour te répondre
Compte skype : bloodwolfff
Re: [..] Traitement d'une feuille excel
meerci beaucoup
je m'attelle à mettre tout ça en oeuvre
je tiens au courant
je m'attelle à mettre tout ça en oeuvre
je tiens au courant
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Traitement d'une feuille excel
Perso je préfère la boucle For ^^bloodwolff a écrit :la plus approprié dans ce cas est la Do...Until
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Traitement d'une feuille excel
Oui j'ai enregistré ton script merci
j'avais résolu le probleme avce la fonction _ArraySearch dasn la colonne 0
maintenat j'ai un nouveau probleme : l'app excel est en cours mais entre temps j'ai ouvert d'autres fenetres, et je voudrais la (la fentre excel) mettre en premier plan
j'ai essayé
WinSetOnTop("Microsoft Excel - Database")
WinSetState ("Microsoft Excel - Database", "", @SW_MAXIMIZE )
mais j'ai une erreur ..
j'avais résolu le probleme avce la fonction _ArraySearch dasn la colonne 0
maintenat j'ai un nouveau probleme : l'app excel est en cours mais entre temps j'ai ouvert d'autres fenetres, et je voudrais la (la fentre excel) mettre en premier plan
j'ai essayé
WinSetOnTop("Microsoft Excel - Database")
WinSetState ("Microsoft Excel - Database", "", @SW_MAXIMIZE )
mais j'ai une erreur ..
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Traitement d'une feuille excel
WinSetOnTop("Microsoft Excel - Database", "", 1)
ou alors WinActivate...
ou alors WinActivate...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [..] Traitement d'une feuille excel
J'ai parlé de la plus approprié pas de préférences personnels, même si les 3 sortes de boucles peuvent être utilisé facilement la boucle For reste la plus approprié quand on doit obligatoirement parcourir toute la boucle comme par exemple pour trouver le plus grande valeur dans un tableau car nous n'avons pas le choix de regarder l'ensemble du tableau. Si on ne dois pas regarder toute les possibilité comme dans notre cas ou nous n'avons besoin de regarder que jusqu'à la valeur recherché les boucles Do/While sont suggérable où la différence se situe sur la question "Avons nous besoin de faire la boucle au moins 1 fois ?" Dans ce cas la réponse est oui donc je reste à penser que la boucle Do...Until est la plus approprié. Même si un simple If...exitloop fait la même chose il n'est pas utile en Do...untilmikell a écrit :Perso je préfère la boucle For ^^bloodwolff a écrit :la plus approprié dans ce cas est la Do...Untilmes excuses pour l'interférence► Afficher le texte
Et personnellement je suis contre le fait de donner un code tout fait dans la parti général mais je ferai un autre poste pour ne pas pollué celui-ci car c'est monnaie courante sur ce forum quand je donne mon opinion
Compte skype : bloodwolfff
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Traitement d'une feuille excel
Tu as bien raison sur les 2 points 
Pour la boucle, c'est bien pour ça que je n'ai parlé que de préférence personnelle, je n'ai pas dit qu'une boucle For était plus appropriée...
Et pour le code, bah tu sais ce que c'est... on veut écrire une explication, on veut écrire un exemple pour illustrer, on teste tout ça et à la fin hop on balance tout parce que le script est fait, que c'est plus simple et que ça économise d'éventuelles futures réponses
Pour la boucle, c'est bien pour ça que je n'ai parlé que de préférence personnelle, je n'ai pas dit qu'une boucle For était plus appropriée...
Et pour le code, bah tu sais ce que c'est... on veut écrire une explication, on veut écrire un exemple pour illustrer, on teste tout ça et à la fin hop on balance tout parce que le script est fait, que c'est plus simple et que ça économise d'éventuelles futures réponses
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Traitement d'une feuille excel
merci à vous bloodwolff et mikell
tout est terminé et à tres bien fonctionner
je suis épaté de la puissance d'autoit compte tenu de sa "simplicité" d'utilisation
tout est terminé et à tres bien fonctionner
je suis épaté de la puissance d'autoit compte tenu de sa "simplicité" d'utilisation

