Office Scripts Excel : automatiser vos classeurs en ligne sans macro VBA, pas à pas – illustration Office Scripts

Office Scripts Excel : automatiser vos classeurs en ligne sans macro VBA, pas à pas

Thématique
Low-code & automatisation
Mis à jour
Lecture
13 min
Formation
Automatiser Excel avec Office Scripts - Guide pratique

L'essentiel en 30 secondes

  • Office Scripts Excel permet d'automatiser des tâches répétitives dans Excel pour le web et Excel Microsoft 365, à l'aide de scripts écrits en TypeScript.
  • L'enregistreur d'actions de l'onglet Automatiser transforme vos clics en script, sans écrire une ligne de code au départ.
  • Chaque script contient une fonction main qui reçoit le classeur en paramètre : c'est le point d'entrée de toute l'automatisation.
  • Les scripts sont stockés dans OneDrive ou SharePoint, et non dans le fichier, ce qui permet de les réutiliser sur plusieurs classeurs.
  • Avec le connecteur Excel Online (Business) de Power Automate, un script peut être lancé automatiquement selon un horaire ou un événement.
Sommaire de l'article
  1. Qu’est-ce qu’Office Scripts dans Excel ?
  2. À quoi sert un script Excel au quotidien ?
  3. Comment utiliser Office Scripts Excel : les étapes
  4. Bonnes pratiques pour des scripts fiables et réutilisables
  5. Les erreurs fréquentes avec Office Scripts (et comment les éviter)
  6. Office Scripts vs VBA : quel outil choisir ?
  7. Automatiser Excel en ligne : où se situe Office Scripts dans la Power Platform ?
  8. Comment apprendre Office Scripts efficacement ?
  9. En résumé

Office Scripts Excel est la fonctionnalité de Microsoft 365 qui permet d’automatiser des tâches répétitives dans Excel pour le web et Excel Microsoft 365 : vous enregistrez vos manipulations, Excel les convertit en script, puis vous les rejouez en un clic ou automatiquement via Power Automate. C’est l’équivalent moderne et cloud des macros, pensé pour les fichiers partagés dans OneDrive et SharePoint.

Ce guide s’adresse aux utilisateurs d’Excel qui refont chaque semaine les mêmes nettoyages, mises en forme ou contrôles, et qui travaillent sur des classeurs en ligne. À la fin, vous saurez enregistrer un script, lire et modifier son code, écrire un script de nettoyage fiable et le déclencher sans ouvrir Excel.

Qu’est-ce qu’Office Scripts dans Excel ?

Office Scripts est un outil d’automatisation intégré à Excel pour Microsoft 365. Il enregistre ou exécute des scripts écrits en TypeScript, un langage dérivé de JavaScript. Chaque script agit sur le classeur ouvert : il lit des plages, modifie des valeurs, trie, filtre, met en forme ou crée des feuilles, puis peut être rejoué à l’identique.

Trois éléments le distinguent des macros classiques :

  • Le stockage dans le cloud : les scripts sont enregistrés sous forme de fichiers .osts dans votre OneDrive (dossier Documents > Office Scripts) ou dans une bibliothèque SharePoint, et non à l’intérieur du classeur.
  • Le fonctionnement en ligne : un script s’exécute dans Excel pour le web, donc sur n’importe quel ordinateur avec un navigateur.
  • L’intégration à Power Automate : un script peut être appelé par un flux automatisé, par exemple chaque lundi à 8 h ou à la réception d’un e-mail.

Office Scripts n’est pas disponible avec un compte Microsoft personnel : il faut un compte professionnel ou scolaire Microsoft 365 avec une licence éligible, et l’administrateur de votre organisation doit l’avoir laissé activé.

À quoi sert un script Excel au quotidien ?

