Ce n'est pas nouveau, quoi que l'on fasse, il arrive régulièrement que l'on perde un mot de passe... Heureusement, voici une méthode relativement simple pour contourner la protection par mot de passe qui empêche l'accès au code des macros VBA d'une feuille Excel. Plus précisément, elle permet de redéfinir un nouveau mot de passe sans connaitre l'ancien.
Attention : les informations et le programme mis à disposition dans cet article ne doivent pas être utilisés pour accéder au code d'un fichier protégé dont vous n'êtes pas le propriétaire, auquel cas vous seriez hors la loi (contrefaçon, accès frauduleux...).
Etape 1 : Modifier manuellement le fichier
Avant tout, sachez que je vous propose en fin d'article un petit utilitaire pour simplifier cette étape . Si vous êtes suffisamment doué en informatique et que vous préférez le faire à la main, voici la procédure :
Pour commencer, il faut vous munir d'un éditeur hexadécimal pour pouvoir modifier le contenu du fichier Excel manuellement. Il en existe beaucoup, dont des gratuits qui feront très bien l'affaire, comme Frhed. Pensez également à sauvegarder votre fichier en cas de souci !
Ensuite, si votre fichier est au format Excel 2010 (extension .xlsm), vous devez changer cette extension en .zip (et oui, le format 2010 est avant tout une archive zip !), puis ouvrir l'archive et extraire le fichier xl/vbaProject.bin.
Ouvrez avec votre éditeur hexadécimal le fichier vbaProject.bin pour un classeur Excel 2010, ou directement le fichier Excel si vous utilisez l'ancien format (extension .xls). Recherchez la chaîne DPB= (généralement en fin de fichier) et remplacez la par DPX=. Enregistrez le fichier, puis fermez votre éditeur.

Modification du fichier Excel avec Frhed
Si votre fichier était au format 2010, ouvrez l'archive puis remplacez le fichier xl/vbaProject.bin par celui que vous venez de modifier. Enfin, rétablissez l'extension d'origine.
Etape 2 : Définir un nouveau mot de passe
Vous êtes ensuite obligé de définir un nouveau mot de passe, que vous pourrez retirer par la suite si vous le souhaitez. Ouvrez le fichier Excel modifié, puis accédez à l'éditeur VBA (Alt+F11). Un message d'avertissement s'affiche pour vous avertir qu'une "touche est incorrecte". Ignorez cet avertissement en cliquant sur Oui. Vous pouvez également obtenir une "erreur inattendue 40230", ignorez simplement en cliquant sur OK.

