Direct XLS
  Astuce Faire sauter la protection
 

Astuce :

Faire sauter la protection d'une feuille sous Excel !


Mot de passe oublié? Envie de connaitre les secret d'un tableau Excel protégé? Une simple macro et le tout devient accessible

Ouvrir l'éditeur VB (comme dans l'exemple pour Compter les couleurs)

- Onglet "Développeur", puis Icone "Visual Basic"
- Une fois arrivé sous VB, faites un clic droit sur votre classeur, "insertion", "module"  Ou sélectionnez directement le premier module que vous voyez.



- Sélectionnez le module puis collez y le code suivant :

Sub Deproteger()
    Dim A As Byte, B As Byte, C As Byte, D As Byte, E As Byte
    Dim F As Byte, G As Byte, H As Byte, I As Byte, J As Byte
    Dim K As Byte, L As Byte, M As Byte, N As Byte, O As Byte
    Dim Reponse As Byte, Temps As Variant
    Dim Cible As Object, Passe As String
  
'  Demande ce qu'il faut déprotéger.
    Reponse = MsgBox("Voulez-vous déprotéger le classeur actif ?" & vbCrLf & _
    "Si vous répondez non, c'est la feuille active qui sera déprotégée.  ", _
      vbYesNoCancel, "Déprotectionnateur")
                                      
    On Error Resume Next
'  Teste ce qu'il faut déprotéger.
    Select Case Reponse
        Case vbYes
'          Définit le classeur actif comme cible à déprotéger.
            Set Cible = ActiveWorkbook
'          Teste si le classeur est protégé.
            If Not (Cible.ProtectStructure Or Cible.ProtectWindows) Then
                MsgBox "Le classeur actif n'est pas protégé.  " & vbCrLf & _
                vbCrLf & "Andouille !", vbOKOnly, "Déprotectionnateur"
                Exit Sub
            End If
'          Teste si le classeur est protégé sans mot de passe.
            Err.Clear
            Cible.Unprotect vbNullString
            If Err = 0 Then
                MsgBox "La protection du classeur actif a été supprimée.  " _
            & vbCrLf & "Il n'y avait pas de mot de passe. Petit rigolo !",  _
              vbOKOnly, "Déprotectionnateur"
                Exit Sub
            End If
        Case vbNo
'          Définit la feuille active comme cible à déprotéger.
            Set Cible = ActiveSheet
'          Teste si la feuille est protégée (on ne teste pas UserInterfaceOnly qui ne peut être positionné que par macro
'          et n'est pas enregistré avec le classeur).
            If Not (Cible.ProtectContents Or Cible.ProtectDrawingObjects Or _
            Cible.ProtectScenarios) Then
                MsgBox "La feuille active n'est pas protégée.  " & vbCrLf & _
                vbCrLf & "Patate !", vbOKOnly, "Déprotectionnateur"
                Exit Sub
            End If
'          Teste si la feuille est protégée sans mot de passe.
            Err.Clear
            Cible.Unprotect vbNullString
            If Err = 0 Then
              MsgBox "La protection de la feuille active a été supprimée.  " _
            & vbCrLf & "Il n'y avait pas de mot de passe. Quelle burne !",  _
              vbOKOnly, "Déprotectionnateur"
              Exit Sub
            End If
        Case Else
'          Annulation demandée par l'utilisateur.
            MsgBox String(14, " ") & "Ciao !", vbOKOnly, "Déprotectionnateur"
            Exit Sub
    End Select
      
'  Note l'instant de départ.
    Temps = Timer
'  Boucles de calcul des mots de passe. On utilise ici les codes ascii des caractères "0" et "1".
    For A = 48 To 49
    For B = 48 To 49
      For C = 48 To 49
      For D = 48 To 49
        For E = 48 To 49
        For F = 48 To 49
          For G = 48 To 49
          For H = 48 To 49
            For I = 48 To 49
            For J = 48 To 49
              For K = 48 To 49
              For L = 48 To 49
                For M = 48 To 49
                For N = 48 To 49
                  For O = 48 To 49
'                      Calcule le mot de passe.
                        Passe = Chr(A) & Chr(B) & Chr(C) & Chr(D) & Chr(E) & _
                                Chr(F) & Chr(G) & Chr(H) & Chr(I) & Chr(J) & _
                                Chr(K) & Chr(L) & Chr(M) & Chr(N) & Chr(O)
'                      Essaie de déprotéger la cible.
                        Err.Clear
                        Cible.Unprotect Passe
'                      Teste si la cible est bien déprotégé.
                        If Err = 0 Then
'                          Si oui, affiche le mot de passe et sort.
                            MsgBox "La protection a été supprimée en " & _
                            Timer - Temps & " secondes.  " & vbCrLf &  _
                            "Le mot de passe équivalent trouvé est :" & _
                            vbCrLf & vbCrLf & String(28, " ") & Passe, _
                            vbOKOnly, "Déprotectionnateur"
                            Exit Sub
                        End If
                  Next
                Next
                Next
              Next
              Next
            Next
            Next
          Next
          Next
        Next
        Next
      Next
      Next
    Next
    Next
'  Message impossible à atteindre.
    MsgBox "Mot de passe introuvable." & vbCrLf & vbCrLf & _
            "C'est pas normal !!!", vbOKOnly, "Déprotectionnateur"
  
End Sub



Une fois terminé, revenez à votre feuille de calcul protégée.
- Onglet "Affichage", puis Icone "Macro"
- Choisissez "Afficher les macros" puis exécuter la macro créée (Déproteger)

Votre feuille est dévérouillée





Nous serons heureux d'avoir votre avis sur cette astuce, et de pouvoir éventuellement la compléter grâce à vos interrogations. N'hésitez pas à laisser un commentaire.

 
   
 
Ce site web a été créé gratuitement avec Ma-page.fr. Tu veux aussi ton propre site web ?
S'inscrire gratuitement