Un script Excel est rentable dès qu’une tâche revient régulièrement et suit toujours les mêmes règles. Voici les usages que l’on retrouve le plus souvent en entreprise :

  • Nettoyer un export issu d’un logiciel métier : supprimer les lignes vides, retirer les espaces superflus, harmoniser les majuscules, supprimer les doublons.
  • Mettre en forme un rapport : appliquer un style de tableau, figer la première ligne, formater les montants et les dates, ajuster la largeur des colonnes.
  • Contrôler la cohérence d’une base : repérer les montants négatifs, les dates manquantes ou les codes invalides, puis les surligner.
  • Préparer une synthèse : copier les lignes filtrées vers une nouvelle feuille, calculer des totaux, horodater la mise à jour.
  • Consolider des fichiers avec Power Automate : lire plusieurs classeurs d’un dossier et regrouper leurs données dans un fichier maître.

Notre conseil : avant d’automatiser, notez la tâche en étapes numérotées sur papier. Si vous ne pouvez pas la décrire précisément, le script ne pourra pas la reproduire de façon fiable.

Comment utiliser Office Scripts Excel : les étapes

Prenons un exemple concret : chaque semaine, vous recevez un export de commandes avec des colonnes Date, Client, Email, Montant et Statut. Il faut le mettre sous forme de tableau, nettoyer les e-mails, supprimer les commandes annulées et trier par montant.

Étape 1 — Vérifier l’accès et ouvrir l’onglet Automatiser

Enregistrez votre classeur dans OneDrive ou SharePoint, puis ouvrez-le dans Excel pour le web (ou dans Excel Microsoft 365 si votre version propose l’onglet). Cliquez sur l’onglet Automatiser du ruban. Vous y trouvez notamment :

  • Enregistrer des actions, qui lance l’enregistreur ;
  • Nouveau script, qui ouvre l’éditeur de code sur un script vide ;
  • Tous les scripts (ou la galerie de scripts), qui liste les scripts déjà créés et les exemples fournis par Microsoft.

Si l’onglet n’apparaît pas, le problème vient presque toujours de la licence, du type de compte ou d’un paramètre désactivé par l’administrateur.

Étape 2 — Enregistrer vos actions

Cliquez sur Enregistrer des actions. Un volet s’ouvre à droite et liste en temps réel chaque action effectuée. Réalisez la tâche normalement :

  1. Sélectionnez les données et appuyez sur Ctrl+L (ou Accueil > Mettre sous forme de tableau).
  2. Triez la colonne Montant du plus grand au plus petit.
  3. Appliquez un format monétaire à la colonne Montant.
  4. Figez la première ligne (Affichage > Figer les volets).

Cliquez ensuite sur Arrêter. Excel génère le script et l’enregistre dans votre OneDrive. Renommez-le immédiatement avec un nom explicite, par exemple Nettoyer export commandes, via le menu du script.

Étape 3 — Rejouer le script

Ouvrez un nouvel export du même format, puis onglet Automatiser > Tous les scripts, sélectionnez votre script et cliquez sur Exécuter. Le résultat doit être identique à ce que vous avez fait à la main.

Pour vos collègues, vous pouvez ajouter un bouton dans la feuille à partir du menu du script (option d’ajout d’un bouton dans le classeur). Le script est alors partagé avec les personnes qui ont accès au fichier, qui l’exécutent sans passer par la galerie.

Étape 4 — Lire le code généré

Cliquez sur Modifier pour ouvrir l’éditeur de code. Un script enregistré ressemble à ceci :

function main(workbook: ExcelScript.Workbook) {
  let selectedSheet = workbook.getActiveWorksheet();
  // Crée un tableau à partir de la plage utilisée
  let table1 = workbook.addTable(selectedSheet.getRange("A1:E250"), true);
  // Trie sur la 4e colonne (Montant), ordre décroissant
  table1.getSort().apply([{ key: 3, ascending: false }]);
  // Format numérique à deux décimales
  selectedSheet.getRange("D2:D250").setNumberFormat("#,##0.00");
  // Fige la première ligne
  selectedSheet.getFreezePanes().freezeRows(1);
}