Excel vous avertit que le fichier contient une "touche incorrecte", une mauvaise traduction pour "invalid key"...
Avant toute autre action, cliquez sur le menu Outils > Propriétés de ..., et changez le mot de passe dans l'onglet Protection. Pour terminer, enregistrez le fichier, fermez puis ré-ouvrez, et retournez dans l'éditeur VBA. Vous pouvez désormais accéder au code source en tapant le nouveau mot de passe.
Bonus : Un petit programme pour vous simplifier la tâche !
Pour simplifier la réalisation de la première étape, je vous ai préparé un petit programme pour le faire à votre place. Téléchargez-le et décompressez l'archive, puis :
- Sous Windows, glisser-déplacer votre fichier Excel sur l'icône de l'application (VBAPwdRemover.exe). Une fenêtre noire apparait. Lorsque le message Appuyez sur une touche pour continuer... s'affiche, vous pouvez fermer cette fenêtre.
Glisser votre fichier Excel sur l'icône de l'application.
- Sous Linux, tapez la commande VBAPwdRemover.bin <chemin_du_fichier_Excel>
Le programme créé automatiquement une sauvegarde (nomfichier_bak.xls par exemple), mais si votre fichier est important je vous conseille d'en faire une manuellement avant de lancer la procédure : un bug peut toujours arriver...
Une fois le programme terminé, il ne vous reste plus qu'à redéfinir un mot de passe (reportez-vous à l'étape 2).
Liens de téléchargement :
Pour les plus curieux, je fournis également le code source C++ (licence GPL). A la compilation, vous avez la possibilité de désactiver le support du format Excel 2010 en définissant la constante NO_XLSM_SUPPORT (option de compilation -DNO_XLSM_SUPPORT). Si vous conservez le support de ce format, vous aurez besoin de la zlib et de la libzip (apt-get install libzip-dev sous Linux). Pour compiler sous Windows, j'ai utilisé MinGW et MSys.
Cela ne fonctionne pas, une fois l'extension remise à l'ouverture du fichier Excel xlsm 2010.
Message d'erreur et le fichier .bin est supprimé, et il y à génération d'un message d'erreur.
Merci pour votre commentaire !
Certains messages d'erreurs sont "normaux" (cf Étape 2). Quel est le contenu de votre message d'erreur ? Avez-vous essayé avec l'outil VBA Password Remover (cf fin d'article) ?
Bonjour,
Alors j'ai bien réussi à modifier DPB par DPX en revanche derrière quand je veux mettre le fichier BIN il me marque opération impossible.. Savez vous pourquoi ?
Merci
Bonjour, j'ai essayé cette méthode qui normalement fonctionne très bien mais j'ai eu le même problème que Adam, c'est à dire :
après toute manipulation on ouvre le fichier et dès l'ouverture le fichier ProjetVBA.bin est supprimé, du coup on a accès a l'interface VBA mais sans le code. Il a disparu.
As tu une solution à ce problème ? à savoir si on peut récupérer le code, dans quel fichier il est stocké ?
Je te remercie
Désolé, je ne parviens pas à reproduire votre problème. Je viens d'essayer sur un fichier de test au format 2010, cela a fonctionné sans souci.
Comme écrit dans l'article, il faut faire attention à quelques points :
- Pour récupérer le fichier vbaProject.bin, il NE faut PAS décompresser toute l'archive, mais naviguer à l'intérieur pour faire un copier/coller de ce fichier seulement. De même lorsque l'on patch avec la version modifié, mais dans l'autre sens.
- Attention à l'extension du fichier : si c'est un fichier fait sous Excel 2010, l'extension est xlsm. Mais d'après le message d'Adam, ce n'est pas ça le problème.
- Lorsque l'on ouvre le fichier après l'avoir patché, il peut y avoir pas mal de messages d'erreurs ou d'avertissements, certains se répétant plusieurs fois de suite (notamment "Erreur inattendu"). Il faut répondre favorablement à tous ces messages (Oui ou OK) jusqu'à pouvoir atteindre le panneau Propriétés de l'éditeur VBA.
Pour simplifier le processus et éviter les erreurs de manipulation, n'oubliez pas que je mets à votre disposition un outil très simple d'utilisation en fin d'article
PS : désolé pour le petit retard de modération de ton commentaire
.
Bonjour,
Je ne suis pas pro en terme de modification de fichier. L'explication me semble claire mais à la réalisation, ça ne semble pas marcher.
Peux-tu me préciser un point. Lorsque tu parles du VBAProject.bin, tu dis qu'il ne faut pas décompresser toute l'archive.
Voici ce que je fais. Je change l'extension .xlsm en .zip. J'ouvre l'archive via 7zip. je cherche dans xl les fichiers sheet1, workbook.eml et VBAProject.bin. Est-ce que cette action décompresse les fichiers ? et tous les fichiers ? Si oui, comment faire l'action que tu préconises ?
Après j'ai bien trouvé le sheetprotection ainsi que le DPB a transformer en DPX. je quitte les fichiers modifié et je les enregistre.
Je quitte tout. Et je remodifie l'extension du fichier en .xlsm.
Comme l'indiques Chapo (?) à l'ouverture du fichier, la page VBA ne montre aucun code. Or je suis certaine d'avoir des codes dans mon fichier d'origine.
J'ai également essayé la procédure avec VBAPwdRemover.exe. Mais le programme ne s'installe pas correctement.
Quand je dis que je ne suis pas une pro !!!
Merci de tes commentaires.
Bonjour,
Pour ma part je n'utilise pas 7zip pour les fichiers zip, mais plutôt directement l'explorateur de fichiers de Windows. Je ne peux donc pas trop te dire comment faire précisément avec 7zip. Sinon tu peux faire un clic droit > Ouvrir avec sur l'archive et sélectionner "Explorateur Windows".
L'outil reste toutefois plus simple à utiliser. Il n'y a pas d'installation, il suffit de glisser-déposer le fichier Excel sur l'exécutable, comme montré sur la petite capture.
Bonjour,
J'ai le même problème que Adam et Chapo, à savoir, l'erreur d'avertissement s'affiche je choisi OK et là un tableau s'affiche disant que le fichier Projectvba.bin est supprimé. Du coup, cela supprime tout le code...
Cela peut être à cause d'une grande sécurité du fichier?
Merci d'avance pour votre réponse.
Bonjour,
Même question, même réponse : je ne parviens pas à reproduire ce problème, je ne peux donc pas voir ce qu'il ne va pas, désolé. Essayez avec l'outil peut-être.
Lorsque je glisse-déplace mon fichier Excel sur l’icône de l’application (VBAPwdRemover.exe), voici le message d'erreur:
Error : This Excel 2010 file format does not support macro. Please specify a xls
m file instead.
Appuyez sur une touche pour continuer...
Je ferme la fenêtre comme indiqué mais rien ne se passe. Il ne se crée pas de fichier Excel modifié (où dois-je le chercher s'il en crée un?). Je tente d'ouvrir mon fichier Excel, mais il me demande toujours le mot de passe?
Ce message d'erreur indique que vous utilisez un fichier Excel 2010 ayant comme extension .xlsx. Or, cette extension implique que le fichier ne comporte pas de macro VBA, puisque, dans le cas contraire, il devrait porter l'extension .xlsm.
Comme il n'y a pas de macro VBA, il n'y a pas non plus de mot de passe protégeant ces macros, et donc cet article et cet outil ne vous sont d'aucune aide (le titre de l'article mentionne bien "mot de passe VBA "). L'application ne fait rien, aucun fichier n'est créé ou modifié, et cela est bien normal
N'auriez vous pas confondu avec le mot de passe qui protège la feuille ou le classeur Excel ?
c'est parfait, je crois que plus simple c'est impossible ! Merci
Sur excel 2003, donne error 40230 au lieu de touche incorrecte, continuer la manip: ca marche !
Hello,
Sur excel 2003, j'ai l'erreur 40230 mais ça ne marche pas. Que veux-tu dire dans "continuer la manip" ?
Merci
Tout simplement qu'il faut ignorer les erreurs autant que possible, en cliquant sur Ok, Validez... et poursuivre la procédure de crack comme si de rien n'était. Les erreurs sont "normales" étant donné que le crack consiste justement à rendre le fichier temporairement invalide.
Bonjour,
Merci pour cette astuce.
Avez-vous à votre connaissance une autre astuce qui permettrait d’empêcher (ou de freiner) ce type de manip ?
Bonjour,
Non malheureusement, il n'y a pas à ma connaissance de véritable solution pour se protéger de ce crack. Il s'agit d'une faille d'Excel que seul Microsoft pourrait partiellement corriger en publiant une mise à jour, mais il resterait de toute manière possible d'utiliser cette astuce en utilisant le temps du crack une version non mise à jour.
Et si l'on intègre une macro pour supprimer la macro principale en cas d'erreur (i.e. modification du mot de passe)?
A première vue, cela ne me semble pas réalisable. Comment détecter l'erreur interne à Excel ? Comment supprimer la macro principale ?
Merci beaucoup pour ce tuto et pour l'appli
les deux méthodes ont marchés pour moi avec xlsm (2010)
Tout d'abord merci pour votre tuto. J'ai un souci car j'ouvre le fichier bac et quant j'appuie sur alt+f11 il ne se passe rien. pourriez vous m'aidez svp
Le fichier "_bak" est une sauvegarde du fichier original, autrement dit une copie identique au fichier original. Cette copie est faite pour pouvoir récupérer le document original dans le cas où l'outil de crack ne fonctionnerai pas.
Dans le cas "normal", ce n'est donc pas ce fichier qu'il faut ouvrir mais bien le fichier dont le nom est identique au fichier en entrée, que vous avez glisser-déposer sur l'outil.
Merci de votre réponse. Mon souci se trouve à l’étape 2. lorsque j'ouvre le fichier, il me demande le mot de passe, je presse alt+F11 et l'editeur ne s'ouvre pas,
Si le mot de passe est demandé dès l'ouverture du fichier avant d'accéder à l'éditeur de code avec Alt+F11, ce n'est pas le code VBA qui est protégé par mot de passe mais c'est la feuille Excel. C'est différent, et dans ce cas la méthode présentée ici n'a aucun effet.
C'est le classeur entier qui est protégé et pas seulement la feuille
Oui exact, mais le résultat est le même : la méthode décrite ici ne permet de contourner que le mot de passe qui protège le CODE VBA d'un classeur (les macros en gros).
Bonjour,
Il fonctionne parfaitement.
Merci pour le partage.
Laitram.
Merci beaucoup, j'ai eu des problèmes lorsque j'ai essayé moi-même, mais en lisant les réponses que vous avez fait aux commentaires des autres utilisateurs j'ai su pourquoi cela ne fonctionnait pas (n'a pas pris seulement le fichier dans le zip, mais extrait le tout et re-compressé). J'ai pris votre programme et cela fonctionne très bien. Par la suite j'ai pu accéder au mot de passe de la page principal. Continuer votre bon et beau travail et bonne année 2014.
Merci pour cet utilitaire très pratique.
Ca fonctionne à merveille, même s'il y a pas mal de messages d'erreur qui peuvent dérouter.
Un grand bravo !
Super travail ! ça fonctionne très bien que ce soit la méthode 1 ou avec l'utilitaire . Merci
Salut, ton petit fichier marche bien, merci. J'aimerais savoir si une telle manipulation existe pour les compléments excel. J'ai un complément obsolète dans lequel j'aimerais jeter un œil mais celui-ci est verrouillé
Désolé, je ne connais pas de méthode pour ce qui concerne les compléments Excel.
La méthode pour les compléments est la même! Convertit un fichier en complément et tu verras
Sinon il y aurait des méthodes pour le verrouiller un peu plus et donc le fichier est en "lecture seule". Il faut enlever la lecture seule, modifier le DPB, remettre la lecture seule, faire la manip excel (mette un nouveau mdp), et sauvegarder avec un nouveau nom et remettre en le