Bonjour,
J'utilise un fichier qui dans le même principe déplombe d'autres fichiers, ce qui est pratique quand le code VBA est protégé par mot de passe.
Sinon voilà qui pourrait vous servir. (pas testé sur office 2010)
Faire sauter la protection VBA avec un editeur HEXA
http://it-bits.blogspot.com/2008/10/supprimer-la-protection-du-code-vba.html
Tout d'abord faites une copie de sauvegarde du document original. On ne sait jamais ce qu'il peut arriver.
Ouvrez le fichier XLS avec un éditeur hexadecimal (par exemple Hex Editor)
Faites un recherche sur la chaine 'DPB' et remplacer là par 'DPx'
Sauvegardez le fichier et ré-ouvrez le dans Excel
Excel va donner divers messages d'erreurs que vous pouvez ignorer et finira par ouvrir le fichier correctement
Allez dans l'éditeur de code VBA (Alt+F11) et dans les propriétés du projet VBA allez sur l'onglet 'Protection'
Changez alors le mot de passe par celui de votre choix. Attention il ne faut pas enlever la protection à ce stade mais uniquement positionner un mot de passe connu.
Sauvegardez et fermez le fichier Excel.
Vous pouvez maintenant le réouvrir et aller désactiver la protection en utilisant le mot de passe que vous avez saisi précédemment
---
Faire sauter la protection d'un classeur ou d'une feuille (voir macro ci-dessous)
http://www.vbfrance.com/codes/OTER-PROTECTION-FEUILLES-CLASSEUR-EXCEL-METHODE-SANS-ECHEC_36857.aspx
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
---
Mieux protéger son classeur (pas infaillible)
http://www.vbfrance.com/codes/PROTEGER-SOURCES-VBA_29510.aspx