VBA: Protection des feuilles en Excel trop lente?

Pourquoi la protection des Feuilles en Excel 2013 et suivants (2016, 2019, 365) prend nettement plus de temps que dans les versions précédentes?.

Cette différence n'est pas gênante lorsque vous protégez la ou les Feuilles manuellement. Mais si vous utilisez des procédures VBA pour protéger et déprotéger vos Feuilles de manière systématique (automatique et fréquente – par exemple lors de la gestion des utilisateurs), il peut s'agir d'un problème de performance assez important. Pour Si vous devez (dé)protéger une dizaine des Feuilles d'un coup, cette procédure peut facilement prendre 10-15 secondes. Pourtant, dans les versions précédentes d'Excel, cela ne prenait qu'une fraction de seconde.

Pourquoi la protection des Feuilles est-elle si lente?

Ce ralentissement est dû par une substantielle augmentation du niveau de sécurité dans Excel 2013 pour les fichiers protégés par un mot de passe. Depuis sa version 2013, Excel utilise comme algorithme de chiffrage le "SHA-512" qui est beaucoup plus sûr que l'algorithme "SHA-1" utilisé dans Excel 2010.

Ceci implique donc que vos Feuilles et vos Classeurs (verrouillés avec un mot de passe) sont nettement mieux protégés mais le prix à payer est la performance.

Exemple de code VBA pour protéger les Feuilles

Avec le code VBA suivant, vous pouvez protéger par mot de passe toutes les Feuilles dans le Classeur. Pour un classeur avec plus de 10 Feuilles, la différence du temps d'exécution de ce code entre Excel 2007/2010 et Excel 2013 (et suivants) est saisissante…

 

 

Existe-t-il une solution?

En fait, il n'y en a pasla lenteur est le prix à payer pour une meilleure protection des fichiers. Et comme il s'agit du design même d'Excel, il est impossible d'y remédier.

Ce qui reste à faire aux développeurs en Excel/VBA, c'est de revoir la conception et le fonctionnement de leurs applications. Les Feuilles doivent-elles être protégées? Est-il possible de réduire le nombre des feuilles à protéger?

Une importante remarque à la fin: les Feuilles protégées SANS mot de passe ne sont pas concernées par ce problème. Le chiffrement n'a lieu que quand vous utilisez un mot de passe.

Si vous verrouillez les Feuilles par principe ou par précaution contre une mauvaise manipulation ou un "accident fortuit", vous pouvez protéger les Feuilles sans utiliser de mot de passe. Cela devrait faire l'affaire sans problèmes de performance même en Excel 2013.

Pour cela, il suffit de supprimer l'argument Password:="MonMotDePasse" :

Pour aller plus loin en VBA

Voici quelques autres articles ici sur Excel-Malin.com qui pourraient vous intéresser…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *