Quand faut-il utiliser les formats xlsm ou xlsb?

106

Depuis Excel 2007, Microsoft a divisé le classique .xlsformat à plusieurs formats (en particulier .xlsx, .xlsm, .xlsb). Je n'ai aucun problème pour comprendre l'utilisation et le but du .xlsxformat, mais je me demande toujours si nous devrions utiliser un .xlsmou un .xlsbformat lors de la création d'un fichier contenant du VBA.

Bien sûr, vous pouvez trouver des sujets sur le Web, par exemple:

Ce que j'ai compris de ce dernier lien, c'est qu'il .xlsms'agit d'une sorte de format XML et donc nécessaire pour l'onglet ruban personnalisé.

Au-delà de la différence conceptuelle entre le format ( .xlsmbasé sur XML VS .xlsbest un fichier binaire ), y a-t-il une différence pratique lors de l'utilisation de l'un de ces fichiers (en dehors de la personnalisation du ruban)?
Avez-vous déjà constaté une réelle différence lors de l'utilisation de l'un de ces formats?

JMax
la source
3
xlsb est généralement plus petit que xlsm
Charles Williams
Quelques informations utiles ici - analystcave.com
Chris
1
Pour une raison quelconque, l'utilisation de .xlsb sur .xlsm a résolu certains problèmes que nous avions avec une fonction définie par l'utilisateur créant des objets fantômes dans le modèle d'objet: superuser.com/questions/1005482/…
SuMau

Réponses:

62

Ils sont tous similaires en ce qu'ils sont essentiellement des fichiers zip contenant les composants de fichier réels. Vous pouvez voir le contenu simplement en remplaçant l'extension par .zip et en les ouvrant. La différence avec xlsb semble être que les composants ne sont pas basés sur XML mais sont dans un format binaire: cela est censé être bénéfique lorsque vous travaillez avec de gros fichiers.

https://blogs.msdn.microsoft.com/dmahugh/2006/08/22/new-binary-file-format-for-spreadsheets/

Tim Williams
la source
Les fichiers .xls étaient au format binaire. Les fichiers .xlsb conservent ce format binaire pour les versions Office les plus récentes. Le stockage des données au format binaire présente à la fois une différence de taille et un avantage de vitesse, même si les améliorations ne seront notées que dans les fichiers TRÈS volumineux.
music2myear
90

.xlsxcharge 4 fois plus longtemps .xlsbet économise 2 fois plus longtemps et a 1,5 fois un fichier plus gros. J'ai testé cela sur une feuille de calcul générée avec 10'000 lignes * 1'000 colonnes = 10'000'000 (10 ^ 7) cellules de =…+1formules chaînées simples :

╭──────────────╥────────┬────────╮
│              ║ .xlsx  │ .xlsb  │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s   │  43s   │
├──────────────╫────────┼────────┤
│ saving time  ║ 115s   │  61s   │
├──────────────╫────────┼────────┤
│ file size    ║  91 MB │  65 MB │
╰──────────────╨────────┴────────╯

