Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

OTER LES PROTECTION DE FEUILLES ET CLASSEUR EXCEL. MÉTHODE SANS ÉCHEC.


Information sur la source

Catégorie :VBA Classé sous : excel, deprotection, macro, vba Niveau : Initié Date de création : 02/04/2006 Date de mise à jour : 03/04/2006 02:37:47 Vu / téléchargé: 47 956 / 3 884

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

Description

Cette macro supprime les protection du classeur actif ou de la feuille active et fournit un mot de passe équivalent.
La méthode est basé sur l'algorithme de hachage de Microsoft et trouve obligatoirement un mot de passe.
La macro contient tous les commentaires explicatifs.
Cette macro est postée pour éclaircir  celle proposée par Granddebutant sur le forum  le 03/07/2002 et répondre aux questions posées (enfin j'espère !).

Activez la feuille ou le classeur à déprotéger et lancez la macro.

 

Source

  • Attribute VB_Name = "Deprotection"
  • '
  • 'Déprotection sans échec du classeur ou de la feuille Excel avec extraction de mot de passe.
  • '
  • 'Auteur : CHEPAKOIDIR
  • '
  • 'PRINCIPE :
  • 'Excel ne mémorise pas le mot de passe mais une clé sur 15 bits calculée à partir de ce mot de passe.
  • 'Il y a donc 2^15 = 32768 possibilités de clés (de 0 à 32767) en tout et pour tout (c'est dire la fiabilité !).
  • 'Il existe ainsi des milliards de mots de passe qui donnent la même clé. Ils sont EQUIVALENTS. On peut protéger
  • 'avec un mot de passe et déprotéger avec un équivalent, reprotéger avec un autre équivalent, etc.
  • 'Ceci pour répondre à ceux qui voudraient trouver le "bon" mot de passe. C'est impossible et ça n'a aucune
  • 'importance, si vous voulez pirater un classeur sans que son propriétaire s'en rende compte (c'est pas bien ça),
  • 'déprotégez-le puis reprotégez-le avec le mot de passe équivalent trouvé, il n'y verra que du feu.
  • '
  • 'CALCUL DE LA CLE PAR EXCEL :
  • 'Microsoft n'en fait pas un secret et l'on peut trouver facilement la méthode sur internet.
  • 'On applique à chaque caractère du mot de passe une rotation à gauche sur 15 bits. Le premier caractère tourne
  • 'de 1 bit, le deuxième caractère tourne de 2 bits, etc. Comme c'est une rotation sur 15 bits, le 15ème caractère
  • 'tourne de 0 bits, le 16ème tourne de 1 bit et on recommence par tranche de 15 ...
  • 'Tous les résultats des rotations sont ensuite combinés avec des Ou Exclusifs (XOR pour les prétentieux).
  • 'Puis on fait encore un ou exclusif entre le résultat final et la longueur du mot de passe.
  • 'Enfin, on fait un dernier ou exclusif avec la constante CE4Bh. Notez que les ou exclusifs sont commutatifs.
  • 'La clé ainsi calculée est stockée dans l'enregistrement numéro 13h du stream de la feuille ou du classeur.
  • 'Par exemple, le mot de passe "toto" donne la clé CA4Bh. Le mot de passe "CCCBBBBBBCBBBBC" donne la même.
  • '
  • 'ALGORITHME :
  • 'Cette macro utilise 15 boucles imbriquées de deux valeurs. Peu importe les valeurs, elles doivent juste être deux
  • 'valeurs CONSECUTIVES et IDENTIQUES pour toutes les boucles (pour assurer que les 32768 possibilités soient
  • 'couvertes). Attention, la première valeur doit être PAIRE. Ces deux valeurs doivent aussi être les codes ASCII de
  • 'caractères acceptés par Excel dans les mots de passe.
  • 'Exemples : "0" et "1" ou "B" et "C" ou "x" et "y" mais pas "A" et "B" (codes 65 et 66, le premier est impair).
  • 'Le bit de poids faible de chaque variable de boucle correspond ainsi à 1 bit de la clé (0 ou 1 = 2 valeurs). Les
  • 'autres bits des variables sont sans importance puisqu'ils sont constants et l'on est sûr de parcourir les 32768
  • 'possibilités mais pas forcément dans l'ordre, ce qui n'a aucune importance.
  • 'A chaque tour, les 15 caractères sont concaténés pour former le mot de passe à essayer et on boucle jusqu'à
  • 'trouver celui qui marche.
  • 'Sur un pentium à 2 GHz normalement constitué, il faut un peu plus d'une minute dans le pire des cas pour faire
  • 'sauter une protection.
  • '
  • 'AUTRE METHODE :
  • 'Il est possible de récupérer la clé de la feuille ou du classeur dans le fichier Excel (voir doc microsoft) et de calculer
  • 'directement un mot de passe équivalent. Dans ce cas, il faut 2 secondes.
  • 'Au boulot !!!
  • '
  • 'ATTENTION, la feuille ou le classeur à déprotéger doivent être actifs au lancement de la macro
  • 'et il vaut mieux désactiver ses macros.
  • 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
Attribute VB_Name = "Deprotection"
'
'Déprotection sans échec du classeur ou de la feuille Excel avec extraction de mot de passe.
'
'Auteur : CHEPAKOIDIR
'
'PRINCIPE :
'Excel ne mémorise pas le mot de passe mais une clé sur 15 bits calculée à partir de ce mot de passe.
'Il y a donc 2^15 = 32768 possibilités de clés (de 0 à 32767) en tout et pour tout (c'est dire la fiabilité !).
'Il existe ainsi des milliards de mots de passe qui donnent la même clé. Ils sont EQUIVALENTS. On peut protéger
'avec un mot de passe et déprotéger avec un équivalent, reprotéger avec un autre équivalent, etc.
'Ceci pour répondre à ceux qui voudraient trouver le "bon" mot de passe. C'est impossible et ça n'a aucune
'importance, si vous voulez pirater un classeur sans que son propriétaire s'en rende compte (c'est pas bien ça), 
'déprotégez-le puis reprotégez-le avec le mot de passe équivalent trouvé, il n'y verra que du feu.
'
'CALCUL DE LA CLE PAR EXCEL :
'Microsoft n'en fait pas un secret et l'on peut trouver facilement la méthode sur internet.
'On applique à chaque caractère du mot de passe une rotation à gauche sur 15 bits. Le premier caractère tourne
'de 1 bit, le deuxième caractère tourne de 2 bits, etc. Comme c'est une rotation sur 15 bits, le 15ème caractère
'tourne de 0 bits, le 16ème tourne de 1 bit et on recommence par tranche de 15 ...
'Tous les résultats des rotations sont ensuite combinés avec des Ou Exclusifs (XOR pour les prétentieux).
'Puis on fait encore un ou exclusif entre le résultat final et la longueur du mot de passe.
'Enfin, on fait un dernier ou exclusif avec la constante CE4Bh. Notez que les ou exclusifs sont commutatifs.
'La clé ainsi calculée est stockée dans l'enregistrement numéro 13h du stream de la feuille ou du classeur.
'Par exemple, le mot de passe "toto" donne la clé CA4Bh. Le mot de passe "CCCBBBBBBCBBBBC" donne la même.
'
'ALGORITHME :
'Cette macro utilise 15 boucles imbriquées de deux valeurs. Peu importe les valeurs, elles doivent juste être deux
'valeurs CONSECUTIVES et IDENTIQUES pour toutes les boucles (pour assurer que les 32768 possibilités soient
'couvertes). Attention, la première valeur doit être PAIRE. Ces deux valeurs doivent aussi être les codes ASCII de 
'caractères acceptés par Excel dans les mots de passe. 
'Exemples : "0" et "1" ou "B" et "C" ou "x" et "y" mais pas "A" et "B" (codes 65 et 66, le premier est impair).
'Le bit de poids faible de chaque variable de boucle correspond ainsi à 1 bit de la clé (0 ou 1 = 2 valeurs). Les
'autres bits des variables sont sans importance puisqu'ils sont constants et l'on est sûr de parcourir les 32768 
'possibilités mais pas forcément dans l'ordre, ce qui n'a aucune importance.
'A chaque tour, les 15 caractères sont concaténés pour former le mot de passe à essayer et on boucle jusqu'à 
'trouver celui qui marche.
'Sur un pentium à 2 GHz normalement constitué, il faut un peu plus d'une minute dans le pire des cas pour faire
'sauter une protection.
'
'AUTRE METHODE :
'Il est possible de récupérer la clé de la feuille ou du classeur dans le fichier Excel (voir doc microsoft) et de calculer
'directement un mot de passe équivalent. Dans ce cas, il faut 2 secondes.
'Au boulot !!!
'

'ATTENTION, la feuille ou le classeur à déprotéger doivent être actifs au lancement de la macro 
'et il vaut mieux désactiver ses macros.
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

Conclusion

Aucun bug (connu). Fonctionne sur toutes les versions Excel que j'ai pu approcher (de 97 à 2003).
Version définitive !

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

02 avril 2006 11:54:33 :
mise en page refaite
02 avril 2006 12:07:00 :
Remise en page
02 avril 2006 12:12:23 :
Reremise en page
02 avril 2006 12:16:17 :
Idem
02 avril 2006 12:20:11 :
Pffff
02 avril 2006 12:22:45 :
Mise en page encore
02 avril 2006 12:24:37 :
.
02 avril 2006 12:26:24 :
.
02 avril 2006 12:28:01 :
.
02 avril 2006 12:30:01 :
.
02 avril 2006 12:37:05 :
Ajout d'un fichier zip.
02 avril 2006 12:38:41 :
.
02 avril 2006 12:40:06 :
.
03 avril 2006 02:29:56 :
Petite précision ajoutée.
03 avril 2006 02:37:47 :
Et correction du zip.

Commentaires et avis

signaler à un administrateur
Commentaire de us_30 le 02/04/2006 13:22:31

Salut,

JE pense qu'on peutt largemenent optimiser le code...

Par exemple, au lieu de toutes les lignes FOR, on peut construire directement les nb binaires, qui ce révèle globlalement plus rapide...

Voici, une possibilité :

'Boucles de calcul des mots de passe
Fin = 2 ^ 15 - 1
For N = 0 To Fin Step 1
    Passe = vbNullString
    B = N
    Do
        Passe = CStr(B Mod 2) & Passe
        B = B \ 2
    Loop While B > 0
    
    'Erreur nulle
    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 N

Après quelques mesures du temps, j'ai obtenu avec cette version une durée globalement réduite de 2 à 8 fois. (Le temps dépend aussi du mot de passe à découvrir, par ex: si mot de passe = "fred" (140s contre 315s) alors c'est bien plus long à découvrir que "a" (18s contre 145s))