Trois points à comprendre :

  • function main(workbook: ExcelScript.Workbook) : c’est le point d’entrée obligatoire. Le paramètre workbook représente le classeur sur lequel le script s’exécute.
  • Les objets s’enchaînent : classeur > feuille > plage ou tableau > format. On récupère un objet avec une méthode get..., on le modifie avec une méthode set... ou une action (apply, freezeRows).
  • Les colonnes sont numérotées à partir de 0 : key: 3 désigne la quatrième colonne.

Vous remarquez aussi le principal défaut de l’enregistreur : la plage A1:E250 est figée. Si le prochain export compte 400 lignes, les 150 dernières seront ignorées.

Étape 5 — Rendre le script robuste

Remplacez les adresses fixes par des plages calculées. getUsedRange() renvoie la zone réellement remplie de la feuille, et les colonnes d’un tableau se désignent par leur nom :

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  // Sécurité : ne pas créer deux fois le tableau
  if (sheet.getTables().length === 0) {
    sheet.addTable(sheet.getUsedRange(), true);
  }
  const table = sheet.getTables()[0];
  table.setName("T_Commandes");

  // Format à deux décimales sur toute la colonne Montant, quelle que soit sa longueur
  table.getColumnByName("Montant")
    .getRangeBetweenHeaderAndTotal()
    .setNumberFormat("#,##0.00");

  // Tri décroissant sur Montant
  const indexMontant = table.getColumnByName("Montant").getIndex();
  table.getSort().apply([{ key: indexMontant, ascending: false }]);

  sheet.getFreezePanes().freezeRows(1);
}

Le script fonctionne désormais quel que soit le nombre de lignes, et il ne dépend plus de la position des colonnes. Enregistrez avec Ctrl+S dans l’éditeur, puis testez sur un fichier de taille différente.

Étape 6 — Ajouter une règle de nettoyage avec une boucle

Pour nettoyer les e-mails et supprimer les commandes annulées, on lit toutes les valeurs d’un coup, on les traite en mémoire, puis on écrit le résultat. C’est beaucoup plus rapide que de modifier les cellules une par une :

function main(workbook: ExcelScript.Workbook) {
  const table = workbook.getTable("T_Commandes");
  if (!table) {
    console.log("Tableau T_Commandes introuvable.");
    return;
  }

  // 1. Nettoyer la colonne Email
  const emailRange = table.getColumnByName("Email").getRangeBetweenHeaderAndTotal();
  const emails = emailRange.getValues();
  for (let i = 0; i < emails.length; i++) {
    emails[i][0] = String(emails[i][0]).trim().toLowerCase();
  }
  emailRange.setValues(emails);

  // 2. Supprimer les lignes au statut "Annulée" (en partant du bas)
  const statuts = table.getColumnByName("Statut").getRangeBetweenHeaderAndTotal().getValues();
  let supprimees = 0;
  for (let i = statuts.length - 1; i >= 0; i--) {
    if (statuts[i][0] === "Annulée") {
      table.deleteRowsAt(i, 1);
      supprimees++;
    }
  }
  console.log(`${supprimees} ligne(s) supprimée(s).`);
}

Deux réflexes à retenir : on parcourt les lignes du bas vers le haut quand on supprime (sinon les index se décalent), et on utilise console.log() pour afficher un bilan dans le volet de sortie de l’éditeur.

Étape 7 — Lancer le script avec Power Automate

Pour que le nettoyage se fasse sans vous, créez un flux dans Power Automate :

  1. Choisissez un flux cloud planifié (par exemple tous les lundis à 7 h) ou un flux automatisé déclenché par l’arrivée d’un fichier dans un dossier.
  2. Ajoutez l’action Exécuter un script du connecteur Excel Online (Business).
  3. Indiquez l’emplacement (OneDrive ou site SharePoint), la bibliothèque, le fichier et le script.

Un script peut recevoir des paramètres et renvoyer une valeur, que le flux réutilise ensuite (dans un e-mail ou un message Teams, par exemple) :

