Rentrée 2026 Préparez votre rentrée : réservez dès maintenant votre session de septembre, octobre ou novembre. Réservez votre session de septembre à novembre. Voir les sessions de rentrée →
Excel Word PowerPoint Photoshop Webmarketing WordPress CAO 3D PAO Pack Office Google Sheets Google Workspace IA · nouveau
À jour 2026
Formation Google Sheets Sessions à distance chaque lundi · certifiante
Google Sheets

Créer une fonction personnalisée sur Google Sheets avec Apps Script

Par Samy· 22 juin 2026· 9 min de lecture

Illustration Google Sheets : Créer une fonction personnalisée sur Google Sheets avec Apps Script
3× sans frais Certifié Qualiopi Certification ICDL ★★★★★ 4,8/5 sur 6 avis Google
Créer une fonction personnalisée sur Google Sheets avec Apps Script

L'essentiel

Via Extensions puis Apps Script, vous écrivez une fonction JavaScript que vous appelez ensuite comme une formule classique, par exemple =MAFONCTION(A2), directement dans une cellule.

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.

1

Ouvrir le menu Extensions

Dans la barre de menus en haut de la feuille, cliquez sur Extensions.

2

Choisir Apps Script

Cliquez sur Apps Script. Un nouvel onglet s'ouvre avec l'éditeur de code.

3

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.

LimiteCe que cela implique
Durée d'exécutionUne fonction doit répondre en moins de 30 secondes, sinon elle renvoie une erreur de délai dépassé.
Pas d'écritureElle ne peut que retourner une valeur ou un tableau, jamais modifier d'autres cellules ni la mise en forme.
Services soumis à autorisationElle ne peut pas appeler de service nécessitant vos droits, comme l'envoi d'e-mails ou l'accès à un autre fichier.
DéclenchementElle se recalcule quand ses arguments changent, et non à intervalle régulier ou à l'ouverture du fichier.
Recalcul des valeurs volatilesDes 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.

Voir les formules et dates →

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 instruction return, la cellule affiche une erreur ou reste vide. Une fonction de cellule doit toujours renvoyer une valeur.
  • Reprendre un nom existant : nommer votre fonction SOMME ou MOYENNE dé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() ou String() 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.

Questions fréquentes sur les fonctions personnalisées

Ouvrez le menu Extensions puis Apps Script, écrivez une fonction JavaScript, par exemple function MAFONCTION(valeur) { return valeur * 2; }, enregistrez le projet, puis revenez dans la feuille. Vous appelez ensuite la fonction comme une formule classique dans une cellule, par exemple =MAFONCTION(A2). La valeur de la cellule A2 est passée en argument et le return devient le résultat affiché.

Non. Une fonction personnalisée appelée depuis une cellule ne peut que retourner une valeur ou un tableau de valeurs, elle ne peut pas écrire ailleurs, modifier la mise en forme, envoyer un e-mail ou lire un autre service avec vos droits. Pour ces actions, il faut un script déclenché par un menu, un bouton ou un déclencheur, et non une fonction de cellule.

Ajoutez un commentaire JSDoc juste au-dessus de la fonction, avec la balise @customfunction. Décrivez la fonction et ses paramètres avec @param. Google Sheets affiche alors cette description dans la bulle d'aide quand vous tapez le nom de la fonction dans une cellule, comme pour une fonction intégrée.

Les causes fréquentes sont : un nom de fonction qui reprend celui d'une fonction intégrée, un appel à un service nécessitant une autorisation, un temps d'exécution dépassant 30 secondes, ou un projet Apps Script non enregistré. Vérifiez aussi que la fonction retourne bien une valeur avec return et qu'elle n'essaie pas d'écrire dans la feuille.

À lire ensuite

Fonction FILTER Google Sheets : guide complet Fonction FILTER : extraire des lignes selon vos critères Fonction IMPORTRANGE Google Sheets : guide complet Fonction IMPORTRANGE : fusionner plusieurs classeurs Tableau croisé dynamique Google Sheets : guide complet Tableau croisé dynamique : synthétiser vos données
Voir tous nos tutoriels Google Sheets →
S

Samy, formateur certifié

6 ans d'expérience sur les formations bureautiques (Excel, Word, PowerPoint, Pack Office, Photoshop). Centaines de stagiaires accompagnés en présentiel à Marseille et en classe virtuelle dans toute la France.

→ En savoir plus sur France Formation Groupe

Cet article vous a été utile ? Partagez-le

Formation certifiante

Vous voulez maîtriser Google Sheets de A à Z ?

Accompagnement personnalisé, exercices corrigés et certification reconnue par les employeurs. À distance ou en présentiel.

dès 299€3× sans frais 4,8/5 Google Certifié Qualiopi
Voir les formules et dates → Être rappelé
Voir les sessions
Formation Google Sheets
dès 299€
Réserver →

Une question sur nos formations ?

Notre équipe vous répond et vous oriente vers la bonne solution.

Nous contacter

Vous formez une équipe ?

Devis sous 24h · financement OPCO géré de A à Z · tarifs dégressifs dès 3 collaborateurs.

Demander un devis