Amicalement,
Us.

signaler à un administrateur
Commentaire de us_30 le 02/04/2006 13:29:22

Complément,

Bien sur, N et B seront déclarés en Integer... D'ailleurs, au lieu du type byte, dans ton code tu devrais chosir le type Integer que sera un peu plus rapide...

Us.

signaler à un administrateur
Commentaire de chepakoidir le 02/04/2006 17:52:15

Salut,

Je suis d'accord, l'idée est bonne mais alors ça ne marcherait qu'avec des mots de passe composés de 1 et de 0.  
Dans mes boucles j'utilise 48 et 49 qui sont les codes ascii de "0" et "1" mais on peut aussi bien les remplacer par les codes 65 et 66 ("A" et "B") ou autre chose. Et  l'astuce ne marche plus !

Pour le temps, tout dépend si le mot passe initial a modifié ou pas les bits de gauche de la clé.  A cause de la constante CA4Bh mise en Xor, les petits passes donne un bit 15 à 1 par exemple mais pas les grands. On peut mélanger les boucles mais c'est impossible à optimiser, faudrait connaître le passe avant de l'avoir trouvé !!!
Bah, on n'est pas à une minute près. Mon objectif était surtout d'expliquer le principe de la chose. Je préférerais lire la clé dans le fichier  et calculer directement un passe avec.  Mon problème c'est que la doc Microsoft est peu claire sur la structure du  fichier.  Si quelqu'un  a des infos ...

