Dans un précédent article, j’expliquais comment protéger les modifications d’une feuille d’un classeur Excel avec un mot de passe, ou encore comment enregistrer un fichier en protégeant son accès ou sa modification par un mot de passe. Mais que se passe-t-il quand on perd ce fameux mot de passe ? A moins de n’entrer qu’un seul mot de passe pour l’ensemble de vos besoins, que celui-ci soit tatoué sur l’oreille de votre chien, ou qu’il fasse partie des listes de mots de passe interdits sur Twitter car trop faciles à deviner, vous aurez bien du mal à revenir dessus.
Il existe, bien entendu, des solutions pour les deux cas. Vous vous rendrez vite compte qu’un mot de passe sur un fichier Excel ne vaut que pour des utilisateurs débutants ou moyens (mais surtout non lecteurs de ce blog…) et qui n’ont pas idée des possibilités offertes par le VBA, ni de l’existence de programmes de suppression de verrous (légaux bien sûr, nous ne sommes pas dans le hacking de haut niveau). Cet article, s’il vous ouvre une porte vers des levées d’interdits sur les fichiers que vous recevez ou ne pouvez consulter en l’état, a principalement pour but de vous sensibiliser au fait que les mots de passe ne sont pas une grande sécurité face à un utilisateur averti.
Mon but n’étant pas de vous amener vers des programmes de suppression de mots de passe, je me contenterai de vous indiquer qu’en fouillant un peu sur Google, vous trouverez rapidement des programmes qui utilisent des méthodes de recherches de masse pour identifier un mot de passe d’un fichier. Le plus souvent, il vous faudra vous acquitter de la licence pour voir apparaître le précieux sésame qu’il a identifié et qui reste le dernier obstacle entre vous et les informations qui vous sont cachées. Sachez donc que ce genre d’outils existe.
En revanche, voici une macro qui vous permettra de supprimer un mot de passe sur un onglet, dans le but de désactiver la protection contre les modifications de cette feuille. Etant donné que vous êtes en mesure de visualiser son contenu, l’intérêt est surtout de reprendre la main sur un fichier, peut-être créé par un ancien collègue depuis longtemps parti vers d’autres horizons, mais en emportant ses codes d’accès.
Plan de site
Code VBA pour désactiver le mot de passe Excel
Aussi, dans ce fichier, lancez Visual Basic (ALT + F11), et dans le classeur, insérez un nouveau module. Entrez le code suivant :
Sub EnleverProtectionFeuilleExcel() Dim a, b, c, d, e, f, g, h, i, j, k, l As Integer On Error Resume Next For a = 65 To 66: For b = 65 To 66: For c = 65 To 66: For d = 65 To 66: For e = 65 To 66: For f = 65 To 66: For g = 65 To 66 For h = 65 To 66: For i = 65 To 66: For j = 65 To 66: For k = 65 To 66: For l = 32 To 126 ActiveSheet.Unprotect Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(f) & Chr(g) & Chr(h) & Chr(i) & Chr(j) & Chr(k) & Chr(l) If ActiveSheet.ProtectContents = False Then MsgBox "La protection a été enlevée – Un mot de passe satisfaisant est : " & Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(f) & Chr(g) & Chr(h) & Chr(i) & Chr(j) & Chr(k) & Chr(l) Exit Sub End If Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next End Sub
Il n’en faut pas plus. Testez la nouvelle macro en vous plaçant dans l’onglet à déprotéger, puis exécutez la macro. Celle-ci va tourner pendant le temps nécessaire à la suppression du mot de passe puis vous proposer un nouveau mot de passe. Enregistrez votre fichier et la protection est désactivée.
Demandez maintenant à vos collègues de vous tester et vous pourrez démontrer à quel point vous êtes un gourou d’Excel !
Un outil facile prêt à l'emploi
Vous pouvez également télécharger un outil Excel basé sur cette méthode: XLSheetUnlocker: déverrouillage de Feuilles
Avantages:
- il est en français
- facile à utiliser pour ceux qui ne maîtrisent pas VBA (interface Excel)
- fonctionne même si le code VBA de votre fichier est verrouillé
- permet de déverrouiller toutes les Feuilles d’un Classeur d’un coup
Importante remarque sur la version des fichiers Excel
Attention, toute cette méthode fonctionne pour les fichiers faits dans Excel versions 97-2003, 2007 et 2010. Dans Excel 2013, Microsoft a changé la méthode de chiffrement des fichiers Excel et donc cette méthode ne fonctionnera pas… Au moins pas directement.
Solution: ouvrez le fichier Excel récent (fait avec Excel 2013 ou 2016) et sauvegardez le comme un fichier .xls (Excel 97-2003). Utiliser ensuite la méthode de déverrouillage sur ce fichier .xls. Et le tour est joué!
Bon déverrouillage !
Merci! Tu es un saint!
bonjour
j’ai un fichier excel que j’utilisais dans mon ancienne société
je le trouvais pratique j’aurais aimé m’en servir mais il y a des mots de passes
Est-ce que vous pouvez me le déverrouiller j’ai essayé je n’y suis pas arrivée
merci
Incroyable, un grand merci.
J’ai lutté dans un premier temps avec des erreurs de syntaxe :
– les retours charriots à supprimer au début des lignes commençant par ActiveSheet.Unprotect et MsgBox
– des espaces en trop ou manquants (je ne sais plus au moment de taper ce commentaire)
– remplacer les caractères [«] et [»] par [« ]
Salutations
La correction du guillemet ne passe pas dans mon précédent commentaire, il doit bien être de la forme [ »].
Décidément, les guillemets doivent être à l’anglaise, voir par ici : https://goo.gl/UBRqCp
Génial merci 🙂 moi qui n’avait jamais fait de macro ni ouvert VB de ma vie, j’ai tenté sans voir qu’il y avait des commentaires. Comme j’avais un msg d erreur, j’ai essayé de modifier des trucs (J’ai vu que le texte en rouge disparaissait quand l’erreur était réparée), j’ai cherché un peu sur le net et vu que les guillemets pouvaient être à modifier et Ô Miracle cela a marché !!!
Bonjour, tout est bien marché mais quand je clique sur exécuter la macro, un message qui s’affiche (Impossible d’exécuter le code en mode d’arrêt).
Merci pour votre aide
Je n’arrive pas à créer un nouveau module comme l’indiquez. Dès que je fais (ALT+F11) on me demande un mot de passe. aidez moi svp
Pour les onglets vérouillés en saisie, on peut très facilement ouvrir le fichier Excel dans le tableur de Google ou dans Open Office.
Les petits camarades de Microsoft fait sauter automatiquement les verrous mis en place.
Merci c’est intéressant à savoir !! 🙂
Bonjour, je ne sais pas si cette macro peut s’appliquer à mon cas. J’ai une vielle macro faite de Macro Excel 4. L’onglet qui se nomme Macro contient toutes les fonctions visibles mais cependant la feuille ne permet pas de visualiser son code. J’ai fait tourner votre macro mais le résultat est toujours le même. Auriez-vous une idée ? Merci d’avance de votre aide.
bonjour, y a t’il le même principe aussi simple pour les classeurs ?? et projets vba??
merci
Bonjour,
Cela doit être faisable. Je n’ai pas fait de code pour ça mais ça pourrait faire partie d’un article futur. Je sais que pour un classeur, il existe des logiciels qui permettent ce genre de choses.
ok merci pourrais tu me donner une idée des logiciels existants? merci
AOPR par exemple.
Génial !!!!! Cette macro est vraiment très utile !!!
Merci Clémence
Bonjour,
Y a t-il moyen d’afficher le mot de passe ? car le msgbox n’affiche pas le bon mot de passe. Par exemple, j’ai protégé la feuille avec un bon vieux « toto » et il me ressort « AAABABBBBAA/ ». Comment puis-je faire la conversion ?
Merci d’avance
Bonjour,
Le mot de passe qui s’affiche est une proposition et ne correspond pas au mot de passe qui, lui, est supprimé.
Bonjour
Ca marche super bien mais je ne comprend pas le code… Il ne me sort jamais le bon mot de passe. La feuille est dévérouillée mais le mot de passe « satisfaisant » n’a rien a voir avec l’original. Est il possible qu’en plus de dévérouiller la feuille, la macro affiche le mot de passe ?
Cdt
Bonjour,
Oui le mot de passe qui est affiché n’est qu’une proposition. Le mot de passe initial est supprimé par le code.
A+
Bonjour ,
J’essaie votre script mais j’ai une erreur de compilation : End If sans bloc If
Pouvez vous m’aider ?
Merci d’avance
Bonjour,
Vous devez avoir une erreur dans la recopie du code. Le IF est bien présent et se trouve dans le bloc après FOR I = 32 TO 126
Ce bloc se terminant par END IF.
Peut-être cela vient d’un espace manquant aussi.
J’ai un soucis, je ne peux même pas faire de visual tellement que le fichier excel est protégé une solution ? ^^
Merci 🙂
là comme ça… non…
mais tu ne peux pas ouvrir une macro dans un autre fichier et lui demander de fonctionner sur le fichier ouvert ? en utilisant active.workbook sur la macro et en la lançant depuis le fichier protégé ouvert ?
J’ai trouver une solution qui consiste a ouvrir excel avec 7zip 😉 ça va faire un moment donc je ne me souviens plus très bien des étapes à faires :$
Cordialement,
Thomas 🙂
Ca marche super bien !!!!!!!
Vous êtes trop fort 🙂 merci
Je n’irai pas jusque là quand même… mais merci !
Bonjour,
Je le saisis dans le module là ou on écrit le code, mais rien à faire. y me dit erreur de syntaxe à chaque fois,que se soit avec Excel 2007 ou 2010
OK, j’ai testé et j’ai trouvé une erreur dans la 1ère ligne. Après le G, il manque une « , ».
Ensuite, j’ai remis sur une seule ligne (dans le texte, un retour à la ligne est identifié alors qu’il n’en faut pas) celles qui commencent par Activesheet et MsgBox.
Enfin, j’ai remplacé les guillements du texte par des guillemets de ce style : « .
Et là, ça fonctionnera mieux.
Désolé mais c’est vrai que je ne l’avais pas testé en copier-coller depuis mon article, donc je ne comprenais pas pourquoi le code ne marchait pas. Merci de m’avoir montré ce souci ! 🙂
Je vais tester merci beaucoup 🙂
Pas de quoi ! je préfère quand ça marche ! ^^
Ya possibilité que vous me l’envoyer par email car j’y arrive pas 🙁
C’est parti !
Bonjour,
La macro ne fonctionne pas.
J’ai le message suivant:
« impossible d’exécuter le code en mode arrêt »
Devant m’absenter qq jours, j’abandonne pour aujourd’hui et viendrais voir si j’ai une proposition de solution jeudi 31
D’avance merci
Bonjour,
C’est un peu vague comme problème. A quel moment ça se passe ? avez-vous fait attention aux guillemets ?
Bonjour,
lorsque je lance le programme il me met erreur de syntaxe
Bonjour,
J’ai utilisé plusieurs fois cette macro sans soucis. Je pense qu’il s’agit soit d’un problème avec une virgule, soit une »
A quelle ligne le problème se pose-t-il ?
Quel message avez-vous exactement ?
Erreur de compilation et erreur de syntaxe
Il me souligne en jaune cette phrase
Sub enleve_protection()
Je tiens à dire que je n’ai que copier coller le code dans le module.
Merci pour votre aide
Et tu le saisis dans quoi ? la feuille ou un module ?