Protéger un classeur, Excel VBA

Protéger un classeur, Excel VBA

Voici une explication détaillée et un exemple de code VBA pour protéger un classeur Excel à l’aide de VBA. Je vais expliquer chaque partie du code et fournir une explication étape par étape.
Objectif :
Vous souhaitez protéger un classeur entier (y compris la structure des feuilles de calcul) à l’aide de VBA. Cela signifie :

  • Empêcher les utilisateurs d’ajouter, de supprimer ou de renommer des feuilles.
  • Protéger la structure du classeur tout en permettant aux utilisateurs d’interagir avec le contenu des feuilles de calcul.

Étapes et Code :
1. Activer la protection du classeur avec un mot de passe : Tout d’abord, nous allons écrire le code VBA pour protéger la structure du classeur. Cela garantit que les utilisateurs ne peuvent pas modifier la structure du classeur (c’est-à-dire ajouter, supprimer ou renommer des feuilles).
2. Protection par mot de passe : Vous pouvez ajouter un mot de passe optionnel pour protéger le classeur. Cela garantit que seules les personnes autorisées peuvent le déprotéger.
3. Déprotéger le classeur : Vous pouvez également écrire un code pour déprotéger le classeur en utilisant le mot de passe.
Exemple de Code

Sub ProtegerClasseur()
    ' Déclaration des variables
    Dim motDePasse As String
    ' Définir le mot de passe que vous voulez utiliser (assurez-vous de stocker ce mot de passe de manière sécurisée)
    motDePasse = "VotreMotDePasseSecurise"
    ' Protéger le classeur avec mot de passe
    ThisWorkbook.Protect Structure:=True, Windows:=False, Password:=motDePasse
    ' Informer l'utilisateur que le classeur a été protégé
    MsgBox "Le classeur est maintenant protégé.", vbInformation, "État de la protection"
End Sub
Sub DeprotegerClasseur()
    ' Déclaration des variables
    Dim motDePasse As String
    ' Définir le mot de passe que vous voulez utiliser pour déprotéger le classeur
    motDePasse = "VotreMotDePasseSecurise"
    ' Déprotéger le classeur avec le mot de passe
    On Error Resume Next ' En cas de mot de passe incorrect
    ThisWorkbook.Unprotect Password:=motDePasse
    On Error GoTo 0 ' Réinitialiser la gestion des erreurs
    ' Vérifier si le classeur est déprotégé avec succès
    If Not ThisWorkbook.ProtectStructure Then
        MsgBox "Le classeur est maintenant déprotégé.", vbInformation, "État de la protection"
    Else
        MsgBox "Échec de la déprotection du classeur. Vérifiez votre mot de passe.", vbCritical, "Erreur"
    End If
End Sub

Explication Détailée :
1. Sub ProtegerClasseur :

  • Définition d’un mot de passe : La variable motDePasse est définie sur « VotreMotDePasseSecurise » dans cet exemple. Vous pouvez remplacer cela par n’importe quel mot de passe que vous souhaitez utiliser.
  • Protection du classeur : La méthode ThisWorkbook.Protect est utilisée pour appliquer la protection à l’ensemble du classeur.
    • Structure:=True : Cela protège la structure du classeur. Les utilisateurs ne pourront pas ajouter, supprimer ou renommer des feuilles de calcul.
    • Windows:=False : Cela garantit que la fenêtre du classeur elle-même n’est pas protégée, ce qui permet à l’utilisateur de redimensionner ou de déplacer la fenêtre.
    • Password:=motDePasse : Ce paramètre spécifie le mot de passe nécessaire pour déprotéger le classeur.
  • Message d’information : Une boîte de message apparaît pour informer l’utilisateur que le classeur est maintenant protégé.

2. Sub DeprotegerClasseur :

  • Définition d’un mot de passe : La variable motDePasse est à nouveau définie sur « VotreMotDePasseSecurise » pour permettre la déprotection.
  • Déprotection du classeur : La méthode ThisWorkbook.Unprotect est utilisée pour retirer la protection. Le paramètre Password:=motDePasse garantit que seul le bon mot de passe pourra déprotéger le classeur.
  • Gestion des erreurs : La commande On Error Resume Next est utilisée pour ignorer les erreurs si le mot de passe est incorrect. Après avoir tenté de déprotéger, On Error GoTo 0 rétablit la gestion des erreurs par défaut. Si le classeur est correctement déprotégé, un message de confirmation apparaît.

3. Gestion du mot de passe incorrect :

  • Après avoir tenté de déprotéger, le code vérifie si la protection de la structure du classeur est toujours active en utilisant la propriété ThisWorkbook.ProtectStructure. Si la protection est toujours activée, cela signifie que le mot de passe était incorrect.

Remarques :

  • Sécurité du mot de passe :
  • Bien que cette méthode fonctionne pour une protection de base, il est important de noter que stocker des mots de passe directement dans le code n’est pas la méthode la plus sécurisée. Dans des environnements de production, il est préférable d’utiliser d’autres moyens pour stocker les mots de passe de manière sécurisée (comme un stockage chiffré).
  • Les utilisateurs avancés peuvent contourner cette protection s’ils savent comment cracker ou récupérer le mot de passe dans le code.
  • Limitations :
  • La méthode ThisWorkbook.Protect protège uniquement la structure du classeur. Elle ne protège pas le contenu des feuilles de calcul elles-mêmes. Si vous souhaitez protéger des cellules ou des plages spécifiques, vous devrez appliquer la protection des feuilles séparément (en utilisant ActiveSheet.Protect pour chaque feuille).
  • Cette protection n’est pas infaillible et est destinée à un usage de base. Elle peut être contournée par ceux qui connaissent la méthode ou disposent des outils nécessaires.

Considérations supplémentaires :
Vous pouvez étendre ce code pour :

  • Protéger des feuilles individuelles à l’intérieur du classeur.
  • Protéger des plages spécifiques de cellules (par exemple, permettre aux utilisateurs de modifier seulement certaines plages).
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x