Google Sheets permet maintenant d’enregistrer des macros dans vos différents fichiers. Vous n’avez jamais utilisé cette fonction ou vous souhaitez savoir comment enregistrer une macro sur Sheets ? Alors, voyons cela en détail dans cet article.

// DÉCOUVREZ LES FORMATIONS SUR GOOGLE SHEETS //

[toc]

Vidéo de démonstration

[su_youtube url= »https://youtu.be/urC0Nb0hNJg »]

Principe d’une macro

Le principe de l’enregistreur de macro est simple, vous lancez l’enregistrement, vous réalisez vos manipulations et Google Sheets se charge de traduire vos actions en instructions Apps Script (langage de programmation de Google basé sur du Javascript). Votre macro est ainsi composée au fur et à mesure, jusqu’à  ce que vous arrêtiez l’enregistreur. Vous pourrez ensuite l’exécuter à volonté.

En fait, l’enregistreur de macro fonctionne comme un magnétophone. Supposons que vous soyez musicien. Vous voulez enregistrer l’une de vos chansons. Avant de démarrer l’enregistrement, vous réglez le micro, préparez la partition, accordez votre guitare.

Ensuite, vous démarrez l’enregistreur. Ainsi, les bruits des préparatifs ne sont pas enregistrés et ne sont pas audibles lorsque vous écoutez la chanson enregistrée.

marty-guitar
Enregistrer une macro comme si vous enregistriez une chanson.

C’est la même chose avec Google Sheets. Ainsi, pensez bien à tout préparer tout avant de lancer l’enregistrement. 😉

Quand créer une macro ?

L’enregistreur de macro est utile principalement dans deux cas :

  1. Vous voulez créer un enregistrement de manipulation simple, sans la traduire vous-même dans la syntaxe Apps Script.
  2. Vous ne connaissez pas l’instruction Apps Script pour exécuter une commande précise. L’enregistreur crée ainsi l’instruction à votre place.

Ainsi, avant de lancer l’enregistreur de macro, il est primordial de vous poser la question suivante :

« Quel est l’objectif de la macro que je vais enregistrer ? »

Si vous voulez, par exemple, enregistrer une macro qui colore le fond des cellules en rouge et leur attribue un format numérique à deux décimales. Avant le démarrage de l’enregistreur, il faut que les cellules contiennent déjà les données et qu’elles soient sélectionnées.

Une fois la macro enregistrée, vous pouvez l’exécuter aussi souvent que nécessaire sur d’autres cellules. Dans ce cas précis, l’action de sélection elle-même ne doit pas être enregistrée.

Enregistrement d’une macro avec Sheets

Pour démarrer l’enregistreur de macro, procédez comme suit :

1. Cliquez sur Outils → Macros → Enregistrer une macro.

Enregistrement_macro_sheets
Menu d’accès à l’enregistrement d’une macro.

2. Suite au lancement de l’enregistrement, vous pouvez notamment définir l’utilisation des références absolues ou relatives.

Enregistrement_macro_sheets_2
Définir les options d’enregistrement de la Macro.


Utiliser les références absolues ou relatives ?

Google Sheets enregistre les déplacements du pointeur selon les modes suivants :

  • Mode « Absolu » : l’adresse de la cellule de destination est enregistrée.
  • Mode « Relatif » : le déplacement vers la cellule de destination est enregistré.

Exemple : supposons que la cellule A2 soit sélectionnée. Si vous sélectionnez ensuite la cellule B4, deux actions peuvent être enregistrées :

  • Le déplacement « simple » de A2 en B4 (déplacement absolu).
  • Le déplacement « en sélection » vers la cellule située une colonne vers la droite et deux lignes vers le bas par rapport à la cellule d’origine (déplacement relatif).

Par défaut, l’enregistreur fonctionne en mode Absolu. Une fois que l’enregistrement est en cours, vous pouvez activer le mode Relatif en spécifiant le bouton correspondant.

3. Quand vous avez terminé la manipulation, il vous suffit alors de cliquer sur le bouton “Enregistrer”.

4. Vous allez alors devoir définir le nom de votre Macro (De plus, vous avez alors la possibilité de spécifier un caractère pour lancer rapidement la Macro avec une combinaison de touche). Validez alors l’enregistrement avec le bouton “Enregistrer”.

Enregistrement_macro_sheets_3
Définir un nom à sa macro.

Gestion de ses macros

Suite à l’enregistrement d’une macro vous pouvez ensuite la gérer (modification, suppression) en retournant dans le menu de gestion. Soit Outils → Macros → Gérer les macros.

Enregistrement_macro_sheets_4
Accès au menu de gestion des macros

Avis et recommandations

La possibilité d’enregistrer des macro est une fonctionnalité très intéressante pour Google Sheets. Cependant, elle est à manipuler et à utiliser avec précaution.

En effet, tâchez d’éviter de créer un système trop complexe. L’enregistrement de macro ne peut en aucun cas se substituer à du codage « pur ». Le risque étant ici de réaliser une « usine à gaz » qui soit difficile à maintenir et à faire évoluer.

Si vous avez des questions sur l’un des points développés dans cet article, n’hésitez pas à le faire depuis la zone de commentaires ci-dessous.

À bientôt ! 🙂

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

    28 replies to "Enregistrer une Macro avec Google Sheets"

    • Franck

      Puis-je utiliser une macro pour faire un planning de travail (matin, après midi, nuit)? Si oui, auriez vous des suggestions ou exemples?

      Merci

      • Régis

        Bonjour Franck,

        Cela dépend à quoi ressemble votre planning de « base » et des manipulations à faire pour le réaliser.
        Mais si celui-ci comprend des manipulations simple (ex création de ligne, appliquer une couleur, …) et répétitive il est fort possible que vous puissiez simplifier le traitement de celui-ci.

        Bonne continuation.

    • DEMONCEPT

      J’ai créé une macro simple sur un fichier drive dans sheet mais je souhaite l’utiliser sur d’autres fichiers

      • Régis

        Bonjour,

        Vous pouvez récupérer simplement le code de la macro et l’envoyer dans une autre fichier. Cela depuis l’onglet « Outils > Editeur de script ».
        Copiez alors le code et ajouter le dans les autres fichiers en suivant le même cheminement.

    • Christian

      Bonjour Régis,

      J’ai partagé des googlesheet avec u nscript très simple qui sert à remettre à blanc quelques plages de cellules et insérer une date.
      Les personnes qui veulent joure ce script qui xs’exécute via un bouton, on un message d’erreur disant que le script n’est pas certifié par google…

      Comment dois-je pratiquer?
      Je dois soumettre mon script à Google?
      Si oui, comment?

      Merci de votre retour

      • Régis

        Bonjour Christian,

        Est-ce que vous avez la possibilité de simplement valider le message du script et d’ensuite lancer le script ? Généralement c’est la procédure habituelle. La première fois il faut valider le script et après le message n’apparaît plus.
        Cependant, tout ça dépend du script… Dans votre cas il est possible de d’abord devoir le vérifier auprès de Google.

        Bonne continuation

    • Christian

      Merci de ce retour Régis,
      On a essayé mais il semble bien que ça soit le second cas.
      C’est là mon souci car je ne connais pas la procédure de demandede vérivication de ce script, somme toute très basic

      Cordialement,

    • Christian

      Bonjour Régis,

      J’ai trouvé ma réponse grâce à ce tuto
      https://www.youtube.com/watch?v=_5k10maGtek

      Alos, je partage …

      Très bon Noël

      • Régis

        Bonjour Christian,

        Parfait ! Merci de l’information. 😉

        Très bon noël également !

    • Eliott

      Bonjour,

      J’ai remarqué durant l’enregistrement d’une macro qu’effectuer un « Rechercher et remplacer » n’est pas enregistré par la macro. J’aimerai savoir s’il est possible de résoudre ce problème. Si ce n’est pas le cas (ou que c’est bien trop complexe), j’aimerai savoir s’il est possible de créer une liste de tri personnalisé, qui tri en fonction de notre liste et non alphabétiquement ou numériquement.

      Merci.

      • Régis

        Bonjour Eliott,

        Est-ce que vous pouvez me préciser plus en détail votre besoin pour que je puisse vous propose une suggestion la plus pertinent possible ? 🙂

    • Eliott

      Bonjour,

      Oui bien-sur!
      Mon problème est le suivant : J’ai une liste de noms que je tri en fonction de 2 notes, ses notes sont « S, A, B, C et D ». Évidement lorsque je tri, les notes sont triés par ordre alphabétique c’est a dire → « A, B, C, D, S ». J’ai trouvé une solution c’est d’utiliser le fonction « Rechercher et Remplacer » sur les noms et leurs notes attribuées, puis de remplacer les « S » par « .S » et qui aura pour but de placer la note « S » avant la note A.
      D’où ma requête précédente, j’aimerai savoir s’il est possible de créer son propre tri (en l’occurrence ici un tri qui soit dans l’ordre S→A→B→C→D). Sinon j’aimerai savoir si dans une macro, il est possible de remplacer le contenu d’une cellule uniquement si elle contient « S ».

      Désolé c’est un peu brouillon, merci de prendre un peu de votre temps à m’aider !

      • Régis

        Bonjour Eliott,

        Ok, je comprends mieux votre problématique. Je pense que vous devriez peut-être trouver une solution avec la fonction « filter ».
        C’est une fonction très pratique pour trier les données de différentes façon.

        Bonne continuation

        • Eliott

          Bonjour,

          J’ai cherché et je vais essayé de trouver mais ça m’a l’air un peu compliqué, vous pensez qu’il serai possible de s’entretenir en vocal?
          Je continue quand même à chercher cependant.

          Merci et désolé du dérangement.

    • Anthony

      Bonjour,

      Je souhaiterai savoir s’il était possible de créer une macro permettant que lorsque l’on effectue une copie d’un fichier google sheet par exemple, il puisse également générer une copie d’un fichier slide qui se trouve dans ce fichier ?

      Merci d’avance.
      Cordialement.
      Anthony

    • Denis

      Bonjour,

      Je souhaite simplement créer une page d’accueil avec lien vers plusieurs onglets.
      J’ai créé mes macros très simples mais impossible de les affecter aux « boutons » que j’ai créée pour le coup.

      Lorsque je colle le script sur la forme et que je clique dessus il ya écrit la fonction est introuvable.

      Avez vous une idée sur ce que je dois améliorer?

      Je vous remercie,

      Denis

    • Bernard M

      Bonjour,

      Une macro de tri a été écrite ainsi :
      function Tripardépartement() {

      var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.getRange(‘3:188’).activate()
      .sort({column: 2, ascending: true});
      };

      Les 3 et 188 représentent les lignes de la feuille actuelle.
      Je voudrais remplacer le 188 par une variable correspondant au nombre de lignes car il évoluera.
      J’ai fait plein d’essais notamment en utilisant NBVAL mais sans succès.
      Merci à celui qui pourra me conseiller.

      BM

    • Bernard M

      Je précise sur la question précédente

      J’ai écrit la macro de tri ainsi :

      function Tripardépartement() {

      var spreadsheet = SpreadsheetApp.getActive();
      var nbl = nbval(C:C);
      spreadsheet.getRange(‘3:nbl’).activate()
      .sort({column: 2, ascending: true});
      };

      mais lors de l’enregistrement j’ai le message :
      Missing ) after argument list. (ligne 35, fichier « macros »)

      Je ne vois pas où il manque cette « ) »

      Et ensuite le tri ne se fait pas, évidemment vu qu’il y a erreur.

    • Bernard M

      Vu que je n’ai pas eu de conseils encore j’ai continué ma recherche.

      J’ai pour le moment abandonné le choix tri de la feuille puisque je n’ai pas réussi à construire pour deux colonnes.
      Je suis revenu au tri d’une plage donnée.
      Ce qui me donne par exemple :

      function TriDateEtNom() {
      var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.getRange(‘3:1000’).activate()
      .sort([{column: 4, ascending: true}, {column: 1, ascending: true}]);
      };

      Ce qui me gène c’est d’avoir une limite (prise largement) mais qui sera un jour dépassée.

      Il faudra donc la modifier.
      Je n’ai pas trouvé comment remplacer ce 1000 par une variable indiquant le nombre de lignes (qui justement est donné par NBVAL)
      Quelle syntaxe pour cela ?

      Merci

    • Joris

      Bonjour,

      J’ai créé mon code (qui fonctionne parfaitement)
      J’ai créé un bouton et je lui ai assigné la macro et la il marque « La fonction de script 4H zéro est introuvable ».

      Je ne comprend pas pourquoi. Avez vous une idée ?

      Merci

      • Régis

        Bonjour Joris,

        Est-ce que vous avez jeté un coup d’œil directement dans le script ? (Outils > Éditeur de script)

        Peut-être que le bouton ne fait plus le lien avec le script suite à un problème de nommage ? Hélas difficile à dire sans voir le script.

        Bonne continuation.

    • Line

      Bonjour
      Voici ma problématique :
      Je mets à jour un tableau, puis je copie ce tableau dans une autre feuille à la suite des dernières mise à jour.
      J’aimerai faire cette manipulation via une macro.
      Merci pour votre aide

    • Lalaina Franck

      Bonjour,
      Est ce que je peux créer des macros pour des boutons de déplacement dans un classeur Google Sheets.
      Merci

      • Régis

        Bonjour Franck,

        Oui cela est tout à fait possible. Il faut insérer une image dans la (ou les) feuille(s) en question et associé un script à l’image (en passant par les trois petits points de l’image après insertion).

        Bonne continuation.

    • caroline

      Bonjour,
      J’ai bien suivi le tutoriel très bien expliqué.
      Lorsque je clique sur enregistrer la macro, l’enregistrement se lance et cesse tout seul quelques secondes après. Je ne peux rien enregistrer.
      Cela me crée tout de meme un fichier macro sans titre, mais vide.
      Une idée? Ce serait parfait parce que la découverte des macros résoudre tout!

      • Régis

        Bonjour Caroline,
        En effet, j’ai également remarqué la même chose il y a quelques jours. Je pense qu’il doit y avoir une sorte de “bug” avec la création de macros en ce moment. A mon avis Google ne devrait pas tarder à corriger ce problème 😉
        Bonne continuation.

    • caroline

      Merci de votre réponse, je vais patienter un peu!

    • louis

      Bonjour Regis,

      As tu une idée de comment faire pour dupliquer une feuille tout en gardant ces cellules protégées ? même si c’est via une macro (quel est le code ?)

      merciii

Leave a Reply

Your email address will not be published.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.