Lire valeur cellule Excel

Vous voulez de l'aide ? Postez ici :)
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Lire valeur cellule Excel

Post by Patrick74 »

Bonjour,

Je découvre Actiona à l'instant. Le programme semble vraiment top et complet. Merci et Bravo JMGR !

1er problème pour une operation toute simple. Je n'arrive pas à stocker le contenu d'une cellule Excel dans une variable.

J'ai essayé l'action "Ecrire Presse-papier" mais rien :| La variable reste vide.

Pouvez-vous m'aiguiller sur l'action à utiliser ?

Merci d'avance
Patrick
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Bonjour,

Si on veut récupérer les données contenues dans un classeur excel, le plus simple est d'enregistrer ce classeur en fichier csv
puis sous actiona de lire ce fichier csv ( via action Lire fichier texte ou en code)

Sinon il est possible via une action code de récupérer une cellule :
Les paramètres en entrée :
num_ligne et num_colonne
en sortie, récupération dans la variable cellule_a_recuperer.

Action code :

Code: Select all

//===== 
num_ligne=8
num_colonne=4
//===== 

//=====
var souris=new Mouse();
var clavier= new Keyboard();
var presse_papier=new Clipboard();
fin_ligne =String.fromCharCode(10);
dlm_XLS =String.fromCharCode('09');
//=====


//=====
Execution.pause(200)
var pt_cliquer = new Point(500, 500);
souris.move(pt_cliquer);
souris.click();
//=====

//==== 
//=> Cntl A
//====
Execution.pause(200)
clavier.pressKey("controlLeft");
Execution.pause(200)
clavier.triggerKey("A");
Execution.pause(200)
clavier.releaseKey("controlLeft");
//=====

//=====
//=> Cntl C
//=====
Execution.pause(200);
clavier.pressKey("controlLeft");
clavier.triggerKey("C");
clavier.releaseKey("controlLeft")
//=====


//=====
//=> Recupérer copier/coller
//=====
Execution.pause(400);
presse_pap =presse_papier.text;

t_ligne_1 =presse_pap.split(fin_ligne);
t_ligne_2= t_ligne_1[num_ligne-1].split(dlm_XLS); 
cellule_a_recuperer = t_ligne_2[num_colonne-1];
//=========================

Console.print(cellule_a_recuperer);
Cordialement.

Je reste un fan du logiciel que JMGR a conçu et réalisé.
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Bonjour Francois,

Entre-temps j'ai aussi trouvé l'approche en faisant Ctrl+C pour copier la cellule. Ca fonctionne.

Je crois que la fonction "lire un fichier" CSV serait intéressant car le but étant de copier-coller toute une colonne Excel dans un autre tableau d'un programme spécifique et vice-versa (du prg à Excel).

