ÔTER LA PROTECTION D'UNE FEUILLE GRACE À UN BUG D'EXCEL

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 8 déc. 2009 à 15:46
 AvGT - 10 janv. 2013 à 14:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50949-oter-la-protection-d-une-feuille-grace-a-un-bug-d-excel

Bonjour!!
Je confirme le bug (y inclus la déprotection de tous les fichiers ouverts) dans Excel 2010 avec VBA 7.0, sous Windows7...
Effectivement, écœurant!!
Reste à tester la solution de de JJM78 du 12/12/2009 00:20:28 ...
A suivre...
delattre13 Messages postés 20 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 3 mai 2013
26 mai 2012 à 21:56
Bonjour,

ça marche Nickel sur les feuilles protégée avec mot de passe mais pas sur le VBA Excel 2007.

Je sais que c'est peu vieux mais le moyen pour visualiser tous les codes VBA Excel sans réfléchir c'est de l'ouvrir avec OpenOffice et là c'est un vrai plaisir de lire tous les codes VBA protégés par les et les autres.
Ceci dit en général ils n'offrent que peu d'intérêt car ils ont une fonction bien précise pour un classeur donné, et tout comme les boulons et les vis on a jamais la bonne sous la main. Donc on cherche sur Internet les instructions qui nous conviennent.
PWM63 Messages postés 127 Date d'inscription lundi 11 octobre 2004 Statut Membre Dernière intervention 18 mai 2016
14 déc. 2009 à 14:49
Reste plus qu'à vérifier si ce bug existe sur ooo :)
et à compter le nombre de jours avant de voir venir le correctif...
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 déc. 2009 à 11:20
je vous ai rajouté une petite parade à ce "bug" (voir la description)

je confirmes la réponse affirmative de US_30, un mot de passe sur le code VBA n'est pas plus une protection que le mot de passe sur une feuille.

Le meilleur moyen que pourrait nous donner MS serait d'ajouter un évenement de déprotection. Mais hélas il n'existe pas, même au niveau de l'application dommage...
Je suis en train travailler sur le sujet et voir si l'on peut détourner un des évènements dispo. pour detecter une tentative de déprotection. mais dans touts les cas il restera toujours le problème du mot de passe sur le code qui comme dit plus haut n'est en rien une protection.

-JJM78, aucun problème pour afficher une feuille cachée même avec xlverihidden via une macro sur un autre classeur et même si elle est protégée.
vas voir ici : http://www.vbfrance.com/codes/ASTUCE-AMELIORER-SECURITE-ACCES-DONNEES-CODE-FICHIER-EXCEL_48448.aspx
je donnes quelques autres astuces methode pour ça.

3ddI7IHd
jacpapy Messages postés 1 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 14 décembre 2009
14 déc. 2009 à 10:48
Bonjour,

J'ai fait un test en protégeant moi-même la feuille
dans ce cas le bouton "déprotection via le bug" ne s'active pas
J'ai donc exécuter la macro "Bigfish_3ddI7IHd", la seule visible
Le résultat est correct, la protection est levée
Je suis en version V2007 sous vista, mais la version du VBA est la même que toi 6.3

jacpapy
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 déc. 2009 à 19:03
JJM78 -> peut-être confonds-tu cet espace (commentaire d'une source déposée) et le forum
(bien que nos forums n'acceptent pas non plus les pièces jointes contrairement à d'autres)

Alain Proviste te proposait simplement de, toi aussi, déposer ta source.
et pour ce faire il y a des pas mal de liens à droite à gauche

allez : http://www.vbfrance.com/ajoutcode.aspx

++ :)
jjm78 Messages postés 4 Date d'inscription samedi 28 novembre 2009 Statut Membre Dernière intervention 12 décembre 2009
12 déc. 2009 à 18:20
C'est exactement ce que je voulais faire, le classeur est tout prêt. Mais nulle part je ne trouve de bouton ou de lien du genre "Joindre un fichier". Comment fait-on ? Pourquoi sur Internet rien n'est jamais simple et évident, en contradiction avec toutes les règles de programmation ?
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
12 déc. 2009 à 12:32
Oui JJM78, post une source et on comprendra mieux ta description... puis, on verra... En effet, la propriété 'xlVeryHidden' est encore à étudier plus en détail...
Quant à "je ne sais pas s'il est possible de déprotéger le code VBA sous Excel 2007"... moi je connais la réponse... affirmative! -:);

