You are currently viewing Renommer automatiquement un classeur Google Sheets à chaque modification

Renommer automatiquement un classeur Google Sheets à chaque modification

  • Post category:Apps Script / Google Sheets
  • Commentaires de la publication :0 commentaire
  • Temps de lecture :9 min de lecture
  • Dernière modification de la publication :12 mars 2021

Introduction

Il y a peu, j’ai dû suivre un grand nombre de petits micro-projets, chaque micro projet est suivi dans un classeur Google Sheets contenant une liste de tâches à réaliser dans un onglet nommé Todo.

Au fur et à mesure que les tâches sont effectuées, le pourcentage de réalisation est calculé et affiché dans la feuille Todo. Mais pour voir ce pourcentage, j’étais contraint d’ouvrir chaque classeur, ce qui pouvait s’avérer rapidement pénible.

Pour ne pas ouvrir tous mes classeurs un par un pour connaître l’avancement de chaque micro-projet, ce qui serait bien c’est que le classeur se renomme tout seul en affichant le pourcentage de réalisation.

C’est ce que nous allons faire ici.

Objectif

Je souhaite que mon classeur soit renommé automatiquement à chaque modification de la façon suivante :

[ pourcentage effectué ] – Nom de la Todo.

Calculer le pourcentage de tâches effectuées

Voyons rapidement comment calculer le pourcentage de tâches effectuées. Pour cela on va simplement diviser le nombre de tâches qui sont cochées (TRUE) par le nombre total de tâches et utiliser un format de cellule pourcentages.

Nombre de tâches effectuées

info : une case à cocher renvoie la valeur booléenne TRUE quand elle est cochée et FALSE quand elle n’est pas cochée.

Pour connaître le nombre de tâches effectuées, la formule est la suivante :

=COUNTIF(D7:D;"TRUE")

Notez que j’ai indiqué le début de la plage (D7), mais pas la fin (D). Ainsi vous pouvez ajouter autant de ligne que vous voulez, la formule fonctionnera toujours.

Nombre total de tâches

Pour cela on va simplement compter le nombre de lignes avec COUNTA().

=counta(D7:D)

Idem ici, je n’indique pas la fin de la plage pour que la formule puisse fonctionner quel que soit le nombre de lignes de la todo.

Afficher le pourcentage

Reste à afficher le pourcentage en combinant les deux formules. On divise le nombre de cases cochées (TRUE) par le nombre total de cases.

= COUNTIF(D7:D;"TRUE")/counta(D7:D)

Ceci va vous afficher un nombre au format décimal, (ex: 0,6666666667).

Arrondir le résultat

Bien, mais on ne veut pas autant de chiffres après la virgule. On va arrondir avec la formule ROUND() et demander deux chiffres après la virgule.

=ROUND(COUNTIF(D7:D;"TRUE")/counta(D7:D);2).

Il ne nous reste plus qu’à transformer ce chiffre en pourcentage en modifiant le format de la cellule.

Appliquer un format pourcentage à la cellule qui affiche la valeur

La formule complète en D5

La Cellule D5 affiche bien désormais un chiffre en pourcentage (%) grâce au format de cellule et à la formule : 

=ROUND(COUNTIF(D7:D;"TRUE")/counta(D7:D);2).

Création du nom de la feuille

Nous allons stocker dans une cellule (la cellule A1) le nom du classeur qui sera composé des éléments suivants :

  • un crochet : [
  • le pourcentage de tâches réalisées (cellule D5)
  • un crochet : ]
  • un séparateur (espace, tiret, selon votre choix)
  • Le nom de la TODO (contenu en A3).

Pour cela on va utiliser l’opérateur de concaténation & et reconstituer le nom de la feuille à partir de ces éléments.

La formule est :

="[ " & D5 & " ] - " & A3

Le résultat est le suivant :

[ 0,67 % ] – MISE EN PLACE HÉBERGEMENT – CLIENT [ #1 ]

Le chiffre est décimal et ne correspond pas à ce que l’on veut.

Pour obtenir le résultat voulu, il va falloir multiplier le chiffre en D5 par 100. Corrigeons notre formule :

="[ "& D5*100 & " % ] - " & A3

Le résultat est cette fois-ci correct :

[ 67 % ] – MISE EN PLACE HÉBERGEMENT – CLIENT [ #1 ]

Le Script

Ne reste plus que la partie Script à mettre en place.

Rendez-vous dans le menu Outils / Éditeur de scripts.

Ouvrir l’éditeur de scripts dans Google Sheets

Dans la section Code.gs, copiez-collez le code suivant :

// Ce code permet de renommer automatiquement le classeur
// avec le contenu de la cellule A1 à chaque modification
// Merci Larry

function onEdit() {
  var Classeur = SpreadsheetApp.getActiveSpreadsheet(); 
  var activeDoc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Todo"); 
  var Titre_todo = activeDoc.getRange('A1').getValue();                                        
  // modifie le titre du doc
  Classeur.setName(Titre_todo);
}

On explique le code :

  • onEdit est un trigger (un déclencheur) qui va s’exécuter à chaque modification de la feuille.
  • var Classeur (le classeur actuel)
  • var activeDoc (on cible uniquement l’onglet Todo)
  • vat Titre_todo (on mets dans la variable Titre_todo le contenu de la cellule A1
  • Classeur.setName(Titre_todo) on renomme le classeur avec le contenu de la variable Titre_todo.

Et voilà, le tour est joué. 

Vous pouvez masquer la ligne 1 de votre Todo.

Remplissez le nom de la Todo en cellule A3, ajoutez vos lignes, cochez vos cases au fur et à mesure de l’avancée de votre travail, et le nom du fichier sera automatiquement mis à jour.

Vous pouvez retrouver le fichier Google Sheet ici.

Merci à Larry pour sa participation à cet article.


Tous les articles par catégorie

Envie de plus de lecture ? Tous les articles sont listés sur cette page par catégorie.

Laisser un commentaire