Pour mon boulot, j’utilise beaucoup Excel et cela fait de nombreuses années que je travaille avec VBA pour me simplifier la vie en automatisant certaines tâches rébarbatives. Afin que des collègues moins à l’aise avec Excel ne viennent pas pourrir mes fichiers et mon code, il m’est arrivé de le protéger avec un mot de passe. Seulement, le temps passant, j’ai oublié certains mots de passe sur de vieux fichiers.
Et bien vous allez voir qu’au final ce n’est pas si difficile de faire sauter ce mot de passe ! Et cela devrait vous faire réfléchir à deux fois sur la sécurité réelle de vos fichiers Excel protégés par mot de passe !
Protéger son projet VBA avec un mot de passe
Si vous lisez cet article, il y a de fortes chances pour que vous sachiez déjà comment protéger un projet VBA avec un mot de passe. Mais voici un petit rappel pour ceux qui voudraient s’y mettre. Les manipulations sont relativement similaires, quelle que soit votre version d’Excel. Dans mon cas, j’ai utilisé Excel 2016.
Donc pour commencer, rendez-vous sur l’onglet Développeur et cliquez sur Macros.
Si vous ne voyez pas l’onglet Développeur, allez sur Fichier > Options et ensuite Personnaliser le ruban. Sélectionnez Développeur dans la fenêtre de gauche et appuyez sur Ajouter>> pour l’intégrer au menu.
Une fois que vous avez sélectionné Macros dans l’onglet Développeur, entrez un nom pour votre macro (peu importe, c’est juste pour avoir quelque chose à protéger avec un mot de passe) et cliquez sur Créer.
Copiez-collez le code suivant dans votre macro… C’est une macro toute bête qui va écrire un bout de texte en cellule A1 et qui n’a d’autre intérêt que d’avoir quelque chose à protéger.
Range("A1").Value = "Mot de passe craqué !!"
Et vous devriez avoir à peu près ça dans votre éditeur VBA :
Dans l’éditeur VBA, allez sur Outils > Propriétés de VBAProject… Sélectionnez l’onglet Protection et vous allez pouvoir définir un mot de passe ! Pensez également à cocher la case Verrouiller le projet pour l’affichage afin que personne ne puisse voir ce code époustouflant !
Appuyez sur OK et sauvegardez votre fichier au format XLSM (celui qui supporte les macros). On va pouvoir tester si la manipulation a fonctionné. Pour cela, fermez et rouvrez votre fichier Excel puis rendez-vous sur l’onglet Développeur et cliquez sur Visual Basic.
Quand vous allez vouloir aller sur le projet VBA qui nous intéresse, une fenêtre va s’ouvrir pour demander le mot de passe.
Désormais, on peut essayer de faire sauter ce mot de passe !
Comment supprimer un mot de passe VBA ?
Passons maintenant à la partie difficile… rassurez-vous, rien de vraiment compliqué et on va tout voir ensemble étape par étape. Avant toute chose, faites une sauvegarde du fichier que vous souhaitez craquer, au cas où la méthode ne fonctionnerait pas.
Tout d’abord, nous allons devoir utiliser un éditeur hexadécimal. Si vous n’en avez pas, HxD est une bonne option gratuite, mais il existe beaucoup d’alternatives disponibles.
Préparation de notre fichier XLSM
Dans le cas d’un fichier XLSM (les fichiers avec Macro des versions récentes d’Excel), il va falloir faire une petite manipulation supplémentaire par rapport à un fichier XLS.
Trouvez le fichier sur votre disque dur, puis renommez-le en ajoutant .zip à la fin.
Ensuite, ouvrez-le avec un logiciel de compression d’archive comme WINRAR, IZArc ou tout simplement l’explorateur Windows sous Windows 10. Vous devriez alors y trouver un dossier libellé xl.
Dans ce dossier, cherchez le fichier intitulé vbaProject.bin, extrayez-le et ouvrez-le avec votre éditeur hexadécimal.
Si votre fichier est au format XLS, ouvrez-le directement dans l’éditeur hexadécimal sans passer par le changement d’extension !
Désactiver le mot de passe
C’est à ce stade qu’il est utile de savoir comment configurer un mot de passe.
En effet, vous allez devoir créer un nouveau document Excel bidon, y ajouter une macro et définir un mot de passe (dont il faudra se souvenir) comme décrit au début de cet article. Ce fichier va nous servir pour craquer le fichier sur lequel vous souhaitez faire sauter le mot de passe. L’idée c’est que nous allons prendre le code hexadécimal qui indique le mot de passe et l’insérer dans le fichier auquel nous voulons accéder. En gros, c’est une transplantation !
C’est pourquoi avec ce fichier bidon, il faut que vous reproduisiez toutes les étapes jusqu’à l’extraction du fichier vbaProject.bin.
Vous devriez maintenant avoir vos deux fichiers vbaProject.bin ouverts dans votre éditeur hexadécimal. Ne les confondez pas !!!
Use Ctrl + F dans l’éditeur pour trouver les caractères suivants :
CMG=
C’est le début du code qui indique le mot de passe actuel. Nous devons copier et coller trois valeurs et leur contenu :
CMG=
DPB=
GC=
Et voilà ce que ça donne :
Transférez ce code dans votre autre fichier vbaProject.bin, et placez-le au même endroit (là où vous retrouvez les 3 valeurs précitées CMG, DPB et CG), en vous assurant de ne rien supprimer d’autre. Sauvegardez votre fichier hexadécimal édité.
Maintenant, supprimez le fichier vbaProject.bin original du document dont nous essayons de supprimer les protections. Remplacez-le par votre fichier vbaProject.bin édité, puis changez son nom de fichier de .zip à .xlms ou .xls en fonction de ce que vous aviez à l’origine.
Ouvrez votre fichier dans Excel.
Allez sur l’onglet Développeur et cliquez sur Visual Basic. Puis essayez à nouveau d’accéder au projet VBA que vous souhaitez débloquer. Une fenêtre va vous demander votre mot de passe.
Normalement, si tout a fonctionné, le mot de passe qui va fonctionner et celui que vous aviez créé pour le second document, le document bidon.
Et si cela ne marche pas ?
Si jamais vous avez un problème et qu’Excel vous dit que le fichier est corrompu, vous allez devoir réessayer avec une copie de la sauvegarde du fichier que vous avez faite. La raison de ce problème, c’est que la chaîne de caractères que vous avez collée pour remplacer celle du fichier à craquer était plus longue que celle du fichier bidon.
Dans ce cas, il faut ajouter des 0 (zéros) à la chaîne de caractères que vous collez, juste avant les guillemets finaux.
CMG="xxxxxx"\r\nDPB="xxxxxxxx"\r\nGC="xxxxxxxxxx"
CMG="XXXX00"\r\nDPB="XXXXX000"\r\nGC="XXXXXX0000"
Dans la deuxième chaîne de caractères, on a ajouté des 0 pour qu’elle fasse la même longueur que celle d’origine dans le fichier à craquer !
N’hésitez pas à nous faire vos remarques si vous avez des solutions plus simples ou si vous ne comprenez pas, dans les commentaires ci-dessous !
Article mis à jour le 3 décembre 2021 par Byothe
Excellent article. Est ce qu’on peut louer vos services pour ce genre de manipulation ?
Vous avez tout ce qu’il faut dans cet article pour le faire vous-même 😉
Bonjour j’ai le problème inverse, la chaine que je veux coller est plus grande que la chaine du fichier à craquer. Comment faire?
Cordialement.
Bonjour, c’était mon cas, il faut supprimer quelques caractères de la chaine d’origine, pour ma part ça à fonctionné ! (même si ça parait étrange ^^)
Bonjour, tu as supprimé des caractères au hasard ?
Personnellement cela ne fonctionne pas et je e suis pas surpris, avec pourtant le même problème initial (la chaine que je cherche à insérer est plus longue que celle du fichier à craquer).
Je suis preneur de toute info car j’ai tenté plusieurs variantes mais rien n’y fait, il m’est impossible d’activer le contenu sans erreur.
Merci d’avance
Bonjour,
Quelqu’un a-t-il trouvé une solution svp?
Ma chaîne du fichier bidon à coller est également plus longue que celle du fichier à craquer. J’ai essayé de copier la chaîne entière, j’ai aussi essayé en supprimant les derniers caractères, sans succès dans les deux cas.
Merci d’avance
Bonjour,
J’ai suivi les étapes,( fichier bidon avec mdp1; j’insere les codes héxa du fichier a débloquer avec des 00 pour la longeur dans le bin bidon, je sauvegarde le .bin ; je met le .bin a la place du célui dans le fichier a débloquer). Mes macros sont pas corrompus mais pourtant le mots de passe mdp1 n’est pas le bon.
J’ai vérifié sur mon fichier bidon, le mdp1 est bien celui que je rentre dans le fichier a débloquer.
Une idée du souci ?
Bonjour,
As-tu essayé de reprendre dans l’ordre toutes les étapes ?
C’est bon j’ai réussi. J’ai inserer le code bidon dans le fichier .bin du fichier que je cherche a débloquer. ajouté des 0 si trop court et laissé tel quel si plus long. ça fonctionne.
J’avais compris la manip dans le mauvais sens.
Merci pour cette astuce.
(ellle mérite peut-être d’etre plus clair 🙂 )
Slt,
J’ai fait comme t’as dit, j’ai inséré le code bidon dans le .bin que je veux ouvrir, et j’ai ajouté des 0 dans la 1ere catégorie seulement car les autres sont plus longues. J’ai ensuite remplacé le .bin du fichier que je veux ouvrir par le nouveau .bin que je viens d’éditer. le mot de passe est toujours incorrect.
Bonjour,
Super, du 1er coup, j’ai cracker un pack de fonctions Excel.
Simple en faite, il fallait juste faire marcher sa matière grise.
J’ai plein de projet en tête du coup. lol
Merci beaucoup
Bonjour,
Cela ne fonctionne pas pour moi ou bien je n’y ai rien compris.
pas de problèmes pour retrouver les parties des codes concernées.
Ensuite je supprime la partie du code à craquer et je la remplace par le code du fichier bidon.
Là où ça se corse à mon avis c’est pour rajouter le nombre de 0 car le mot de passe du fichier à remplacer est plus long que celui du fichier bidon
j’ai ajouté des « 0 »à la fin de la chaine de caractère en fonction de la longueur de chaque partie mais ce la ne fonctionne pas. J’ai un nouveau fichier qui apparait à la sauvegarde. il s’appelle vbaProjectBinBak :'(
j’ai essayé de renommer le fichier mais cela semble impossible
quelqu’un a déjà eu ce problème?
est ce que je peux poster les 2 codes pour avoir des explications plus amples?
merci d’avance
Bonjour a vous, je souhaiterais rendre inaccessible fichier option de mon fichier excel par le vba ou autre. Merci
Bonjour,
Pas simple tout ça mais j’ai pu modifier le mot de passe grâce à ce super tuto. Merci beaucoup pour ce travail et ce partage.
Bonjour,
J’ai un soucis avec la manipulation.
Quand je veux dérouler mon projet dans l’onglet développeur, un message apparait : « Projet verrouillé : Le projet ne peut être affiché ».
Une idée ?
T le meilleur BYOTHE ca marche à 100%
BRAVO et merci beaucoup de partager ton savoir !!!!!!!!!!
5* 20/20 100%
Bonjour,
Merci pour ce tuto, est-ce normal que je ne puisse éditer le fichier vbaProject.bin se trouvant dans le zip ?
J’ai également tenté en réalisant l’extraction puis en déroulant les étapes puis de rezipper mon dossier précédemment zipper.
Je me retrouve avec un fichier corrompu, mes lignes à modifier sont pourtant plus longues que celles proposées
Cdlt,
Bonjour
super ça marche du premier coup avec des codes à copier plus longs
merci merci
Parfait ça 🙂
bonjour,
Après de nombreuse recherches je n’ai pas de fichier XL dont je ne peux rien faire pour virer ce mot de passe que notre ancienne collègue nous a laissé en partant. Une fois le xlsx passé en zip, je n’ai que des fichiers MsoDataStore, DataSpaces EncryptedPackage EncrytionInfo DocumentSummary et SummaryInformation…..help please!! 🙂
Parfait!!!
j’ai récupéré mes macros créé il y a de cela 7 ans :):):):)
j’ai du effectivement rajouter des 000
Un grand merci !!