Google Sheets propose plusieurs centaines de fonctions intégrées, de SOMME à RECHERCHEV. Mais il arrive qu'aucune ne corresponde exactement à votre besoin : appliquer une règle de calcul propre à votre activité, nettoyer un format de texte particulier ou répéter un traitement métier. La solution consiste à créer votre propre fonction grâce à Google Apps Script. Vous écrivez quelques lignes de JavaScript, puis vous appelez votre fonction comme n'importe quelle formule, par exemple =MAFONCTION(A2). Ce tutoriel vous accompagne pas à pas, de l'ouverture de l'éditeur jusqu'aux exemples utiles et aux erreurs à éviter.
À quoi sert une fonction personnalisée dans Google Sheets
Une fonction personnalisée est une formule que vous créez vous-même et que Google Sheets reconnaît au même titre que ses fonctions natives. Vous la saisissez dans une cellule avec le signe égal, elle reçoit des arguments et renvoie un résultat. Concrètement, elle est utile lorsque :
- aucune fonction intégrée ne couvre votre calcul, par exemple un barème de commission propre à votre entreprise ;
- vous répétez la même formule complexe dans des dizaines de cellules et souhaitez la simplifier en un seul nom lisible ;
- vous devez normaliser un texte selon une règle précise, comme remettre des noms en majuscule de façon homogène ;
- vous voulez factoriser une logique métier pour la maintenir à un seul endroit plutôt que dans chaque cellule.
L'intérêt majeur est la lisibilité : une formule =COMMISSION(C2) est bien plus parlante qu'une longue imbrication de SI et de RECHERCHEV. Vous gagnez aussi en maintenance, puisque la règle de calcul vit dans le script et non éclatée dans la feuille.
Une fonction personnalisée se comporte comme une formule : elle prend des valeurs en entrée et renvoie un résultat. Elle ne remplace pas une macro, qui sert plutôt à automatiser des actions comme créer un onglet ou envoyer un e-mail.
Ouvrir l'éditeur Apps Script depuis votre feuille
L'éditeur est intégré à Google Sheets, vous n'avez rien à installer. Depuis votre classeur, suivez ces étapes.
Ouvrir le menu Extensions
Dans la barre de menus en haut de la feuille, cliquez sur Extensions.
Choisir Apps Script
Cliquez sur Apps Script. Un nouvel onglet s'ouvre avec l'éditeur de code.
Repérer le fichier Code.gs
Par défaut, un fichier Code.gs contient une fonction vide nommée myFunction. C'est ici que vous écrirez vos fonctions.
L'éditeur Apps Script est lié à votre classeur : les fonctions que vous y écrivez ne sont disponibles que dans ce document. Pour les réutiliser ailleurs, il faudra copier le code ou passer par une bibliothèque, un sujet plus avancé.
Écrire votre première fonction personnalisée (exemple pas à pas)
Commençons par une fonction qui double un nombre. Effacez le contenu de Code.gs et saisissez le code suivant :
function DOUBLE(valeur) {
return valeur * 2;
}
Enregistrez le projet avec l'icône en forme de disquette, puis revenez dans l'onglet de votre feuille de calcul. Dans une cellule, par exemple en B2, saisissez :
=DOUBLE(A2)
Si la cellule A2 contient 21, la cellule B2 affiche 42. Le mécanisme est simple : la valeur de A2 est transmise au paramètre valeur, et l'instruction return renvoie ce que la cellule affichera. Vous venez de créer une fonction utilisable exactement comme SOMME ou MOYENNE.
Donnez à vos fonctions des noms en majuscules et sans accent, par exemple COMMISSION ou NETTOYER_TEL. Évitez tout nom déjà utilisé par une fonction intégrée de Google Sheets, sous peine d'erreur.
Passer des arguments à votre fonction
Une fonction devient vraiment utile quand elle reçoit plusieurs arguments. Voici une fonction de remise qui applique un pourcentage à un montant :
function REMISE(montant, taux) {
return montant - (montant * taux);
}
Vous l'appelez en passant deux valeurs, soit en dur, soit depuis des cellules :
=REMISE(100, 0,2) // renvoie 80
=REMISE(A2, B2) // montant en A2, taux en B2
Une fonction peut aussi recevoir une plage entière : Google Sheets transmet alors un tableau de valeurs que vous parcourez en JavaScript. L'exemple ci-dessous additionne les nombres positifs d'une plage :
function SOMME_POSITIFS(plage) {
var total = 0;
for (var i = 0; i < plage.length; i++) {
for (var j = 0; j < plage[i].length; j++) {
if (plage[i][j] > 0) {
total += plage[i][j];
}
}
}
return total;
}
Vous l'utilisez ensuite avec =SOMME_POSITIFS(A2:A100). La plage arrive sous forme de tableau à deux dimensions, d'où les deux boucles imbriquées.
Documenter la fonction pour l'autocomplétion (JSDoc)
Pour que Google Sheets affiche une bulle d'aide quand vous tapez le nom de votre fonction, ajoutez un commentaire JSDoc juste au-dessus de la déclaration. La balise @customfunction est essentielle : elle déclare la fonction à l'autocomplétion.
/**
* Applique une remise à un montant.
*
* @param {number} montant Le montant de départ.
* @param {number} taux Le taux de remise, par exemple 0,2 pour 20 %.
* @return Le montant après remise.
* @customfunction
*/
function REMISE(montant, taux) {
return montant - (montant * taux);
}
Dès cet ajout enregistré, lorsque vous commencez à taper =REMI dans une cellule, Google Sheets propose REMISE et affiche votre description et vos paramètres, exactement comme pour une fonction native. C'est un détail qui rend vos fonctions agréables à utiliser, surtout en équipe.
Les limites à connaître (performance, droits, déclenchement)
Les fonctions personnalisées sont volontairement bridées par Google pour rester sûres et rapides. Le tableau suivant résume les contraintes à garder en tête.
| Limite | Ce que cela implique |
|---|---|
| Durée d'exécution | Une fonction doit répondre en moins de 30 secondes, sinon elle renvoie une erreur de délai dépassé. |
| Pas d'écriture | Elle ne peut que retourner une valeur ou un tableau, jamais modifier d'autres cellules ni la mise en forme. |
| Services soumis à autorisation | Elle ne peut pas appeler de service nécessitant vos droits, comme l'envoi d'e-mails ou l'accès à un autre fichier. |
| Déclenchement | Elle se recalcule quand ses arguments changent, et non à intervalle régulier ou à l'ouverture du fichier. |
| Recalcul des valeurs volatiles | Des appels comme l'heure courante ne se mettent pas à jour en continu, le résultat peut donc paraître figé. |
Si votre besoin dépasse ces limites, par exemple écrire dans plusieurs cellules, envoyer un e-mail ou réagir à une modification, vous ne devez pas écrire une fonction de cellule mais un script déclenché par un menu, un bouton ou un déclencheur. C'est une distinction fondamentale entre une fonction personnalisée et une automatisation Apps Script.
Vous voulez aller au-delà des formules ?
Notre formation vous apprend les fonctions avancées, Apps Script et l'automatisation de Google Sheets, à distance ou en présentiel. Démarrage immédiat, paiement en 3× sans frais.
Exemples utiles (TVA, conversion, nettoyage de texte)
Voici trois fonctions immédiatement réutilisables dans vos classeurs. Copiez-les dans Code.gs, enregistrez, puis appelez-les depuis vos cellules.
Calculer un montant TTC à partir du HT
/**
* Ajoute la TVA à un montant hors taxes.
*
* @param {number} ht Le montant hors taxes.
* @param {number} taux Le taux de TVA, par exemple 0,2 pour 20 %.
* @return Le montant toutes taxes comprises.
* @customfunction
*/
function TTC(ht, taux) {
return ht * (1 + taux);
}
Appel dans la feuille : =TTC(A2, 0,2) renvoie le montant TTC à partir du HT en A2.
Convertir des euros dans une autre devise
/**
* Convertit un montant en euros vers une autre devise.
*
* @param {number} euros Le montant en euros.
* @param {number} taux Le taux de change appliqué.
* @return Le montant converti.
* @customfunction
*/
function CONVERTIR(euros, taux) {
return euros * taux;
}
Appel : =CONVERTIR(A2, B2), avec le montant en A2 et le taux de change en B2.
Nettoyer et mettre en forme un texte
/**
* Supprime les espaces superflus et met la première lettre en majuscule.
*
* @param {string} texte Le texte à nettoyer.
* @return Le texte nettoyé.
* @customfunction
*/
function NETTOYER(texte) {
var t = String(texte).trim().toLowerCase();
return t.charAt(0).toUpperCase() + t.slice(1);
}
Appel : =NETTOYER(A2) transforme par exemple " marseille " en "Marseille". Ces trois exemples montrent la logique commune : un ou plusieurs arguments en entrée, un calcul en JavaScript, une valeur renvoyée par return.
Erreurs courantes et comment les corriger
Les premières fonctions personnalisées butent souvent sur les mêmes pièges. Voici les cas les plus fréquents et leur solution.
- Oublier le
return: sans instructionreturn, la cellule affiche une erreur ou reste vide. Une fonction de cellule doit toujours renvoyer une valeur. - Reprendre un nom existant : nommer votre fonction
SOMMEouMOYENNEdéclenche un conflit. Choisissez un nom unique, en majuscules et sans accent. - Tenter d'écrire dans la feuille : une fonction appelée depuis une cellule ne peut pas modifier d'autres cellules. Si vous voyez une erreur d'autorisation, c'est souvent que la logique relève d'un script, pas d'une fonction.
- Projet non enregistré : tant que vous n'avez pas enregistré le code dans l'éditeur, la fonction reste introuvable dans la feuille. Pensez à enregistrer après chaque modification.
- Mauvais type d'argument : passer du texte à une fonction qui attend un nombre fausse le calcul. Convertissez explicitement avec
Number()ouString()en cas de doute.
Une fois ces réflexes acquis, créer une fonction personnalisée devient un automatisme qui simplifie durablement vos classeurs. C'est exactement ce type de compétences que vous travaillez en profondeur dans notre formation Google Sheets certifiante, des fonctions essentielles jusqu'à l'automatisation avec Apps Script.
Cette formation débouche sur une certification ICDL (Tableur) reconnue. Vous pouvez la suivre à distance ou en présentiel, avec un démarrage immédiat et un paiement en 3 fois sans frais. Pour situer ces fonctions dans leur contexte, lisez aussi notre article sur la fonction QUERY et notre guide pour comprendre ce qu'est Google Sheets.



