Comment Renommer Onglet

Comment renommer automatiquement les feuilles d’un classeur ?

Cette question m’a été posée par un visiteur dans les commentaires de l’article : Comment renommer automatiquement une feuille de calcul Google Sheets ?

J’aimerais faire presque la même chose…. mais pas en modifiant le nom du classeur mais bien des feuilles… Il s’agit de faire un classeur avec les notes des élèves et un résumé par élève et par feuille ensuite. Et plutôt que de changer les noms des feuilles à la main, j’aimerais récupérer le nom d’une cellule de la feuille… D’avance merci.

Objectif

L’objectif de mon visiteur est donc de renommer automatiquement l’onglet de chaque feuille en fonction du contenu d’une cellule de la feuille en question. Ce nommage automatique doit pouvoir intervenir à chaque nouvelle feuille créée dans le classeur. 

Pour réaliser cette tâche, nous allons devoir écrire un petit script. Voyons ensemble comment faire ça.

Le fichier de travail 

Dans le fichier de travail, nous allons partir du principe que le nom de l’élève se situe toujours en A2 comme dans l’exemple ci-dessous.

Nous avons besoin de cette information pour le script qui doit savoir quelle cellule contient le nom que nous souhaitons utiliser. 

Créer le script

Pour créer votre script, rendez-vous dans le menu Extensions, puis choisissez l’option Apps Script.

kitcreanet-extension-apps-script

Dans l’onglet Code.gs, effacez tout ce qui s’y trouve.

et copiez-collez le code ci-dessous :

function onEdit()
{
var feuilleEleve = SpreadsheetApp.getActiveSheet();
var nouveauNom = feuilleEleve.getRange(2,1).getValue();
feuilleEleve.setName(nouveauNom);
}

On explique le script

function onEdit() 

Ce code démarre avec la fonction OnEdit(), qui est un déclencheur (un trigger).

Les déclencheurs permettent à Apps Script d’exécuter une fonction automatiquement lorsqu’un certain événement se produit. Dans ce script nous avons besoin que l’action se produise à chaque modification de la feuille. onEdit() s’exécute lorsqu’un utilisateur modifie une valeur dans une feuille de calcul. C’est pil poil ce qu’il nous faut.

var feuilleEleve = SpreadsheetApp.getActiveSheet();

Cette seconde ligne place dans la variable feuilleEleve la feuille active. En effet, c’est sur la feuille active, celle sur laquelle on travaille que nous souhaitons que les modifications s’opèrent.

var nouveauNom = feuilleEleve.getRange(2,1).getValue();

Ensuite, il nous faut connaître le nouveau nom pour renommer la feuille. Ce nom se trouve dans la cellule A2 de la feuille active. On place donc le contenu de la cellule A2 dans une variable nommée nouveauNom.

feuilleEleve.setName(nouveauNom);

Troisième ligne de code, on utilise le contenu de la variable nouveauNom pour renommer la feuille active (feuilleEleve).

Et voilà. À chaque modification de la cellule A2 de la feuille active, le nom de la feuille changera automatiquement.

Ce script fait le travail, mais on peut l’améliorer un peu.

Créer le script V2

Remplacez votre code par celui-ci :

function onEdit() {
  var feuilleEleve = SpreadsheetApp.getActiveSheet();
  var ancienNom = feuilleEleve.getName();
  var nouveauNom = feuilleEleve.getRange(2,1).getValue();
  if (nouveauNom.toString().length>0 && nouveauNom !== ancienNom) {
    feuilleEleve.setName(nouveauNom);
  }
}

On explique le script V2 

function onEdit() {
  var feuilleEleve = SpreadsheetApp.getActiveSheet();

Les deux premières lignes ne changent pas.

var ancienNom = feuilleEleve.getName();

La troisième ligne récupère le nom actuel de la feuille active et place ce nom dans une variable nommée ancienNom.

var nouveauNom = feuilleEleve.getRange(2,1).getValue();

La quatrième ligne récupère le nouveau nom de la feuille en A2 et place ce nom dans une variable nommée nouveauNom.

if (nouveauNom.toString().length>0 && nouveauNom !== ancienNom) 

Cette ligne va effectuer une double vérification :

  • est-ce que le nouveau nom a une longueur supérieure à 0 ?
  • est-ce que le nouveau nom est différent de l’ancien ?

Si les deux conditions sont respectées, la ligne suivante est exécutée.

feuilleEleve.setName(nouveauNom);

La feuille active est renommée avec le contenu de la variable nouveauNom (c’est-à-dire le contenu de la cellule A2).

Voilà, vous savez maintenant renommer automatiquement une feuille de votre classeur Google Sheets avec OnEdit().

Infos complémentaires :

Retrouvez l’aide de Google sur les déclencheurs simples à cette adresse : https://developers.google.com/apps-script/guides/triggers

4 commentaires

  1. Bonjour,
    J’ai créé un formulaire avec Google Forms, qui me renvoie pour la restitution des réponses vers un classeur Google Sheets avec une seule feuille dont l’onglet est nommé « réponses au formulaire ».
    J’aurais besoin d’ajouter une cinquantaine de feuilles supplémentaires dans ce classeur, dont les onglets seraient nommés automatiquement comme dans votre exemple.
    Or, je ne trouve pas « éditeur de scripts » dans le menu outils (seulement : créer un formulaire / Gérer le formulaire / orthographe / saisie semi-automatique / paramètres de notification / accessibilité).
    Comment faire ?…
    Merci beaucoup pour vos explications très pédagogiques.

  2. Bonjour, Pardon du délai, mais j’étais en déplacement et je n’ai pas vu votre commentaire de suite. Merci pour votre commentaire, ravi d’avoir pu aider. Nos amis de chez Google font des mises à jour fréquentes et ne communiquent pas forcément sur ces mises à jour. Les menus ont changé de nom. Vous pourrez arriver à l’éditeur de scripts en passant par le menu EXTENSION / Apps Script.

  3. Bonjour,
    J’ai appliquer votre formule pour renommer les feuilles a partir d’une cellule. Cependant c’est une date. Comment mettre au format jj-mm-aaaa?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *