Récupérer le nom d'un onglet

Sous excel pour récupérer les 2 dernières lettres du nom d'un onglet, j'utilise la formule suivante:

=DROITE(STXT(CELLULE("nomfichier";B1);TROUVE("]";CELLULE("nomfichier";B1);1)+1;30);2)

sous sheet, la formule ne fonctionne pas.

Erreur

La valeur de Le paramètre 1 de la fonction CELL est filename. Les valeurs possibles sont : 'ADDRESS', 'COL', 'COLOR', 'CONTENTS', 'PREFIX', 'ROW', 'TYPE', 'WIDTH'.

Quelle serait la formule?

Bonjour,

En effet, CELL("FILENAME",____) n'existe pas, google n'a pas trouvé bon de le créer. Il existe une "demi-solution" ... on va voir sur l'exemple :

https://docs.google.com/spreadsheets/d/1E3lhxR8gkjIs50j1BUwICWxYjHARYuZWhWzFqt-h5oo/edit?usp=sharing

J'ai créé un onglet sommaire avec

=cell("address";TEST!A1)

Le résultat est TEST!$A$1 que je reprends dans la feuille TEST avec

=left(sommaire!A3;search("!";sommaire!A3)-1)

Jusque là, tout va bien ! En passant par un onglet sommaire, j'ai le résultat !

Mais si je change le nom de l'onglet ... ce n'est pas répercuté, car le changement de nom d'un onglet n'est pas un inducteur de re-calcul. Il faut donc inclure dans la fonction quelque chose qui va forcer ce re-calcul. Le mieux est d'utiliser le jour, en le comparant à 0 ou à lui-même :

=IF(TODAY()=TODAY();cell("address";TEST!A1);cell("address";TEST!A1))

Tordu, mais cela fonctionne ... sauf qu'il faut attendre le lendemain pour que ce soit effectif !

Donc pas de solution miracle sauf un script à relancer en tant que de besoin

function nomFeuille() {
  var feuille = SpreadsheetApp.getActiveSheet();
  feuille.getRange('A1').setValue(feuille.getName())
};

Bref, même si je l'ai utilisé dans excel pour faire une synthèse d'informations venant d'autres onglets et en utilisant INDIRECT, on peut parfois remplacer par la mise en place d'une base de données plutôt que multiplier les onglets. Je ne sais pas quel est réellement ton besoin et si on peut le contourner.

Si Google avait prévu cette fonction CELL("FILENAME",____), alors il aurait dû aussi faire e sorte que le changement du nom d'onglet induise un recalcul. Cela va de pair.

ah wai sacré recherche.

En effet ta solution de contournement ne peut pas fonctionner chez moi.

En fait j'ai une base qui se nomme SXX. Chaque semaine, je reprend cette base pour créer un nouveau fichier et je change XX par le n° de semaine. Le fait de changer le nom de l'onglet modifie automatiquement mes dates dans mon fichier.

C'est pour cela que je ne peux pas attendre le lendemain.

Ce serait moi qui utiliserait ce fichier, je mettrai ton script. Mais il est utilisé par mes collaborateurs qui ne sont pas expert en tableur. Ajouter une macro même avec un bouton, j'ai peur qu'ils ne mettent pas à jour.

Je vais regarder déjà avec tes formules et au pire je leur mettrai une cellule dans le tableur à mettre à jour chaque semaine manuellement en plus du nom de l'onglet.

En fait j'ai une base qui se nomme SXX. Chaque semaine, je reprend cette base pour créer un nouveau fichier et je change XX par le n° de semaine. Le fait de changer le nom de l'onglet modifie automatiquement mes dates dans mon fichier.

C'est pour cela que je ne peux pas attendre le lendemain.

il faudrait préparer le fichier le vendredi !

ou bien, au lieu de

je change XX par le n° de semaine

faire un script qui change le nom de l'onglet et sa retranscription dans une cellule !

Exemple mis dans le fichier, voir dans le menu en haut (je n'ai pas vérifié s'il s'agit bien de la semaine ISO)

***Nouvelle Semaine***
function onInstall(e) {
  onOpen(e); 
}
function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('***Nouvelle Semaine***')
  .addItem('Lancer le script !', 'numSem')
  .addToUi();
}
function numSem() {
  var sxx = Utilities.formatDate(new Date(), "GMT", "'S'ww");
  var feuille = SpreadsheetApp.getActiveSheet();
  feuille.setName(sxx)
  feuille.getRange('A1').setValue(sxx)
}
image

je mets ca en place et reviens vers toi en cas de problème

Rechercher des sujets similaires à "recuperer nom onglet"