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 //

Vidéo de démonstration

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« .

    22 replies to "Enregistrer une Macro avec Google Sheets"

    • Avatar 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 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.

    • Avatar DEMONCEPT

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

      • Régis 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.

    • Avatar 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 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

    • Avatar 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,

    • Avatar 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 Régis

        Bonjour Christian,

        Parfait ! Merci de l’information. 😉

        Très bon noël également !

    • Avatar 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 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 ? 🙂

    • Avatar 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 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

        • Avatar 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.

    • Avatar 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

    • Avatar 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

    • Avatar 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

    • Avatar 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.

    • Avatar 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

    • Avatar 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 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.

    • Avatar 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

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.