Googe app script Récupérer l'adresse d'une celulle
Bonjour,
Je recherche une valeur sur une ligne d'un tableau, une fois trouvée, je souhaite récupérer le numéro de la colonne de la cellule trouvée.
Auriez vous une idée?
Cordialement,
pascal
Bonjour et bienvenue,
si tu cherches A en ligne 13 par exemple
=MATCH("A",13:13,0)
ou
=EQUIV("A",13:13,0)
te donnera le n° de la colonne où la valeur A est trouvée.
Bonjour,
Merci pour la réponse, mais je ne vois pas comment l'intégrer dans mon code.
Voilà ce que j'ai commencé à faire. Une fois la colonne repérée, cela me permettra de faire une boucle sur les lignes pour chercher dans cette colonne certaines valeurs.
function detecterActivite()
{
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Animateur AS'), true);
var feuille = SpreadsheetApp.getActiveSheet();
var Activite = feuille.getRange(6,2).getValues(); // Charge la valeur à chercher
Browser.msgBox (Activite); // affiche la variable
for(var Col=10;Col<=40;Col++) // cherche dans la colonne 10 à 40
{
var rechercheActivite = feuille.getRange(1,col).getValues(); // Plage de recherche
if(rechercheActivite == Activite)
{
// ICI
// Recherche du numéro de la colonne où se trouve l'Activité sur la ligne 1
// var NumeroCol = // Numéro de la colonne où se trouve la cellule trouvée
// Browser.msgBox (NumeroCol);
// FIN ICI
// TEST
// const adresse = cellule.getA1Notation(); //test
// Browser.msgBox(adresse); //test
// FIN TEST
}
}
Merci beaucoup pour votre aide.
Pascal
Ce que j'ai fait est une fonction, et en effet ce n'est pas un script.
Peux-tu mettre un lien vers une copie de ton projet, ce serait plus facile pour moi de faire cette seconde version, ou inspire toi de quelque chose comme ceci
var values = feuille.getRange('1:1').getValues().join().split(",");
var colonne = values.indexOf("ce que je cherche") + 1; // +1 car indexOf commence à 0 et les colonnes à 1
pas testé ...
Merci pour votre aide.
Si dessous le lien:https://docs.google.com/spreadsheets/d/1LyMBBMA49BV3YIOFJ58u2yHfj28dOVz5ZOVuQhpVFc4/edit?usp=sharing
J'avais fait ce type de fichier en VBA, je souhaitais le réaliser en GAS.
Cordialement
Pascal
C'est curieux, je suis en lecture, je ne peux même pas faire une copie du projet et accéder au script !
Bonjour,
Il faut peut-être indiquer dans votre code, sur quelle feuille s'effectue la recherche, la feuille de l'activité est bien indiquée mais pas celle de la recherche
je pense que c'est sur la feuille BDD ???
Bonjour Gilbert,
maintenant que j'ai la main sur le fichier ... outre la remarque de Gilbert, 2 choses
- le script est sensible à la casse, donc ne pas écrire tantôt col et Col
- si tu ne prends qu'une valeur à la fois, alors getValue() ne prend pas de s final
tu peux donc écrire en intégrant la remarque de Gilbert
function detecterActivite()
{
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Animateur AS'), true);
var feuille = SpreadsheetApp.getActiveSheet();
var bdd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('BDD')
var Activite = feuille.getRange(6,2).getValues(); // Charge la valeur à chercher
Browser.msgBox (Activite); // affiche la variable
for(var col=10;col<=40;col++) // cherche de la colonne 10 à 40
{
var rechercheActivite = bdd.getRange(1,col).getValue(); // Plage de recherche
if(rechercheActivite == Activite)
{
Browser.msgBox (col)
}
}
}
Merci pour votre aide!
Je vais reprendre mon code, je vous tiens au courant de mes avancés.
Bonne soirée.
Pascal
Bonsoir,
Me revoilà, je suis désolé de mon mutisme mais je faisais un break.
Vous trouverez ci dessous mon code. Il y a surement moyen de le simplifier. Il me reste à faire le test de savoir si la feuille qui se crée existe déjà. (si la feuille existe j'efface) je n'y arrive pas.
Bonne soirée
Pascal
///////////////////////////////////////////////////////////////////////
/**********************************************************************
* Macro Recherche l'activité choisie
*/
function Activite()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var feuille0 = ss.getSheetByName("Accueil");
var data_range0 = feuille0.getDataRange();
var feuille = ss.getSheetByName("BDD");
var data_range = feuille.getDataRange();
var recherche = data_range0.getCell(4,2).getValue();
for(var col=10;col<=59;col++)
{
var celrecherche = data_range.getCell(2,col).getValue();
if(recherche == celrecherche)
{
//****************************************************************** */
//************ Fabrication de l'onglet **************************** */
var nomonglet = recherche;
SpreadsheetApp.getActiveSpreadsheet().insertSheet(nomonglet);
var feuille2 = ss.getSheetByName(nomonglet);
var data_range2 = feuille2.getDataRange();
//************ Fin Fabrication de l'onglet ************************ */
//****************************************************************** */
//****************************************************************** */
//************ repport des infos sur la nouvelle feuille *********** */
var ligneact = 2 ;
var dernier_rang = data_range.getLastRow(); // cherche la derniere ligne du tableau
for(var ligne=3;ligne <= dernier_rang;ligne++)
{
var rechercheact = data_range.getCell(ligne,col).getValue();
// Browser.msgBox (rechercheact);
if(rechercheact == 1)
{
var nom = data_range.getCell(ligne,3).getValue();
var prenom = data_range.getCell(ligne,4).getValue();
var tel = data_range.getCell(ligne,5).getValue();
var etab = data_range.getCell(ligne,6).getValue();
var ville = data_range.getCell(ligne,3).getValue();
var ligneact = ligneact + 1;
feuille2.getRange(1, 1).setValue("Activité:");
feuille2.getRange(1, 2).setValue(recherche);
feuille2.getRange(2, 1).setValue("Nom");
feuille2.getRange(2, 2).setValue("prenom");
feuille2.getRange(2, 3).setValue("tel");
feuille2.getRange(2, 4).setValue("etab");
feuille2.getRange(2, 5).setValue("ville");
feuille2.getRange(ligneact, 1).setValue(nom);
feuille2.getRange(ligneact, 2).setValue(prenom);
feuille2.getRange(ligneact, 3).setValue(tel);
feuille2.getRange(ligneact, 4).setValue(etab);
feuille2.getRange(ligneact, 5).setValue(ville);
}
}
}
}
}
/**********************************************************************
* FIN Macro Recherche l'activité choisie
*/
///////////////////////////////////////////////////////////////////////
Bonjour
Il me reste à faire le test de savoir si la feuille qui se crée existe déjà. (si la feuille existe j'efface) je n'y arrive pas.
essaie ceci, si la feuille existe déjà elle ne se re-crée pas
var nomonglet = recherche;
var feuille2 = ss.getSheetByName(nomonglet);
if (!feuille2){
ss.insertSheet(nomonglet);
var feuille2 = ss.getSheetByName(nomonglet);
}