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
- Qu’est-ce qu’Office Scripts dans Excel ?
- À quoi sert un script Excel au quotidien ?
- Comment utiliser Office Scripts Excel : les étapes
- Bonnes pratiques pour des scripts fiables et réutilisables
- Les erreurs fréquentes avec Office Scripts (et comment les éviter)
- Office Scripts vs VBA : quel outil choisir ?
- Automatiser Excel en ligne : où se situe Office Scripts dans la Power Platform ?
- Comment apprendre Office Scripts efficacement ?
- 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
.ostsdans 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 :
- Sélectionnez les données et appuyez sur Ctrl+L (ou Accueil > Mettre sous forme de tableau).
- Triez la colonne Montant du plus grand au plus petit.
- Appliquez un format monétaire à la colonne Montant.
- 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ètreworkbookrepré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éthodeset...ou une action (apply,freezeRows). - Les colonnes sont numérotées à partir de 0 :
key: 3dé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 :
- 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.
- Ajoutez l’action Exécuter un script du connecteur Excel Online (Business).
- 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()etsetValues(). 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.
| Erreur | Cause | Solution |
|---|---|---|
| L’onglet Automatiser est absent | Compte personnel, licence non éligible ou fonctionnalité désactivée | Utiliser un compte professionnel Microsoft 365 et vérifier avec l’administrateur |
| Le script ignore les dernières lignes | Plage 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ées | Boucle de suppression parcourue du haut vers le bas | Parcourir les lignes du bas vers le haut |
| Le script est très lent | Lecture ou écriture cellule par cellule dans une boucle | Lire avec getValues(), traiter en mémoire, écrire avec setValues() |
| Le script échoue dans Power Automate mais pas dans Excel | Script qui dépend de la feuille active ou de la sélection | Désigner feuilles et tableaux par leur nom, jamais par la sélection |
| Les collègues ne trouvent pas le script | Script resté dans votre OneDrive personnel | Le 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ère | Macros VBA | Office Scripts |
|---|---|---|
| Langage | Visual Basic for Applications | TypeScript (proche de JavaScript) |
| Où ça fonctionne | Excel de bureau (Windows, et en partie Mac) | Excel pour le web et Excel Microsoft 365 |
| Stockage | Dans le classeur (.xlsm) ou le classeur de macros personnelles | Dans OneDrive ou SharePoint (.osts) |
| Enregistreur d’actions | Oui | Oui |
| Événements (ouverture, modification de cellule) | Oui | Non, on passe par Power Automate |
| Formulaires utilisateur (UserForm) | Oui | Non |
| Piloter d’autres applications (Outlook, Word, fichiers Windows) | Oui | Non, directement ; oui via Power Automate |
| Automatisation planifiée sans ouvrir Excel | Difficile | Native via Power Automate |
| Sécurité | Macros souvent bloquées dans les fichiers reçus | Scripts 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 :
- 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).
- Semaine suivante : remplacer les plages fixes par des tableaux, utiliser
getValues()etsetValues(), écrire une première boucle avec une condition. - 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.
- 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.