XLS, XLSX, XLSM et XLSB : lequel est lequel, et lequel te faut-il
Publié le 19/08/2026 · 12 min de lecture · Outils fichiers
Daniel Okonkwo — Développeur front-end et rédacteur Tech chez OneKitly
Performance web · Formats de fichiers
Vérifié à partir de 4 sources
Prends XLSX sauf raison précise de faire autrement. Prends XLSM seulement si le classeur doit exécuter des macros. Prends XLSB seulement si le fichier est très gros et reste dans une seule organisation sous Excel. Lis le XLS, ne l'écris jamais. Voici le fait qui rend tout cela cohérent : XLSX, XLSM et XLSB sont la même chose — une archive ZIP de parties. Renomme l'un d'eux en .zip et ton gestionnaire de fichiers l'ouvre. Le classeur d'essai de 201 lignes utilisé pour cet article, écrit en .xlsx, est un ZIP de dix membres : xl/workbook.xml, xl/worksheets/sheet1.xml, xl/styles.xml, [Content_Types].xml et six autres. Enregistré en .xlsb, le même paquet contient xl/workbook.bin et xl/worksheets/sheet1.bin à la place — conteneur identique, parties binaires au lieu de XML. Un XLSM est un XLSX à l'octet près, plus le droit de porter xl/vbaProject.bin. XLS est l'intrus : il commence par D0 CF 11 E0 A1 B1 1A E1, un fichier composé OLE2 d'avant 2007, et le renommer en .zip ne donne rien. Les écarts de taille sont réels mais plus faibles que la légende. La même feuille de 201 lignes fait 17 408 octets en .xls, 44 343 en .xlsx, 44 321 en .xlsm, 28 505 en .xlsb. L'échelle change le tableau : à 25 000 lignes sur 5 colonnes, le .xlsx pèse 5 031 220 octets et se lit en 562 ms, le .xlsb 3 780 567 octets et 234 ms — un quart plus léger, lu deux fois plus vite. Un avertissement avant de convertir : cet outil écrit du .xlsx, et le .xlsx ne peut pas porter de macros. Convertir un XLSM les supprime, sans rien dire.
Quatre extensions, dont trois sont la même boîte avec des couvercles différents. Renomme un XLSX en .zip et il s'ouvre — ce seul fait explique toute la famille, et explique pourquoi XLS, qui ne s'ouvre pas ainsi, reste celui qui pose problème.
Le fait qui explique toute la famille : renomme-le en .zip
Prends une copie de n'importe quel .xlsx, change l'extension en .zip et double-clique. Il s'ouvre. À l'intérieur, une arborescence : [Content_Types].xml déclare ce qu'est chaque partie, _rels/.rels dit comment les parties se désignent entre elles, xl/workbook.xml liste les feuilles, xl/worksheets/sheet1.xml contient les cellules, xl/styles.xml la mise en forme. Le fichier d'essai de cet article comptait exactement dix membres de ce genre. Voilà toute la conception : un classeur est un paquet compressé de petits documents XML, normalisé sous le nom ECMA-376 puis ISO/IEC 29500.
Une fois cela vu, le reste de la famille cesse d'être un mystère. XLSM est le même ZIP avec une partie de plus autorisée à l'intérieur — xl/vbaProject.bin, le projet de macros compilé — et un type de contenu qui prévient Excel qu'il faut s'y attendre. XLSB est encore le même ZIP, chaque partie XML étant remplacée par un flux d'enregistrements binaires : dans le fichier d'essai, xl/workbook.xml est devenu xl/workbook.bin, xl/worksheets/sheet1.xml est devenu sheet1.bin, xl/styles.xml est devenu styles.bin. Même conteneur, même agencement, encodage différent du contenu.
XLS refuse l'astuce, et ce refus est justement le sujet. Ses huit premiers octets sont D0 CF 11 E0 A1 B1 1A E1 — la signature d'un fichier composé OLE2, un petit système de fichiers dans un fichier que Microsoft utilisait pour les documents Office avant 2007. Pas de ZIP, pas de XML, rien qu'un outil moderne puisse parcourir sans analyseur dédié. Tout ce qui est pénible avec XLS découle de là : c'est un objet d'une autre nature portant le nom d'un tableur.
Pourquoi une organisation qui reçoit encore des XLS a un vrai problème
Le problème n'est pas la nostalgie, c'est la surface d'attaque. Lire un XLS, c'est faire tourner un analyseur binaire écrit à la main sur des octets non fiables : se placer dans un flux, lire un type d'enregistrement, lire une longueur, faire confiance à cette longueur. Cette forme de code a produit une longue série d'avis de corruption mémoire dans Office sur deux décennies, et c'est pourquoi Microsoft livre des paramètres de blocage de fichiers permettant à un administrateur de refuser purement et simplement les formats binaires hérités, et pourquoi les macros des fichiers venus d'Internet sont bloquées par défaut plutôt que simplement signalées.
Le second problème est plus discret et coûte plus cher : XLS plafonne à 65 536 lignes et 256 colonnes. Un export moderne qui dépasse l'une ou l'autre est tronqué plutôt que refusé, et un rapport tronqué ressemble exactement à un rapport complet. Si un processus quelque part chez toi produit encore du .xls, c'est cela qu'il faut vérifier en premier, avant même la question de sécurité.
La solution n'est pas d'interdire l'extension, ce qui ne fait que déplacer le fichier vers une pièce jointe que personne ne journalise. La solution, c'est de convertir à l'arrivée et de garder l'original quelque part en lecture seule. C'est à cela que sert le convertisseur de cette page : il lit XLS, XLSX, XLSM, XLSB, ODS et Apple Numbers, et il écrit du XLSX. Une seule sortie, toujours, dans ton navigateur, sans rien téléverser.
XLSM, et ce que ce convertisseur ne te dira pas
XLSM existe pour une seule raison : le XLSX n'a pas le droit de contenir des macros, donc un classeur qui exécute du code a besoin d'un autre type de contenu et d'une autre extension. Cette séparation est délibérée et c'est une bonne conception — le nom du fichier suffit à savoir si un tableur peut exécuter quelque chose, avant de l'ouvrir.
Ce qui nous amène à ce qu'a montré l'exécution du convertisseur. Un classeur a été fabriqué pour l'essai, portant réellement xl/vbaProject.bin, déclaré dans [Content_Types].xml exactement comme Excel le déclare. L'outil l'a lu sans broncher. Le projet de macros n'a survécu ni d'un côté ni de l'autre : le lecteur ne le réclame jamais, il est donc écarté avant même le début de la conversion, et le .xlsx produit ne contient aucune partie VBA — les dix membres de la sortie ont été vérifiés un à un. Donc : convertir un XLSM ici donne un tableur qui fonctionne avec le code retiré, et aucun message ne le dit.
C'est souvent exactement ce qu'on veut. Retirer les macros d'un classeur arrivé par courriel est un geste d'hygiène raisonnable, et le moyen le plus sûr est de convertir en XLSX et de garder le résultat. C'est une catastrophe si les macros étaient l'essentiel — un modèle mensuel bâti en 2011 par quelqu'un de la compta et que personne n'a relu depuis. Sache dans quel cas tu es avant d'appuyer, et garde l'original dans les deux cas.
Quand XLSB vaut son incompatibilité
Sur une petite feuille, XLSB n'apporte presque rien. Le fichier d'essai de 201 lignes faisait 44 343 octets en .xlsx et 28 505 en .xlsb, et aucun des deux n'a mis un temps mesurable à s'ouvrir. À 25 000 lignes sur 5 colonnes, l'écart devient un argument : 5 031 220 octets contre 3 780 567, et 562 millisecondes d'analyse contre 234. Voilà tout le dossier XLSB, et il est réel — un quart de moins sur le disque et moins de la moitié du temps de lecture, parce qu'on donne des nombres à l'analyseur au lieu d'un document texte qu'il doit découper.
Le prix, c'est la portabilité, et il est élevé. XLSB est un format de parties binaires de Microsoft : la spécification est publiée, mais chaque outil qui le lit a dû l'implémenter séparément, et la prise en charge hors d'Excel est plus lacunaire et plus tardive que pour XLSX. Les aperçus web, les clients de messagerie, les logiciels de statistiques et la moitié des bibliothèques de script du monde ouvriront un XLSX et buteront sur un XLSB. Une autre surprise mesurée : écrire le XLSB de 25 000 lignes avec la même bibliothèque a pris 21 secondes contre une demi-seconde pour le XLSX. C'est une propriété de ce rédacteur-là plus que du format, mais cela rappelle que le côté rapide de XLSB est le côté lecture.
La règle est donc étroite. Prends XLSB quand le fichier se mesure en millions de cellules, reste dans une seule organisation, ne s'ouvre que dans Excel, et que les secondes gagnées à chaque ouverture valent quelque chose pour quelqu'un. Tout le reste, c'est XLSX — y compris tout ce que tu enverras à une personne dont tu ne maîtrises pas le logiciel.
Ce que le convertisseur a gardé, et ce qu'il n'a pas gardé
La feuille d'essai portait 200 formules dans sa dernière colonne et une colonne de dates, et chacun des cinq formats est passé par le chemin lecture-écriture de l'outil lui-même. Lignes : 201 sur 201, à chaque fois. Dates : conservées comme dates, pas comme numéros de série, dans les cinq. Formules : 200 sur 200 conservées depuis XLSX, XLSM et ODS. Zéro depuis XLSB et zéro depuis XLS — les valeurs sont arrivées, les calculs non.
Cette dernière ligne mérite une note honnête. Les fichiers d'essai XLS et XLSB ont été écrits par la bibliothèque même qui les a relus, et ses rédacteurs pour ces deux formats stockent la valeur en cache sans la formule. La mesure prouve donc que l'aller-retour est destructeur ; elle ne prouve pas qu'un XLS réellement écrit par Excel perdrait ses formules à l'entrée. Le conseil pratique est le même dans les deux cas, et il coûte une minute : ouvre le fichier converti, clique sur une cellule censée être un calcul, et regarde la barre de formule avant de supprimer l'original.
Encore un point à connaître sur le lecteur : il demande les cellules vides. Une cellule dont la formule existe mais dont le résultat en cache est vide — fréquent dans les classeurs écrits par un générateur, ou enregistrés sans recalcul — serait sinon jetée entièrement, formule comprise. C'est parce que ces cellules sont conservées qu'un fichier converti peut t'afficher une formule qui n'a jamais produit de nombre.
| Format | Ce qu'est réellement le fichier | S'ouvre renommé en .zip | Peut contenir des macros | Taille, feuille de 201 lignes | À choisir quand |
|---|---|---|---|---|---|
| XLS | Fichier composé OLE2, binaire d'avant 2007 | Non | Oui, sous forme de flux binaire | 17 408 octets | Ne jamais l'écrire. Le lire, le convertir, archiver l'original |
| XLSX | ZIP de parties XML (ECMA-376) | Oui — 10 membres dans le fichier d'essai | Non, par conception | 44 343 octets | Toujours, sauf si une ligne ci-dessous s'applique |
| XLSM | Le même ZIP, avec xl/vbaProject.bin autorisé | Oui — les mêmes 10 membres | Oui — c'est la seule différence | 44 321 octets | Le classeur doit exécuter du code, et tu lui fais confiance |
| XLSB | Le même ZIP avec des parties .bin au lieu de .xml | Oui — workbook.bin, sheet1.bin, styles.bin | Oui | 28 505 octets | Des millions de cellules, Excel seulement, une seule organisation |
| ODS | ZIP de parties ODF, le format natif de LibreOffice | Oui — content.xml, styles.xml, mimetype | Oui, dans son propre modèle de script | 94 890 octets | Ton organisation impose des formats ouverts |
Questions fréquentes
- Puis-je simplement renommer un XLS en XLSX ?
- Non, et c'est la façon la plus courante de perdre un fichier. L'extension est une étiquette ; les octets en dessous forment un fichier composé OLE2, pas un ZIP. Excel le remarque en général et refuse, ou ouvre avec un avertissement disant que l'extension ne correspond pas au contenu. Tout logiciel moins indulgent renvoie simplement une erreur. Le renommage ne marche qu'entre XLSX, XLSM et XLSB, qui sont réellement le même conteneur — et même là tu mens au type de contenu, ce qui crée ses propres ennuis. Convertis plutôt.
- Convertir mon XLSM en XLSX va-t-il le casser ?
- Cela cassera les macros et rien d'autre. Les cellules, les formules, la mise en forme et les noms de feuilles passent ; le projet VBA compilé, non, parce que le XLSX n'a nulle part où le mettre. Vérifié sur un classeur fabriqué exprès pour porter xl/vbaProject.bin — la sortie ne contenait aucune partie VBA, et aucun avertissement n'a été affiché. Si les macros sont porteuses, garde le XLSM et ne convertis qu'une copie. Si elles sont indésirables, c'est la façon la plus propre de les retirer.
- XLSB est-il vraiment plus rapide, ou est-ce une légende ?
- Réel, mais seulement à grande échelle, et seulement en lecture. Sur une feuille de 201 lignes, c'est 28 505 octets contre 44 343 et aucun des deux ne met un temps mesurable à s'ouvrir. À 25 000 lignes sur 5 colonnes, c'est 3 780 567 octets contre 5 031 220, et 234 millisecondes d'analyse contre 562 — un quart plus petit, lu en moins de la moitié du temps. Écrire ce même fichier, avec la bibliothèque de cet essai, donnait l'inverse : 21 secondes pour le XLSB contre une demi-seconde pour le XLSX. Juge XLSB sur la fréquence d'ouverture du fichier, pas sur sa taille dans un dossier.
- Comment savoir ce qu'est vraiment un fichier quand l'extension ment ?
- Regarde les premiers octets. 50 4B — les caractères PK — signifie un ZIP, donc XLSX, XLSM, XLSB, ODS ou une simple archive. D0 CF 11 E0 A1 B1 1A E1 signifie un fichier composé OLE2 : XLS, DOC, PPT ou un vieux MSI. Du texte brut avec des virgules ou des points-virgules et aucune signature, c'est un CSV que quelqu'un a renommé. Sur macOS et Linux, la commande `file` dit tout cela en une ligne ; sous Windows, n'importe quel visualiseur hexadécimal montre la première rangée. C'est aussi ainsi que le convertisseur de cette page décide de ce qu'on lui a donné, au lieu de croire le nom.
- Le convertisseur téléverse-t-il mon classeur quelque part ?
- Non. Toute la conversion tourne dans ton navigateur : la bibliothèque de tableur est chargée une fois, le fichier est lu depuis ton disque vers la mémoire, et le nouveau classeur est réécrit sous forme de téléchargement. Rien ne quitte la machine, ce qui est exactement ce qu'il faut pour le cas dont parle vraiment cette page — un vieux classeur plein de noms, de salaires ou de dossiers clients qu'on préfère ne pas déposer sur le serveur d'un inconnu juste pour changer d'extension.
Articles qui pourraient t'intéresser
Tous les guides →Outils similaires
Ceci décrit ce que font aujourd'hui ces convertisseurs, vérifié en exécutant leur propre code sur de vrais fichiers, et non ce qu'ils devraient faire. Le comportement d'un format dépend de la version d'Excel, de LibreOffice ou de Numbers qui a écrit le fichier et de celle qui l'ouvrira : garde donc l'original tant que tu n'as pas ouvert la copie convertie et que tu ne l'as pas regardée. Tout ce qui compte — un classeur à macros, un modèle plein de formules, un fichier dont quelqu'un d'autre dépendra — se vérifie cellule par cellule après conversion, plutôt que de se croire sur parole parce qu'une barre de progression est allée au bout.
Sources
Tu as repéré une erreur dans cet article ?