function main(workbook: ExcelScript.Workbook, statutASupprimer: string): number {
  // ... même logique que ci-dessus, avec statutASupprimer à la place de "Annulée"
  return supprimees;
}

Les paramètres déclarés après workbook apparaissent automatiquement comme champs à remplir dans l’action du flux. Pour la logique des déclencheurs, des conditions et des boucles côté flux, consultez notre guide complet sur Power Automate.

Bonnes pratiques pour des scripts fiables et réutilisables

Un script qui fonctionne une fois n’est pas forcément un script fiable. Ces habitudes évitent la plupart des mauvaises surprises :

  • Travaillez sur des tableaux nommés plutôt que sur des adresses de plages. workbook.getTable("T_Commandes") résiste aux lignes ajoutées et aux colonnes déplacées.
  • Désignez les colonnes par leur nom avec getColumnByName(), jamais par leur lettre.
  • Lisez et écrivez en bloc avec getValues() et setValues(). Les appels répétés cellule par cellule ralentissent fortement l’exécution, surtout sur plusieurs milliers de lignes.
  • Testez l’existence des objets avant de les utiliser (if (!table) { ... return; }) pour obtenir un message clair plutôt qu’une erreur obscure.
  • Commentez votre code avec // : dans six mois, vous ou un collègue devrez comprendre pourquoi une règle existe.
  • Travaillez sur une copie du fichier pendant la mise au point. Un script ne s’annule pas toujours avec Ctrl+Z : l’historique d’annulation n’est pas garanti après l’exécution.
  • Pensez « modèle » : un script de nettoyage générique, avec le nom du tableau et des colonnes en paramètres, se réutilise sur tous vos exports.

Voici un exemple de script modèle dont les réglages sont regroupés en tête, pour l’adapter en quelques secondes à un autre fichier :

// Réglages à adapter
const NOM_TABLEAU = "T_Commandes";
const COLONNES_TEXTE = ["Client", "Email"];

function main(workbook: ExcelScript.Workbook) {
  const table = workbook.getTable(NOM_TABLEAU);
  if (!table) { console.log(`Tableau ${NOM_TABLEAU} absent.`); return; }

  COLONNES_TEXTE.forEach((nom) => {
    const plage = table.getColumnByName(nom).getRangeBetweenHeaderAndTotal();
    const valeurs = plage.getValues().map((ligne) => [String(ligne[0]).trim()]);
    plage.setValues(valeurs);
  });
}

Si vos données doivent être fusionnées depuis plusieurs sources ou transformées en profondeur (dépivotage, jointures), Power Query est souvent plus adapté qu’un script : il est présenté dans notre guide Power Query et Power Pivot dans Excel. Les deux outils se complètent bien : Power Query prépare, Office Scripts met en forme et contrôle.

Les erreurs fréquentes avec Office Scripts (et comment les éviter)

En formation, les mêmes blocages reviennent chez presque tous les débutants. Les voici avec leur solution.

ErreurCauseSolution
L’onglet Automatiser est absentCompte personnel, licence non éligible ou fonctionnalité désactivéeUtiliser un compte professionnel Microsoft 365 et vérifier avec l’administrateur
Le script ignore les dernières lignesPlage figée par l’enregistreur (A1:E250)Utiliser getUsedRange() ou travailler sur un tableau
« Cannot read properties of undefined »Tableau, feuille ou colonne introuvable (nom différent)Vérifier les noms exacts et tester l’objet avant usage
Des lignes non supprimées ou mal suppriméesBoucle de suppression parcourue du haut vers le basParcourir les lignes du bas vers le haut
Le script est très lentLecture ou écriture cellule par cellule dans une boucleLire avec getValues(), traiter en mémoire, écrire avec setValues()
Le script échoue dans Power Automate mais pas dans ExcelScript qui dépend de la feuille active ou de la sélectionDésigner feuilles et tableaux par leur nom, jamais par la sélection
Les collègues ne trouvent pas le scriptScript resté dans votre OneDrive personnelLe partager dans le classeur ou le stocker dans une bibliothèque SharePoint