Amicalement,
Us.
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
12 déc. 2009 à 01:37
il y a du vba et des macros dans ce que tu décris donc tu peux poster une nouvelle source
jjm78 Messages postés 4 Date d'inscription samedi 28 novembre 2009 Statut Membre Dernière intervention 12 décembre 2009
12 déc. 2009 à 00:20
Je viens d'essayer d'appliquer ce bug sur une feuille Excel protégée de manière un peu spéciale. Il ne déprotège pas cette feuille.
En même temps cela me permet de présenter une protection indétectable et impossible à contourner, même par des logiciels trouvés sur Internet.

Le but est de tout simplement cacher une feuille de façon parfaite (elle est complètement invisible et ne figure pas dans la liste des feuilles pouvant être déprotégées). En fait, seul VBA est capable de la gérer. Cette feuille pourrait, par exemple, cacher des informations secrètes ou des mots de passe d'autres applications.

La déprotection (qui affiche la feuille cachée), est particulièrement difficile à trouver : il faut entrer un mot de passe (non visible) à un endroit particulier de la feuille (invisible), puis double-cliquer à un autre emplacement lui aussi invisible. En double-cliquant sur ce dernier emplacement, la feuille sera de nouveau rendue invisible.
Par sécurité, cette feuille sera rendue automatiquement invisible à la fois lors de la fermeture du classeur et au moment de son ouverture.
par conséquent rien n'indique la présence d'une feuille totalement invisible et rien n'indique la présence des deux zones de commande.
Dans ces conditions il est quasiment impossible de savoir quoi faire pour rendre cette feuille visible, dont on ne connaît même pas l'existence. À la rigueur, en passant en mode "Création" on pourrait voir les "poignées" de ces deux zones, mais il faudrait encore savoir où chercher et ce qu'elles signifient. Sous Visual Basic, en déprotégeant le code on verrait l'existence de cette feuille cachée, mais c'est tout (je ne sais pas s'il est possible de déprotéger le code VBA sous Excel 2007).
Le fait de devoir effectuer un double clic empêche une éventuelle commande accidentelle. Et de toute façon sans le bon mot de passe (incrackable) il n'est pas possible de l'afficher.
Seule une instruction VBA le pourrait, à condition de déprotéger le code et de l'étudier (le code peut être caché au milieu d'un grand nombre de fonctions et d'instructions).

Ci-joint un classeur au format Excel 97-2003, pour démonstration.
À l'ouverture on voit trois feuilles : Accueil, Feuil1 et Feuil2. Feuil1 est protégée par mot de passe, de façon classique et le bouton "Bug" sur la feuille Accueil permet d'appliquer le bug en question sur ce fil et de la déprotéger.
Mais il existe une autre feuille, nommée "Cachée", qui est invisible. Le mot de passe (toto) est repris sur la feuille Accueil, pour les essais seulement, évidemment.
Les deux zones cachées sont situées par dessus les cellules A4 (contre le bord de la feuille) et B4 (contre la bordure noire verticale). Attention, leur étendue ne correspond pas à celle des cellules (passer en mode Création pour les mettre en évidence).

On commence par cliquer sur la première zone de gauche (au niveau de A4), pour entrer le mot de passe (toto), en invisible. Puis on double-clique sur la deuxième zone (également invisible, au niveau de la fin de B4). Toute saisie de mauvais mot de passe ou simple clic ne produit absolument aucun effet et toute action sur la deuxième zone efface aussitôt le mot de passe saisi (qui était de plus invisible).

Avec le bon mot de passe et le double clic au bon endroit, la feuille nommée "Cachée" devient visible.
Un nouveau double clic sur la deuxième zone la cache de nouveau et il faudra entrer le mot de passe et double cliquer sur la deuxième zone pour la rendre visible encore une fois. À la fermeture et à l'ouverture du classeur, elle sera rendue invisible par défaut.

Le code est très simple : il est basé sur la propiété "xlVeryHidden" accessible en VBA.
Module1 contient la procédure Auto_Open qui cache la feuille au démarrage, ave une gestion du booléen "EstVisible" pour savoir où on en est.
Idem pour la procédure "Auto_Close".

La feuille "Accueil" contient le code testant le contenu de la première zone (TextBox1), pour gérer l'affichage ou non de la feuille "Cachée".

Lea première zone est simplement un TextBox dont les propriétés BackColor, BorderColor et ForeColor sont à blanc, sans bordure et la propriété BackStyle transparente.
La deuxième zone est une simple image blanche insérée, dont les propriétés sont également à blanc et transparente.
Il ne reste plus qu'à déplacer ces zones n'importe où et à s'en souvenir...

Juste un petit problème : comment on joint un fichier Excel à un message ? :-)
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
9 déc. 2009 à 21:03
Voici donc une autre alternative à ma macro de déprotection de feuille Excel. Je parie que le code fonctionne pour toutes les versions, sauf Excel97 !

Pour ma part, je ne cherche plus dans ce domaine, connaissant encore une autre alternative... Si on cherche on trouve... Tout comme rendre les versions d'Office limitées en versions complètes en changeant un mot ! ... un seul... On voit bien que la politique de Microsoft n'est pas d'interdire la diffusion de ces produits... et cela leur réussi ! commercialement parlant... Bill Gates était bien un des plus fortuné du monde...

Amicalement,
Us.
jjm78 Messages postés 4 Date d'inscription samedi 28 novembre 2009 Statut Membre Dernière intervention 12 décembre 2009
9 déc. 2009 à 12:18
Cela marche parfaitement sous Excel 2007. Comme quoi Microsoft a un souci constant d'assurer la compatibilité entre ses versions... :-)
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 déc. 2009 à 12:02
Bravo, BIGFISH_LEVRAI toujours aussi perspicace. Avec toi Excel a intérêt à bien se tenir!
Bonne continuation dans tes programmes.
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
9 déc. 2009 à 11:05
écœurant

et

bon à savoir
merlin622 Messages postés 1 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 9 décembre 2009
9 déc. 2009 à 09:47
Joli bug en effet... Reproductible chez moi sur Excel 2003 SP3.

Cela fonctionne même si le classeur est protégé.

Ceci dit il y a longtemps que je n'accorde plus aucune confiance aux fonctions de protection Excel. Il y a trop de macros disponibles sur internet pour cracker ces protections. Mais de là à tomber sur des bugs aussi grossiers...
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 déc. 2009 à 16:15
Salut PCPT,

je viens de faire le test que tu m'as suggeré:

Resultat ça marche !

Détails du test:

3 fichiers.

- le premier contient des feuilles protégées par mot de passe
- le second contient des feuilles protégées par mot de passe
- le troisieme contient la macro suivante dans un module:

Sub BugTest()
'Boucle sur toutes les feuilles de touts les classeurs ouvert
Dim feuille As Worksheet, Classeur As Workbook
For Each Classeur In Workbooks
For Each feuille In Classeur.Worksheets
With feuille
.Protect AllowFormattingCells:=Not .Protection.AllowFormattingCells
.Unprotect
End With
Next
Next
End Sub

Voila pas glop !
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 déc. 2009 à 15:46
salut,

pas connaisseur du fonctionnement de .protect, mais en effet le résultat est reproductible aussi sous excel 2007

cependant : la protection est logiquement faite par le code vba
du coup la macro n'est pas sensée pouvoir "déprotéger" un autre classeur que celui porteur de la macro, si?

c'est cet exemple là qui serait révélateur d'une faille réelle