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…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub ProtegerToutesLesFeuilles() 'par Excel-Malin.com ( https://excel-malin.com ) On Error GoTo Erreur Dim Feuille As Worksheet For Each Feuille In Worksheets Feuille.Protect Password:="MonMotDePasse" Next Feuille Exit Sub Erreur: MsgBox "Une erreur est survenue..." End Sub |
Existe-t-il une solution?
En fait, il n'y en a pas – la 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"
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub ProtegerToutesLesFeuilles() 'par Excel-Malin.com ( https://excel-malin.com ) On Error GoTo Erreur Dim Feuille As Worksheet For Each Feuille In Worksheets Feuille.Protect Next Feuille Exit Sub Erreur: MsgBox "Une erreur est survenue..." End Sub |
Pour aller plus loin en VBA
Voici quelques autres articles ici sur Excel-Malin.com qui pourraient vous intéresser…
- Visibilité des Feuilles en Excel
- Trier les feuilles par ordre alphabétique
- Et au cas où… XLSheetUnlocker: déverrouillage de Feuilles
- Comment utiliser RECHERCHEV en VBA? (tutoriel)
- Envoyer un email avec VBA à partir d'Excel
- et pour terminer, les Outils Excels gratuits à télécharger