Protéger et sécuriser un classeur Excel : toutes les options
La sécurisation d'un classeur Excel est rarement une priorité... jusqu'au jour où un utilisateur écrase vos formules critiques ou modifie une structure de données que vous aviez mise des semaines à bâtir. Sur des projets industriels complexes, la protection n'est pas une option : c'est une nécessité.
Dans cet article, je vous présente les différentes couches de protection disponibles dans Excel, leurs forces, leurs faiblesses, et surtout comment les mettre en œuvre efficacement en VBA. Parce que oui, protéger manuellement 50 feuilles avec des paramètres spécifiques n'est pas une option viable.
Les niveaux de protection disponibles
Excel propose quatre niveaux de protection distincts, chacun répondant à un besoin spécifique :
Protection de la structure du classeur : empêche l'ajout, la suppression ou le renommage des feuilles. Utile quand votre architecture de classeur est figée et que toute modification casserait vos macros ou vos références.
Protection des feuilles : le niveau le plus utilisé. Permet de verrouiller les cellules tout en autorisant des actions spécifiques (tri, filtrage, insertion de lignes...). C'est votre première ligne de défense contre les modifications accidentelles.
Protection du projet VBA : protège votre code source par mot de passe. Indispensable si vous livrez des outils à des clients sans vouloir exposer votre propriété intellectuelle.
Chiffrement du fichier : impose un mot de passe à l'ouverture du classeur. La seule protection réellement robuste contre l'accès non autorisé, car elle chiffre l'intégralité du fichier.
Protéger les feuilles intelligemment
La protection de feuille basique est triviale. Ce qui fait la différence, c'est de configurer finement ce qui reste autorisé. Voici comment automatiser la protection de plusieurs feuilles avec des paramètres cohérents :
VBAOption Explicit Public Sub ProtegerFeuillesAvecOptions() On Error GoTo ErrHandler Dim ws As Worksheet Dim strMotDePasse As String strMotDePasse = "MonMotDePasseSecurise123" For Each ws In ThisWorkbook.Worksheets ' Déprotéger si déjà protégé If ws.ProtectContents Then ws.Unprotect Password:=strMotDePasse End If ' Protection avec options fines ws.Protect Password:=strMotDePasse, _ DrawingObjects:=True, _ Contents:=True, _ Scenarios:=True, _ UserInterfaceOnly:=True, _ AllowFormattingCells:=False, _ AllowFormattingColumns:=False, _ AllowFormattingRows:=False, _ AllowInsertingColumns:=False, _ AllowInsertingRows:=True, _ AllowInsertingHyperlinks:=False, _ AllowDeletingColumns:=False, _ AllowDeletingRows:=True, _ AllowSorting:=True, _ AllowFiltering:=True, _ AllowUsingPivotTables:=True ' Réactiver les macros malgré la protection ws.EnableOutlining = True Next ws ExitHandler: Set ws = Nothing Exit Sub ErrHandler: MsgBox "Erreur lors de la protection : " & Err.Description, vbCritical Resume ExitHandler End Sub
Le paramètre UserInterfaceOnly:=True est capital : il permet à vos macros de modifier les cellules protégées tout en empêchant l'utilisateur de le faire manuellement. Sans ce paramètre, vos propres macros seront bloquées.
Verrouiller la structure et le projet VBA
Pour un classeur destiné à la production, verrouillez également la structure et votre code :
VBAOption Explicit Public Function SecuriserClasseurComplet(strMotDePasse As String) As Boolean On Error GoTo ErrHandler Dim wb As Workbook Set wb = ThisWorkbook ' Protection de la structure du classeur wb.Protect Password:=strMotDePasse, _ Structure:=True, _ Windows:=False ' Le projet VBA se protège via l'interface ou l'objet VBProject ' Attention : VBProject nécessite l'autorisation d'accès au modèle objet VBA ' (Fichier > Options > Centre de gestion de la confidentialité) With wb.VBProject .Protection.Lock = False .Protection.Lock = True .Protection.SetPassword strMotDePasse End With SecuriserClasseurComplet = True ExitHandler: Set wb = Nothing Exit Function ErrHandler: SecuriserClasseurComplet = False Resume ExitHandler End Function
Attention : manipuler VBProject nécessite d'activer "Faire confiance au projet VBA" dans les options Excel. Sur des postes verrouillés en entreprise, cette option n'est pas toujours accessible.
Les limites à connaître
Soyons clairs : aucune protection par mot de passe dans Excel n'est inviolable. Des outils gratuits en ligne peuvent cracker les mots de passe de feuilles ou de structure en quelques secondes. Ces protections ne sont efficaces que contre les modifications accidentelles ou les utilisateurs non techniques.
Le seul vrai rempart, c'est le chiffrement du fichier complet (Fichier > Informations > Protéger le classeur > Chiffrer avec mot de passe). Même là, un mot de passe faible reste vulnérable aux attaques par force brute.
Pour des données réellement sensibles, privilégiez une architecture où Excel n'est qu'une interface, les données critiques étant stockées en base de données avec une gestion des droits au niveau serveur.
Conclusion
Protéger un classeur Excel, c'est comme verrouiller une maison : ça n'arrêtera pas un cambrioleur déterminé, mais ça découragera les opportunistes et évitera les accidents. Automatisez la protection via VBA, utilisez des paramètres cohérents, et pour les données sensibles, ne comptez pas uniquement sur Excel.