Amicalement,

Chepakoidir

signaler à un administrateur
Commentaire de cyril16000 le 09/08/2006 12:54:53

Hello!

J'ai bien aimé le message "le classeur n'est pas protégé, ANDOUILLE", lorsque l'on fait un test sur un classeur effectivement NON PROTEGE...
Bien ri!!! Merci...

signaler à un administrateur
Commentaire de bourasseau le 03/11/2006 20:27:46

Bonjour,
Le problème est que je ne peux pas rendre actif le classeur protégé par mot de passe car la boite de dialogue mot de passe se ferme et le classeur aussi, donc la macro ne sert a rien puisque le classeur est fermé.
A moins qu'il y ait une autre combine.

merci pour la réponse

signaler à un administrateur
Commentaire de fonduvb le 29/12/2006 22:54:37

Bonjour,
Même problème et même question que le prédécesseur... Comme rendre active la macro en même temps que le classeur, la procédure d'authentification du mot de passe du classeur ne laissant pas la main pour lancer la macro. Si on lance la macro avant elle ne peut lire le fichier non encore lancé.. Quelle est la méthode ? Merci

signaler à un administrateur
Commentaire de chepa001 le 02/01/2007 16:03:44

La sollution à ton PB est de mettre la macro dans un fichier excel à part.

