Lire valeur cellule Excel

Vous voulez de l'aide ? Postez ici :)
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Bonjour,

Pour répondre à la question initiale, j'ai écrit un script qui permet de récupérer l'ensemble des cellules d'une feuille excel.

En final, variables utilisables :
- nb_lignes_utiles : le nombre de lignes remplies
- colonne_max : le nombre de colonnes remplies ( eventuellement pas pour toutes les lignes)
- t1_cell[][] , un tableau à 2 dimensions :

si on veut le contenu de la cellule située à la 6eme ligne, 17eme colonne : t1_cell[6][17]

IL faut une action fenêtre pour mettre au premier plan le classeur excel
puis une action code qui fait le traitement :

az.jpg
az.jpg (12.64 KiB) Viewed 1243 times


L'action code :

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');
//=====

//=====
// préparer le copier coller en se positionnant dans la feuille
//=====
Execution.pause(500)
var pt_cliquer = new Point(500, 500);
souris.move(pt_cliquer);
souris.click();
//=====

//=====
// Faire le copier coller via un cntl A cntl C
//=====
Execution.pause(200)
clavier.pressKey("controlLeft");
Execution.pause(200)
clavier.triggerKey("A");
Execution.pause(200)
clavier.releaseKey("controlLeft");
Execution.pause(200);

clavier.pressKey("controlLeft");
clavier.triggerKey("C");
clavier.releaseKey("controlLeft")
//=====


//=====
//=> Recupérer le  copier/coller dans une variable
//=====
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;break;}
   // Console.print( t_ligne_1[i]);
}; // fin for i

if ( nb_lignes_utiles==0) {nb_lignes_utiles=i;}
//=========================

//=========
// Chercher la derniere colonne remplie (inter lignes)
//=========
colonne_max=0;
for (i=0;i<=nb_lignes_utiles;i=i+1){
   t_ligne_2 =t_ligne_1[i].split(dlm_XLS);
    if ( t_ligne_2.length > colonne_max ) {colonne_max=t_ligne_2.length;}
}; // fin boucle i 
//=========


//=========
// Remplir le tableau t_cell[][]
// Ce tableau commence à l indice 0
//=========
var t_cell = new Array(nb_lignes_utiles);
for (i=0;i< nb_lignes_utiles;i++){
     zz =t_ligne_1[i].split(dlm_XLS); 
     
     nb_cols = zz.length; // nombre de colonnes effectivement remplies dans cette ligne
  
     t_cell[i] = new Array(colonne_max);   
     t_cell[i]      = zz;   
     for (j=0;j< colonne_max;j++){          
           t_cell[i][j] =zz[j]; 
     } // fin boucle j    
}; // fin boucle i 
//=========

//=========
// Remplir le tableau t1_cell[][]
// Ce tableau commence à l indice 1
//=========
var t1_cell = new Array(nb_lignes_utiles+1);
for (i=1;i<= nb_lignes_utiles;i++){
      t1_cell[i] = t_cell[i-1];
      t1_cell[i] = new Array(colonne_max+1);  
     for (j=1;j<= colonne_max;j++){          
           t1_cell[i][j] = t_cell[i-1][j-1];
          //Console.print(t1_cell[i][j])
     } // fin boucle j   
}; // fin boucle i 
//=========


//==========
// Quelques exemples 
//==========
Console.print("nombre lignes remplies :  " + nb_lignes_utiles)
Console.print("nombre colonnes remplies :  " + colonne_max)
Console.print("Valeurs de la cellule 3,5 : " +  t1_cell[3][5] )
Patrick74
Posts: 12
Joined: 09 Oct 2017, 09:58

Re: Lire valeur cellule Excel

Post by Patrick74 »

Super !!!
Ca marche super bien.

Je l'ai adapté pour reprendre qu'une seule colonne.
Par contre pour les tests j'essaies d'afficher la dernière ligne avec Console.print("La dernière ligne contient: " + t_ligne_1[ i ]);

Code: Select all

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


//=====
// Faire le copier coller via  cntl C
//=====
Execution.pause(200);
clavier.pressKey("controlLeft");
clavier.triggerKey("C");
clavier.releaseKey("controlLeft")
//=====


//=====
//=> Recupérer le  copier/coller dans une variable
//=====
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;break;}
   // Console.print( t_ligne_1[i]);
}; // fin for i

if ( nb_lignes_utiles==0) {nb_lignes_utiles=i;}
//=========================

//==========
// Quelques exemples 
//==========
Console.print("nombre lignes remplies :  " + i);
Console.print("La dernière valeur est: " + t_ligne_1[i]);
et ça ne fonctionne pas?!
Pourquoi? Problème de syntaxe?
francois
Posts: 456
Joined: 18 Oct 2010, 10:33
Location: France

Re: Lire valeur cellule Excel

Post by francois »

Bonjour,

A la place de "i" il faut "nb_lignes_utiles"

Pour voir comment çà se passe, mettre en fin de script :

Code: Select all

Console.print("num derniere ligne : " +  nb_lignes_utiles )
Console.print("Valeurs de la derniere ligne : " +  t1_cell[ nb_lignes_utiles] )
Console.print("valeur de i : " + i )
François
Post Reply