Où puis-je trouver des infos supplémentaires pour utiliser "Lire un fichier"? Et je ne sais pas comment stocker ces valeurs dans les variables quand il y en a plusieurs :(
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Bonjour,

Sur ce forum, il y a eu quelques questions autour des "csv" donc via "rechercher", il y a possibilité d'avoir quelque infos.

Sinon pour la lecture de fichiers, il y a le wiki d'actiona

Coté action :
https://wiki.actiona.tools/doku.php?id= ... adtextfile

Coté code :
https://wiki.actiona.tools/doku.php?id= ... data:file

Francois
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Re bonjour François,

je crois que je n'y arriverai pas :(
Je ne connais pas le nombre de ligne de mon tableau et la colonne à copier n'est pas toujour la même.

Comment créer le nombre de variable correspondant à mon nombre de ligne et donc de valeur?
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Bonjour,

Si tu as besoin de manipuler l'ensemble des cellules d'une colonne, il faut passer
par un tableau de variable.
C'est plus du Javascript que de l'Actiona.
Si tu ne connais pas, un site d'initiation : https://openclassrooms.com/courses/tout ... ableaux-11

Cordialement.
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Super :!:
C'est exactement ce que je cherchais. J'avance à petit pas ,,, mais j'avance :D
Merci :wink:

Pour l'instant, je copie une cellule Excel après l'autre et je teste la valeur si non-vide avant de la stocker dans mon tableau (array) avec un compteur. Ca fonctionne !

[Edit]: J'aimerai que cela soit plus rapide et lire toute la colonne entière. J'arrive bien la récupérer, sauf que j'aimerai la stocker dans un tableau (array) et je n'y arrive pas. :x

Pour rappel: Je dois reprendre les données d'une colonne d'un fichier Excel (ou CSV), mais le nombre de colonne et de lignes varient d'un fichier à un autre.
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

bonjour

Je suis parti de :
Je dois reprendre les données d'une colonne d'un fichier Excel (ou CSV), mais le nombre de colonne et de lignes varient d'un fichier à un autre.
Paramètre en entrée, le fichier csv, en sortie, le tableau t_last_col.

Code: Select all

//=========
rep_fichier_in= "C:/temp"
nom_fichier_in= "test.csv"

fin_ligne =String.fromCharCode(10);
//=========

//=========
// charger ligne CSV en tableau
//=========
var fich_in = new File();
fich_in_chemin_complet= rep_fichier_in + "/" + nom_fichier_in
fich_in.open(fich_in_chemin_complet,File.ReadOnly| File.Text);
au_km = fich_in.readText();
fich_in.close();

t_ligne =au_km.split(fin_ligne);
nb_lignes= t_ligne.length
//=========


//=========
// Charger la derniere colonne
//=========
var  t_last_col = [];
t_last_col.length = t_ligne.length;

for (i=0;i<t_ligne.length;i=i+1){
   t_ligne2 =t_ligne[i].split(";");
   t_last_col[i]=t_ligne2[t_ligne2.length-1];
}; // fin boucle i 

//=========
// afficher cette derniere col
//=========
Console.print( t_last_col)
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Bonjour Francois,

Je te remercie pour ton aide. Mon problème est comment reprendre (paramètre de sortie) chacune de ces valeurs dans une variable de type tableau array. Car ensuite je dois les entrer une à une dans un tableau d'un programme spécifique.

J'y arrive en récupérant 1 cellule à la fois et en la stockant dans mon array var[1], var[2], etc.. , mais ce n'est pas assez rapide. J'aimerai récupérer la colonne entière en une seule fois et la traiter ensuite sous Actionaz dans un tableau de type array.

C'est cette dernière partie que je sais pas faire... :(

Je sais pas si je m'exprime bien .... désolé :oops:
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

rebonjour
J'aimerai récupérer la colonne entière en une seule fois et la traiter ensuite sous Actionaz dans un tableau de type array.
t_last_col est bien un tableau (array)
Ainsi
t_last_col[0] contient la valeur de la derniere colonne pour la première ligne
t_last_col[k] contient la valeur de la derniere colonne pour la k+1 ligne

En javascript (comme dans beaucoup de langages) les tableaux commencent à 0 et pas à 1.
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Ha oui mince effectivement ça focntionne :oops:

Mais n'est-ce pas adaptable en lisant une colonne entière Excel? Car cela va être trop compliquer de chaque fois exporter en format CSV. J'ai plein de colonnes et de feuilles excel à traiter.

Je me dit que si on arrive à stocker la colonne entière dans une seule variable, on doit pouvoir décortiquer chaque ligne dans un tableau array? Non?
Il me manque juste ça pour continuer Grrr...

[EDIT]: Si je copie la colonne Excel dans un fichier.csv et que j'utilise ta méthode, j'arrive bien à reprendre chacunes des valeurs. Néanmoins cela m'embête de passer par un fichier tempon et donc un accès disque (que je ne veux pas). Grrr...
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Bonsoir,


Recupérer la dernière colonne ( qui n est donc pas toujours la même) sans passer par un fichier csv :

Via Actiona :
On fait un copier/coller de toute la feuille XLS.
puis on récupère le résultat global dans une variable.
puis on va isoler la dernière colonne.

En final cette dernière colonne est dans le tableau t_last_col.

Code: Select all

//=====
var souris=new Mouse();
var clavier= new Keyboard();
var presse_papier=new Clipboard();
fin_ligne =String.fromCharCode(10);
dlm_XLS =String.fromCharCode('09');
//=====


//=====
Execution.pause(500)
var pt_cliquer = new Point(500, 500);
souris.move(pt_cliquer);
souris.click();
//=====

//==== 
//=> Cntl A
//====
Execution.pause(200)
clavier.pressKey("controlLeft");
Execution.pause(200)
clavier.triggerKey("A");
Execution.pause(200)
clavier.releaseKey("controlLeft");
//=====

//=====
//=> Cntl C
//=====
Execution.pause(200);
clavier.pressKey("controlLeft");
clavier.triggerKey("C");
clavier.releaseKey("controlLeft")
//=====


//=====
//=> Recupérer copier/coller
//=====
Execution.pause(400);
presse_pap =presse_papier.text;
//=========================



//=====
//=> Recupérer les N 1eres lignes avec au moins une cellule remplie
//=====
t_ligne_1 =presse_pap.split(fin_ligne);
nb_lignes_utiles=0;

for (i=0;i< t_ligne_1.length;i++){
    re_1 = /"09"/gi;
    t_ligne_1[i]  = t_ligne_1[i].replace(re_1, "");
   if ( t_ligne_1[i] == "") {nb_lignes_utiles=i-1;break;}
  // Console.print( t_ligne_1[i]);
}; // fin for i

if ( nb_lignes_utiles==0) {nb_lignes_utiles=i;}
//=========================
//  Console.print(nb_lignes_utiles);

//=========
// Charger la derniere colonne
//=========
var  t_last_col = [];
t_last_col.length = nb_lignes_utiles;

for (i=0;i<=nb_lignes_utiles;i=i+1){
   t_ligne_2 =t_ligne_1[i].split(dlm_XLS);
   t_last_col[i]=t_ligne_2[t_ligne_2.length-1];
}; // fin boucle i 

//=========
// afficher cette derniere col
//=========
Console.print( t_last_col)
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Super Merci François !!!
Je vais tester cela.

[edit]: J'ai aussi voulu tester l'écriture d'un tableau dans un fichier avec l'action Actionaz : "Ecriture fichier texte"

Texte:

Code: Select all

for (var d=0; d<i; d++)
table[d];
pourquoi je n'ai que la dernierère valeur qui s'écrit dans le fichier?
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Problème de syntaxe :
Avec for il faut () puis {}

Un bon résumé trouvé sur internet :
for (initialization; test condition; iteration statement){
Statement(s) to be executed if test condition is true
}
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Me revoilà :D

Non cela n'a pas non plus fonctionné :(
Mais grace au forum j'ai trouvé la solution en Javascript pour ouvrir et écrire mes valeurs dans un fichier. :D

Pour un autre exercice, je copie une cellule excel pour la comparer à un valeur reprise d'un autre programme.
Sauf que quand je compare les valeurs, celle de Excel contient un "retour à ligne" et bien sûr pas ma valeur à comparer.

:?: Comment puis-je modifier/corriger cela?
Post Reply