que tu ouvre en activant la macro. Puis tu ouvre le document à déprotéger en désactivant ses Macros, puis de là tu lance la macro de déprotection.

signaler à un administrateur
Commentaire de fonduvb le 03/01/2007 15:32:14

Bonjour,
Pour Chepa001 : Ca ne fonctionne pas.. lorsque tu lances la macro de déprotection tu arrives sur le message demandant si tu veux déprotéger le classeur actif. Tu lances ensuite le fichier protégé et te retrouves sur la fenêtre demandant le mot de passe. Si tu retournes sur la macro, celle ci considère que le fichier actif est son propre fichier d'appartenance et l'indique comme non protégé !!! J'ai essayé en indiquant le nom du fichier protégé dans la macro au lieu d'Activeworkshop ou en mettant une temporisation mais rien ne fonctionne... Je cherche à entrer dans une application que j'ai faite il y a quelques années pour récupérer les codes sources qui me seraient utiles maintenant(histoire de gagner du temps...)

signaler à un administrateur
Commentaire de chepa001 le 03/01/2007 16:57:47

Peux tu envoyer le fichier en question? Histoire de voir quel est le problème.
Yaihi@mail.com

signaler à un administrateur
Commentaire de fonduvb le 04/01/2007 09:13:34

Une solution mais qui ne me dira pas comment utiliser la macro décrite dans cette page... J'avoue y avoir passé du temps et tenté pas mal de solutions en vain...

signaler à un administrateur
Commentaire de chepa001 le 04/01/2007 11:25:56

j'attends to mail alors.
Si j'arrive à solutionner le Pb, je t'envoi une explication complète.
Salut

signaler à un administrateur
Commentaire de chepa001 le 04/01/2007 16:54:05

Je viens de comprendre ce que tu veux dire.
J'ai bien peur de ne pouvoir aider, car le fichier est carrement protégé en lecture. est-ce bien ton cas?

signaler à un administrateur
Commentaire de fonduvb le 05/01/2007 09:01:13

oui... je répère mon problème ! cette fonction est censée supprimer la protection en lecture d'un fichier Excel. Cependant, lorsque j'ouvre le fichier protégé et que l'on obtient la fenêtre demandant le mot de passe je ne parviens pas à lancer la macro de déprotection. Lorsque j'y parviens (à partir d'un autre classeur, d'une macro personnelle, etc...) la macro considére que le fichier à déprotéger est le fichier qui l'héberge (qui n'est donc pas protégé et n'est pas le fichier que l'on souhaite déprotéger..). Je n'ai pas encore trouvé la solution...

signaler à un administrateur
Commentaire de us_30 le 05/01/2007 21:46:43

bonsoir FonduVB,

Petite précision au passage... La fonction n'est censée supprimer la protection en lecture d'un fichier Excel, mais supprime la protection d'une feuille ou d'un classeur d'Excel. Ce qui n'est pas la même chose !

Pour utiliser la fonction, rien de compliqué. Il suffit de copier le code dans un module, par exemple dans un classeur par défaut : Classeur1.xls, puis ouvrir le classeur protégé (ou bien possédant des feuilles protégées) et de lancer la macro avec ALT+F8 (par exemple)... et de choisir (ici) classeur1.xls!Deproteger pour le nom de la macro...