Le cas de la feuille active mérite une attention particulière : dans un flux Power Automate, personne n’a « cliqué » dans le classeur. Remplacez donc workbook.getActiveWorksheet() par workbook.getWorksheet("Données") dès qu’un script est destiné à être automatisé.

Office Scripts vs VBA : quel outil choisir ?

La question revient systématiquement chez les utilisateurs qui connaissent déjà les macros. Les deux outils ne répondent pas aux mêmes contextes.

CritèreMacros VBAOffice Scripts
LangageVisual Basic for ApplicationsTypeScript (proche de JavaScript)
Où ça fonctionneExcel de bureau (Windows, et en partie Mac)Excel pour le web et Excel Microsoft 365
StockageDans le classeur (.xlsm) ou le classeur de macros personnellesDans OneDrive ou SharePoint (.osts)
Enregistreur d’actionsOuiOui
Événements (ouverture, modification de cellule)OuiNon, on passe par Power Automate
Formulaires utilisateur (UserForm)OuiNon
Piloter d’autres applications (Outlook, Word, fichiers Windows)OuiNon, directement ; oui via Power Automate
Automatisation planifiée sans ouvrir ExcelDifficileNative via Power Automate
SécuritéMacros souvent bloquées dans les fichiers reçusScripts gérés dans l’environnement Microsoft 365

En pratique, si vos fichiers vivent sur un poste de travail et que vous avez besoin de formulaires ou d’événements, restez sur VBA : notre guide sur les macros VBA dans Excel vous accompagne. Si vos fichiers sont partagés dans Teams, OneDrive ou SharePoint et que vous voulez automatiser sans poste allumé, Office Scripts est le choix naturel.

Il existe aussi une troisième voie : l’assistance par l’IA. Copilot dans Excel peut générer des formules, des tableaux croisés ou des mises en forme à partir d’une demande en langage naturel. Mais il ne remplace pas un script : Copilot agit ponctuellement, alors qu’un script rejoue exactement la même séquence à chaque fois, ce qui est indispensable pour un processus standardisé.

Automatiser Excel en ligne : où se situe Office Scripts dans la Power Platform ?

Office Scripts agit à l’intérieur d’un classeur. Dès qu’il faut sortir du fichier (envoyer un e-mail, enregistrer une pièce jointe, alimenter une liste SharePoint, lancer une approbation), il faut l’associer à d’autres outils de Microsoft :

  • Power Automate orchestre : il déclenche le script, lui passe des paramètres, récupère le résultat et enchaîne les actions suivantes.
  • Power Apps fournit une interface de saisie quand un classeur Excel ne suffit plus pour collecter les données.
  • Power BI prend le relais pour les tableaux de bord partagés et actualisés.

Ces briques forment ensemble la Power Platform de Microsoft, dont Office Scripts est un complément naturel pour tout ce qui concerne Excel. Un scénario typique : un flux récupère chaque matin la pièce jointe d’un e-mail, l’enregistre dans SharePoint, exécute un script de nettoyage, puis publie un résumé dans Teams.

Comment apprendre Office Scripts efficacement ?

Office Scripts s’apprend par la pratique, en partant de tâches réelles. Voici le parcours que nous recommandons :

  1. Première heure : vérifier l’accès, enregistrer trois ou quatre tâches simples, les rejouer, lire le code généré et repérer les objets (classeur, feuille, plage, tableau).
  2. Semaine suivante : remplacer les plages fixes par des tableaux, utiliser getValues() et setValues(), écrire une première boucle avec une condition.
  3. Ensuite : construire un script de nettoyage complet sur un vrai export, puis le transformer en modèle réutilisable avec des réglages en tête de script.
  4. Enfin : connecter le script à un flux Power Automate avec des paramètres et une valeur de retour.

Il n’est pas nécessaire de maîtriser TypeScript dans son ensemble : les variables, les boucles for, les conditions if et les tableaux de valeurs couvrent la grande majorité des besoins.