(Matériel: Core2Duo 2,3 GHz, 4 Go de RAM, 5,400 tr / min SATA II HD; Windows 7, sous une charge quelque peu lourde d'autres processus.)

À côté de cela, il ne devrait y avoir aucune différence. Plus précisément,

les deux formats prennent en charge exactement le même ensemble de fonctionnalités

cite ce blog post de 2006-08-29. Alors peut-être que les informations qui .xlsbne prennent pas en charge le code du ruban sont plus récentes que la citation supérieure, mais je pense que votre source de forum est tout simplement fausse. Lorsque vous ouvrez le fichier binaire, il semble imiter de manière condensée la structure du fichier OOXML 1-to-1: article de blog du 07/08/2006

Aaron Thoma
la source
2
un seul essai, aucun ministat (1) ne résultera cependant: - \
Good Person
2
Je confirme qu'un de mes fichiers avec un ruban personnalisé fonctionne très bien dans xlsb.
David G
5
@PatrickLepelletier .xlsxest comme .xlsm, uniquement avec les macros désactivées. Les deux sont basés sur XML. Contrairement à cela, .xlsbest binaire. Donc, vous devriez lire la question comme "{.xlsx / .xlsm} contre .xlsb". (Il n'y a pas de version macro-désactivée du binaire .xlsb.)
Aaron Thoma
4
Si xlsb est meilleur, pourquoi xlsx est-il la valeur par défaut? Il doit y avoir un inconvénient à xlsb?
PProteus
3
@PProteus, mettre simplement xlsb est meilleur dans un domaine spécifique. L'idée même de l'introduction de la norme XML était d'être plus transparente, rendant les fichiers plus portables et la manipulation des fichiers plus facile. Désormais, des outils tiers peuvent lire / écrire correctement des fichiers Excel (je sais, ils pourraient le faire avec une certaine ingénierie inverse, mais c'était sujet aux erreurs). D'un autre côté, l'utilisation de gros fichiers Excel n'est vraiment pas une utilisation principale d'Excel, de sorte que le compromis pour être plus portable est minime. En outre, l'utilisation d'un fichier non macro augmente la sécurité dans une certaine mesure. À titre de comparaison, pourquoi s'embêter avec Java si Assembler est meilleur?
Ister
9

On pourrait penser que xlsb n'a que des avantages par rapport à xlsm. Le fait que xlsm soit basé sur XML et que xlsb soit binaire est que lorsque la corruption de classeur se produit, vous avez de meilleures chances de réparer un xlsm qu'un xlsb.

Felipe Costa Gualberto
la source
1
Si c'est vrai, le xlsm est celui qu'il me faut. J'ai été maudit avec des fichiers Excel corrompus depuis le milieu des années 90. C'était presque suffisant pour me pousser à creuser des fossés pour gagner ma vie. Office 2000 était la première version avec la fonctionnalité de récupération de fichiers. But I Don
riderBill
Les extensions de fichier XLSX et XLSM sont beaucoup, beaucoup plus stables que l'extension de fichier Excel XLS antérieure à 2007.
Felipe Costa Gualberto
8

Juste pour la postérité, voici le texte de plusieurs sources externes concernant les formats de fichiers Excel. Certains d'entre eux ont été mentionnés dans d'autres réponses à cette question mais sans en reproduire l'essentiel.

1. De Doug Mahugh, le 22 août 2006 :

... le nouveau format binaire XLSB. Comme Open XML, il s'agit d'un format de fichier de haute fidélité qui peut stocker tout ce que vous pouvez créer dans Excel, mais le format XLSB est optimisé pour des performances qui ne sont pas possibles avec un format XML pur.

Le format XLSB (également parfois appelé BIFF12, comme dans le «format de fichier binaire pour Office 12») utilise la même convention Open Packaging que celle utilisée par les formats Open XML et XPS. Il s'agit donc essentiellement d'un conteneur ZIP, et vous pouvez l'ouvrir avec n'importe quel outil ZIP pour voir ce qu'il contient. Mais au lieu de parties .XML dans le package, vous trouverez des parties .BIN ...

Cet article fait également référence à la documentation sur le format BIN , trop longue pour être reproduite ici.

2. D'après MSDN Archive, 29 août 2006, qui à son tour cite un article de blog déjà manquant concernant le format XLSB:

Même si nous avons fait beaucoup de travail pour nous assurer que nos formats XML s'ouvrent rapidement et efficacement, ce format binaire est toujours plus efficace pour Excel à ouvrir et à enregistrer, et peut conduire à des améliorations de performances pour les classeurs contenant beaucoup de données, ou cela nécessiterait beaucoup d'analyse XML pendant le processus d'ouverture. (En fait, nous avons constaté que le nouveau format binaire est plus rapide que l'ancien format XLS dans de nombreux cas.) De plus, il n'y a pas de version sans macro de ce format de fichier - tous les fichiers XLSB peuvent contenir des macros (VBA et XLM) . À tous autres égards, il est fonctionnellement équivalent au format de fichier XML ci-dessus:

Taille de fichier - la taille de fichier des deux formats est à peu près la même, puisque les deux formats sont enregistrés sur le disque à l'aide de la compression zip Architecture - les deux formats utilisent la même structure d'empaquetage et les deux ont les mêmes structures au niveau de la partie. Prise en charge des fonctionnalités - les deux formats prennent en charge exactement le même ensemble de fonctionnalités Performances d'exécution - une fois chargé en mémoire, le format de fichier n'a aucun effet sur la vitesse d'application / de calcul Convertisseurs - les deux formats auront un support de convertisseur identique

UuDdLrLrSs
la source
5

Le format XLSB est également dédié aux macros intégrées dans un fichier de classeur caché situé dans le dossier de démarrage Excel (XLSTART).

Un test rapide et sale avec un xlsm ou xlsb dans le dossier XLSTART:

Measure-Command { $x = New-Object -com Excel.Application ;$x.Visible = $True ; $x.Quit() }

0,89s avec un xlsb (binaire) versus 1,3s avec le même contenu au format xlsm (xml dans un fichier zip) ... :)

Alexis-Emmanuel Haeringer
la source