Amicalement,
Us.

signaler à un administrateur
Commentaire de fonduvb le 07/01/2007 20:21:04

Merci US_30 ! Je comprends enfin pourquoi je n'y parvenais pas... Je tentais effectivement d'ouvrir un fichier protégé en lecture .J'avais oublié que les codes pour ouvrir un tel fichier font partie de la chasse gardée des logiciels payants.. Je n'ai pas encore trouvé de solutions pour ouvrir ce fichier qui m'appartient...
Amitiés à tous

signaler à un administrateur
Commentaire de us_30 le 09/01/2007 00:04:58

De rien... Effectivement, on peut utiliser quelques shareware, mais qui ne donne pas le passe en entier en général. Mais parfois, cela réveille des souvenirs... Sinon, une alternative c'est d'utiliser Open Office à ce qu'il paraît... mais sûrement pas pour longtemps... à voir.

Amicalement,
Us.

signaler à un administrateur
Commentaire de chepa001 le 09/01/2007 17:50:08

A FonduVB:
J'ai un Soft sur mon PC qui peut déprotéger des fichiers en lecture seule.
Je ne sais pas si ça t'intéresse tjrs de m'envoyer ton fichier?

PS: je n'ai pas le fichier d'installation. mais pour que tu ai le logiciel sur ton pc, je peux essayer d'envoyer le dossier contenu dans program files + fichier registre. Je ne sais pas si ça va marcher(d'ailleurs j'en doute fort).

signaler à un administrateur
Commentaire de Patpo le 26/11/2008 19:30:35

Bonjour,

je suis peut être pas tres doué car ca ne fonctionne pas sous ma version 2003.
Cdt.

signaler à un administrateur
Commentaire de nrj64 le 04/12/2008 23:27:13 10/10

Sa marche 100% sur Exel 2007 Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

convertion vba /excel [ par aducloux ] bonjour a tous,je recherche l'équivalent de cette fonction mais en langage usuel...."=IF(ISTEXT(RC[-7]),1,2)"                            ---------> [Excel | VBA] Macro et Bouton de commande [ par AiDuK ] Bonjour à toutes et à tousJe suis en train de finaliser mon projet , gràce à vous , et je me posais une question.J'ai un bouton de commande, derrière VBA EXCEL - Macro variable... [ par Djrome ] Salut les Kracks,Je souhaiterai avoir un code VBA qui exécuterai les actions suivantes:Input box au démarrage de la macro me demandant d'inclure la da VBA Excel 2007. Macro ne fonctionne plus [ par guillaume89 ] Bonjour,Une macro créé avec une excel 97. Elle a fonctionnée sous excel 2007 et windows vista. Elle ne fonctionne plus!!Le code: Run "'Achats.xls'!Feu Coder une creation de macro Excel dans un programme VBA [ par Panodrek ] Bonjour :)Voila, donc je voudrais savoir comment coder une création de macro Excel dans un programme VBA pour que ce dernier créé ces macros pendant s Lancement d'une macro VBA dans excel par une combinaison de touche [ par dimud ] Bonjour,Je voudrais lancer une macro (inputbox avec mot de passe ; la macro est OK) à partir de n'importe quel endroit d'un classeur excel protégé en Inserer une formule dans excel par macro en vba [ par ANNIBAL3 ] Bonjour,je me permet de poser cette question car je n'ai pas trouver de reponse dans les forums ( ou j'ai mal cherché )Voici ma question elle concerne MACRO EXCEL EN VBA [ par tallia64 ] Bonjour je débute en vba et j'ai besoin de votre aide. En fait j'ai une base de données dans un feuillet excel  avec des entêtes de colonnes n tirage au sort excel macro VBA [ par liog83 ] Salut je suis nouveauJ'ai trouvé plain d'info sur les tirages au sort dans les macros VBA Excel mais je ne comprends pas tousJ'ai huit colonnes avec d [VBA / macro excel] écriture sur une cellule précise via la rechercheV/H [ par hazzel ] Bonjour,Voici mon problème, je vouhaiterai colorier une cellule précise d'une autre feuille. Pour se faire, la macro prend en compte le numero de la c


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,655 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.