You are currently viewing Comment renommer automatiquement les feuilles d’un classeur ?

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 Outils, puis choisissez l’option Éditeur de Scripts.

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

Si vous avez trouvé une faute d’orthographe, vous pouvez m’en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée .

Laisser un commentaire