Pour être guidé, la formation vidéo Office Scripts pour automatiser Excel d’EspritAcadémique condense l’essentiel en une heure, sans prérequis, avec une base de données fournie pour pratiquer. Elle aborde notamment :

  • l’emplacement de l’outil dans Microsoft 365 et la préparation de l’environnement ;
  • l’enregistrement d’une action et sa conversion en script modifiable ;
  • la lecture d’une base Excel pour extraire et contrôler les données ;
  • l’affichage des résultats dans une feuille et le débogage ;
  • un projet complet de nettoyage, avec règles de contrôle et export ;
  • la création de modèles de scripts réutilisables d’un fichier à l’autre.

Si vos bases Excel sont encore fragiles, commencez par notre parcours pour apprendre Excel de A à Z : tableaux structurés et références propres rendent vos scripts bien plus simples à écrire.

En résumé

Office Scripts est la façon moderne d’automatiser Excel en ligne : l’enregistreur transforme vos clics en script TypeScript, que vous rendez robuste en travaillant sur des tableaux nommés et des colonnes désignées par leur nom. Lisez et écrivez les données en bloc, testez vos objets avant de les utiliser, et associez vos scripts à Power Automate pour qu’ils tournent sans vous. Une heure de pratique guidée suffit pour automatiser vos premiers nettoyages.

Questions fréquentes

Quelle est la différence entre Office Scripts et les macros VBA ?

Les macros VBA fonctionnent dans Excel de bureau et sont enregistrées dans le classeur (.xlsm). Office Scripts utilise TypeScript, fonctionne dans Excel pour le web et Excel Microsoft 365, stocke les scripts dans le cloud et se connecte à Power Automate. VBA reste plus complet pour piloter Windows ou d'autres applications ; Office Scripts est mieux adapté au travail collaboratif en ligne.

Faut-il savoir programmer pour utiliser Office Scripts ?

Non pour commencer. L'enregistreur d'actions génère le code à votre place : vous réalisez la tâche une fois, puis vous la rejouez. Pour adapter un script (boucles, conditions, paramètres), quelques notions de TypeScript deviennent utiles, mais elles s'acquièrent progressivement en lisant le code produit par l'enregistreur.

Pourquoi l'onglet Automatiser n'apparaît pas dans Excel ?

Office Scripts nécessite un compte professionnel ou scolaire Microsoft 365 avec une licence qui donne accès aux applications Office et à OneDrive Entreprise. L'onglet peut aussi être masqué si l'administrateur a désactivé la fonctionnalité dans le centre d'administration Microsoft 365. Vérifiez enfin que le fichier est bien enregistré dans OneDrive ou SharePoint.

Un Office Script peut-il fonctionner sur plusieurs fichiers Excel ?

Un script s'exécute sur le classeur ouvert, mais il n'est pas lié à un fichier : vous pouvez le lancer sur n'importe quel classeur depuis la liste Tous les scripts. Pour traiter plusieurs fichiers d'un dossier ou échanger des données entre classeurs, on combine le script avec Power Automate, qui ouvre chaque fichier et exécute le script.

Combien de temps faut-il pour apprendre Office Scripts ?

Une heure de pratique guidée suffit pour enregistrer, rejouer et modifier ses premiers scripts. Comptez ensuite quelques semaines d'usage régulier pour écrire vos propres boucles et conditions et connecter vos scripts à Power Automate. Le plus efficace est de partir d'une tâche réelle que vous faites chaque semaine.

Office Scripts fonctionne-t-il dans Excel sur Mac ou sur ordinateur ?

Office Scripts est né dans Excel pour le web, puis a été étendu à Excel Microsoft 365 sur Windows et Mac pour les comptes professionnels éligibles. Les scripts étant stockés dans le cloud, un même script est accessible depuis ces différentes versions, à condition que le classeur soit enregistré dans OneDrive ou SharePoint.