Kévin Subileau

Espace personnel

Casser le mot de passe VBA d’un fichier Excel

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.

avertissement-casser-vba

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.

120 Commentaires

Dernier commentaire il y a Il y a 2 semaines

Laisser un commentaire

ou

Champs Requis *.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>