Aller au contenu
OneKitly

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

Daniel OkonkwoDéveloppeur front-end et rédacteur Tech chez OneKitly

Performance web · Formats de fichiers

Vérifié à partir de 4 sources

Voir le profil
En bref

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.

Les quatre formats sur des critères identiques, mesurés sur le même classeur d'essai de 201 lignes
FormatCe qu'est réellement le fichierS'ouvre renommé en .zipPeut contenir des macrosTaille, feuille de 201 lignesÀ choisir quand
XLSFichier composé OLE2, binaire d'avant 2007NonOui, sous forme de flux binaire17 408 octetsNe jamais l'écrire. Le lire, le convertir, archiver l'original
XLSXZIP de parties XML (ECMA-376)Oui — 10 membres dans le fichier d'essaiNon, par conception44 343 octetsToujours, sauf si une ligne ci-dessous s'applique
XLSMLe même ZIP, avec xl/vbaProject.bin autoriséOui — les mêmes 10 membresOui — c'est la seule différence44 321 octetsLe classeur doit exécuter du code, et tu lui fais confiance
XLSBLe même ZIP avec des parties .bin au lieu de .xmlOui — workbook.bin, sheet1.bin, styles.binOui28 505 octetsDes millions de cellules, Excel seulement, une seule organisation
ODSZIP de parties ODF, le format natif de LibreOfficeOui — content.xml, styles.xml, mimetypeOui, dans son propre modèle de script94 890 octetsTon organisation impose des formats ouverts
XLS en XLSXConvertis un ancien classeur .xls au format .xlsx moderne, dans ton navigateur.Essayer l'outil

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
ExplicationConvertir les formules en valeurs garde la réponse en cache, pas le calculUn fichier de tableur range à la fois la formule et la dernière réponse calculée par Excel. Retirer la formule laisse la réponse enregistrée — et laisse un vide partout où le fichier n'en portait pas.ExplicationLe nombre 1 et le texte « 1 » ne sont pas des doublonsLe dédoublonnage compare des lignes entières à l'identique, type de cellule compris. Cinq lignes d'apparence identique en ont donné trois : l'une portait un nombre, l'autre une chaîne, la troisième une chaîne précédée d'une espace.ExplicationPourquoi ton CSV casse les accents et les dates dans ExcelTrois pannes totalement différentes se cachent derrière la même phrase. L'une est l'encodage, l'autre le séparateur, la troisième Excel qui devine des types en ouvrant le fichier — et le remède diffère pour chacune. Voici comment les distinguer en cinq secondes.ComparatifZIP ou TAR : lequel choisir, et pourquoi cela change toutUne seule différence de structure explique tout le reste : TAR ne compresse pas, il empile ; ZIP compresse chaque fichier séparément. Mesuré sur 60 petits fichiers source, cela fait 1 809 octets contre 14 686.TutorielNuméroter un PDF quand les pages sont pivotées ou de formats différentsNuméroter un document bien rangé est trivial. Ce qui mord, c'est une page couchée, une feuille Letter au milieu de A4, un fichier d'impression avec fond perdu, et un document qui imprime déjà son propre numéro. Les quatre ont été testés : sur les trois premiers le numéro se pose exactement où tu l'as demandé, et le quatrième n'est pas détecté du tout.GuideCe qu'un PDF dit de toi : lire et effacer ses métadonnéesUn PDF porte ses métadonnées deux fois, dans deux magasins qui peuvent raconter des histoires différentes, et aucun des deux n'est l'histoire complète. Voici ce qui est réellement dans le fichier, ce qu'un effacement retire, et les deux choses qui survivent à tout nettoyage.

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 ?