dim3311
Messages postés13Date d'inscriptiondimanche 16 septembre 2001StatutMembreDernière intervention12 juillet 2007
-
26 mars 2006 à 10:01
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
29 juin 2006 à 09:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 29 juin 2006 à 09:30
Salut à tous,
Nouvelle précision, pour la version "Office 2007 bêta" qui vient de sortir, le code pour la version 2003 (donné juste au-dessus) fonctionne encore parfaitement...
En fait, il me semble qu'il n'y a pas de différence sur ce point.
Amicalement,
Us.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 6 avril 2006 à 22:41
LOL... ét crite ossi... (lmu) -:);
Merci, A+
Us.
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 6 avril 2006 à 20:07
désolé, j'ai lmu trop vite.
OAXPPR c'est Adcence Office XP Password Recovery. Un logiciel payant mais très efficace. Il doit y avoir des version shareware.
++++
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 6 avril 2006 à 18:45
Euh... On dit la même chose ? nan ?
JE reprécise, pour la version 2002, si tu coches les deux dernières options, alors le code que tu proposes ne fonctionne pas. Autrement, c'est bon... J'AI vérifié avant de dire cela...
Quand AOXPPR, je ne connais pas. Peux-tu m'apporter une précision ?
Amicalement,
Us.
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 6 avril 2006 à 17:59
salut,
désolé de te contredire mais ce que je propose fonctionne sans cocher les deux dernières options.
Pour la force brute, j'ai abandonné depuis longtemps : AOXPPR déverrouille quasiment tout en une demie seconde.
++++
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 6 avril 2006 à 00:40
Salut Kalobit,
Désolé, mais ce que tu proposes ne fonctionne pas quand tu coches les deux dernières options de protection : "Modifier les objets" et "Modifier les sénarios"... C'était ce que je disais bien plus haut...
IL est à noter que pour 2002, il n'est utile de faire également la copie de cellule (seulement utile sous 97)...
En clair, la macro donne ceci :
Sub DeprotegeFeuilleExcel2002()
With ActiveSheet
.Protect vbNullString, , True, , , , , , , , , , , , , True 'VERSION 2002
.Unprotect vbNullString
End With
End Sub
=
Pour le classeur sous 2002, le code proposé ne fonctionne pas (et probablement sous d'autres verions).
Pour l'instant, je ne vois que deux possibilités. Soit de faire ce que j'ai expliqué le 1/04/2006... soit d'utiliser l'algo proposé par "chepakoidir" qui recherche un mot de passe valide par essai/erreur, beaucoup plus long bien sur... JE préfére également, ma version (non pas que, mais bon...) car en général un peu plus rapide.
qui permet de déprotéger une feuille, quel que soit les protections cochées...
JE pense que c'est valables pour les autres versions, mais pas essayé...
Amicalement,
Us.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 1 avril 2006 à 20:33
Merci, inspecteur...
J'ai trouvé une autre astuce pour les versions supérieur à 97, et où toutes les protections ont été cochées. IL suffit de passer par la Version Excel 97... Voici comment :
1) Enregistrer votre fichier sous la version 97-2002.
2) Ouvrir Excel 97 (bien sur, il faut encore le possèder) et ouvrir le fichier.
3) Enregistrez-le, afin de l'avoir en vraie version 97, et non en une version seulement compatible...
4) Appliquer les petites macros ci-dessus.
5) Enregistrer la version déprotégée.
IL vous reste plus qu'à l'ouvrir de nouveau avec votre version supérieure. Si votre fichier est un peu prés standard alors la mise en forme est conservée. Voilà, en espérant que cela vous sera utile...
Amicalement,
Us.
cs_derick
Messages postés41Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention25 août 2007 28 mars 2006 à 14:28
Avec Excel 2000, cela marche très bien ! Bravo us_30, c'est simple, mais vachement efficace... 10/10 (quand ce satané système de vote fonctionnera de nouveau, créd'jjju ;-))
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 26 mars 2006 à 23:46
Bonsoir Dim3311, y'a pas mal.
PRECISION : Cette programmation fonctionne parfaitement uniquement sous EXCEL 97.
JE viens de constater que pour EXCEL 2003, il fallait modifier la ligne Protect avec :
.Protect vbNullString, , , , , , True
Néanmoins, la situation n'est plus trés claire. En effet, si dans la longue liste des protections d'une feuille (bien plus d'objets sont présent sur cette version , que sur 97) si les deux derniers ont été cochés lors de la saisie du mot de passe, alors la déprotection ne fonctionne plus du tout !? Phénomène trés curieux, mais bon...
Et je ne sais pas sur qu'il advient pour d'autres versions. Avis aux amateurs...
Amicalement,
Us.
dim3311
Messages postés13Date d'inscriptiondimanche 16 septembre 2001StatutMembreDernière intervention12 juillet 2007 26 mars 2006 à 18:02
Oki, bien compris le fonctionnement et les astuces, mes excuses
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 26 mars 2006 à 17:10
Bonjour Dim3311,
C'est avec un grand plaisir, que je vais d'expliquer un peu plus le fonctionnement du code, afin que tu comprennes mieux... -:);
=
GRAND UN ) La problématique...
Admettons que tu as protégé une feuille Excel avec un mot de passe, avec Outils>Protection>Protéger la feuille, et en plus avec toutes les options (Contenu, Objets, Scénario).
ET bien sur, que tu as oublié ton mot de passe... (c'est dur de mémoriser un mot de passe !) ET comme tu t'en doutes, tu ne peux plus rien faire sur la feuille, maintenant totalement bloquée !
=
GRAND DEUX ) Une solution ?
Le plus grand conseil, aurait été de ne jamais mettre un mot de passe ! En effet, ce dernier n'est pas obligatoire. Mais oui, mais voilà, tu n'écoutes personne !
Existe-t-il quand même un moyen ?
OUI, et ce moyen tu l'as devant les yeux ! et par chance, fonctionne parfaitement !
=
GRAND TROIS ) Comment cela fonctionne ?
Réponse : Grâce à un problème de fonctionnement des fonctions UNPROTECT et PROTECT ! si, si !! Seul la connaissance pointue du fonctionnement de VBA nous permet de faire sauter la protection !
En effet, comme grand connaisseur de VBA, tu essayes de programmer la fonction de déprotection de la feuille... et comme tu le dis :
"y'a aucun intérêt de protéger la feuille avant de la déprotéger"
Par conséquent, tu code directement la déprotection de la feuille avec :
ActiveSheet.Unprotect vbNullString
et tu l'exécutes ! et VBA te renvoi :
Erreur 1004 :
Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que respectez la bonne case.
Loupé !
... et la feuille protégée par un mot de passe, reste dans le même état... En effet, pour déprotéger la feuille avec .UNPROTECT, il faut lui indiquer le mot de passe. Or, c'est précisément ce que décidément ta mémoire a oubliée !
Par exemple, si ton mot de passe était "MON PASSE", alors la bonne syntaxe aurait été :
ActiveSheet.Unprotect "MON PASSE"
BON, je pense que tu as compris maintenant que ta remarque ne tient pas debout ! Existe-t-il une astuce ?
Oui. Cette astuce consiste à définir un mot de passe sur l'ancien mot de passe, dit simplement. Puis, de le désactiver.
C'est donc la raison pour laquelle tu as vu dans le code, d'abord une protection avec .PROTECT, auquel on définit un mot de passe valant une chaîne nulle (vbNullString). Mais si on programme directement la déprotection (UNPROTECT) alors cela ne fonctionnera pas encore. IL Faut avant réaliser une action sur la feuille, cela permet une espèce de validation de la nouvelle protection. Et cette action ne peut être n'importe laquelle, disons que la fonction "Selection" ne serait pas valide... C'est pour ça qu'on réalise en fait une copie interne à VBA... (on pourrait d'autre référence de case, comme : .Range("D13").copy .range("B4"), mais bon, c'est sans importance...)
Voilà ! pour une feuille...
=
Pour un classeur, le principe est en tout point identique, sauf qu'il n'est pas ici nécessaire d'utiliser une action sur l'objet...
Voilà !
=
A noter que pour Word, cette astuce ne fonctionne pas. PROTECT n'ayant pas exactement le même comportement.
=
A revoir ton commentaire
=
Amicalement,
Us.
dim3311
Messages postés13Date d'inscriptiondimanche 16 septembre 2001StatutMembreDernière intervention12 juillet 2007 26 mars 2006 à 10:01
Salut
y'a aucun intérêt de protéger la feuille avant de la déprotéger dans ta première fonction. Et la petite commande de copie de cellule "A1" vers elle même montre que tu débute vraiment dans le VBA.
29 juin 2006 à 09:30
Nouvelle précision, pour la version "Office 2007 bêta" qui vient de sortir, le code pour la version 2003 (donné juste au-dessus) fonctionne encore parfaitement...
En fait, il me semble qu'il n'y a pas de différence sur ce point.
Amicalement,
Us.
6 avril 2006 à 22:41
Merci, A+
Us.
6 avril 2006 à 20:07
OAXPPR c'est Adcence Office XP Password Recovery. Un logiciel payant mais très efficace. Il doit y avoir des version shareware.
++++
6 avril 2006 à 18:45
JE reprécise, pour la version 2002, si tu coches les deux dernières options, alors le code que tu proposes ne fonctionne pas. Autrement, c'est bon... J'AI vérifié avant de dire cela...
Quand AOXPPR, je ne connais pas. Peux-tu m'apporter une précision ?
Amicalement,
Us.
6 avril 2006 à 17:59
désolé de te contredire mais ce que je propose fonctionne sans cocher les deux dernières options.
Pour la force brute, j'ai abandonné depuis longtemps : AOXPPR déverrouille quasiment tout en une demie seconde.
++++
6 avril 2006 à 00:40
Désolé, mais ce que tu proposes ne fonctionne pas quand tu coches les deux dernières options de protection : "Modifier les objets" et "Modifier les sénarios"... C'était ce que je disais bien plus haut...
IL est à noter que pour 2002, il n'est utile de faire également la copie de cellule (seulement utile sous 97)...
En clair, la macro donne ceci :
Sub DeprotegeFeuilleExcel2002()
With ActiveSheet
.Protect vbNullString, , True, , , , , , , , , , , , , True 'VERSION 2002
.Unprotect vbNullString
End With
End Sub
=
Pour le classeur sous 2002, le code proposé ne fonctionne pas (et probablement sous d'autres verions).
Pour l'instant, je ne vois que deux possibilités. Soit de faire ce que j'ai expliqué le 1/04/2006... soit d'utiliser l'algo proposé par "chepakoidir" qui recherche un mot de passe valide par essai/erreur, beaucoup plus long bien sur... JE préfére également, ma version (non pas que, mais bon...) car en général un peu plus rapide.
Sa référence : http://www.vbfrance.com/codes/OTER-PROTECTION-FEUILLES-CLASSEUR-EXCEL-METHODE-SANS-ECHEC_36857.aspx
Voilà, pour l'instant... Avis aux amateurs !
Amicalement,
Us.
5 avril 2006 à 16:22
une idée pour la déprotection du classeur avec 2002 ?
pour les feuilles, j'avais posté ça la semaine dernière mais c'est pas passé :
With ActiveSheet
.Protect vbNullString, , , , , , True
.Protect vbNullString, , , , , , , , , , True
.Unprotect vbNullString
End With
merci encore
+++
et hop 10/10
K@lobit
4 avril 2006 à 20:24
J'ai trouvé ! pour la version 2002, utiliser la ligne suivante :
.Protect vbNullString, , True, , , , , , , , , , , , , True 'VERSION 2002
qui permet de déprotéger une feuille, quel que soit les protections cochées...
JE pense que c'est valables pour les autres versions, mais pas essayé...
Amicalement,
Us.
1 avril 2006 à 20:33
J'ai trouvé une autre astuce pour les versions supérieur à 97, et où toutes les protections ont été cochées. IL suffit de passer par la Version Excel 97... Voici comment :
1) Enregistrer votre fichier sous la version 97-2002.
2) Ouvrir Excel 97 (bien sur, il faut encore le possèder) et ouvrir le fichier.
3) Enregistrez-le, afin de l'avoir en vraie version 97, et non en une version seulement compatible...
4) Appliquer les petites macros ci-dessus.
5) Enregistrer la version déprotégée.
IL vous reste plus qu'à l'ouvrir de nouveau avec votre version supérieure. Si votre fichier est un peu prés standard alors la mise en forme est conservée. Voilà, en espérant que cela vous sera utile...
Amicalement,
Us.
28 mars 2006 à 14:28
26 mars 2006 à 23:46
PRECISION : Cette programmation fonctionne parfaitement uniquement sous EXCEL 97.
JE viens de constater que pour EXCEL 2003, il fallait modifier la ligne Protect avec :
.Protect vbNullString, , , , , , True
Néanmoins, la situation n'est plus trés claire. En effet, si dans la longue liste des protections d'une feuille (bien plus d'objets sont présent sur cette version , que sur 97) si les deux derniers ont été cochés lors de la saisie du mot de passe, alors la déprotection ne fonctionne plus du tout !? Phénomène trés curieux, mais bon...
Et je ne sais pas sur qu'il advient pour d'autres versions. Avis aux amateurs...
Amicalement,
Us.
26 mars 2006 à 18:02
26 mars 2006 à 17:10
C'est avec un grand plaisir, que je vais d'expliquer un peu plus le fonctionnement du code, afin que tu comprennes mieux... -:);
=
GRAND UN ) La problématique...
Admettons que tu as protégé une feuille Excel avec un mot de passe, avec Outils>Protection>Protéger la feuille, et en plus avec toutes les options (Contenu, Objets, Scénario).
ET bien sur, que tu as oublié ton mot de passe... (c'est dur de mémoriser un mot de passe !) ET comme tu t'en doutes, tu ne peux plus rien faire sur la feuille, maintenant totalement bloquée !
=
GRAND DEUX ) Une solution ?
Le plus grand conseil, aurait été de ne jamais mettre un mot de passe ! En effet, ce dernier n'est pas obligatoire. Mais oui, mais voilà, tu n'écoutes personne !
Existe-t-il quand même un moyen ?
OUI, et ce moyen tu l'as devant les yeux ! et par chance, fonctionne parfaitement !
=
GRAND TROIS ) Comment cela fonctionne ?
Réponse : Grâce à un problème de fonctionnement des fonctions UNPROTECT et PROTECT ! si, si !! Seul la connaissance pointue du fonctionnement de VBA nous permet de faire sauter la protection !
En effet, comme grand connaisseur de VBA, tu essayes de programmer la fonction de déprotection de la feuille... et comme tu le dis :
"y'a aucun intérêt de protéger la feuille avant de la déprotéger"
Par conséquent, tu code directement la déprotection de la feuille avec :
ActiveSheet.Unprotect vbNullString
et tu l'exécutes ! et VBA te renvoi :
Erreur 1004 :
Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que respectez la bonne case.
Loupé !
... et la feuille protégée par un mot de passe, reste dans le même état... En effet, pour déprotéger la feuille avec .UNPROTECT, il faut lui indiquer le mot de passe. Or, c'est précisément ce que décidément ta mémoire a oubliée !
Par exemple, si ton mot de passe était "MON PASSE", alors la bonne syntaxe aurait été :
ActiveSheet.Unprotect "MON PASSE"
BON, je pense que tu as compris maintenant que ta remarque ne tient pas debout ! Existe-t-il une astuce ?
Oui. Cette astuce consiste à définir un mot de passe sur l'ancien mot de passe, dit simplement. Puis, de le désactiver.
C'est donc la raison pour laquelle tu as vu dans le code, d'abord une protection avec .PROTECT, auquel on définit un mot de passe valant une chaîne nulle (vbNullString). Mais si on programme directement la déprotection (UNPROTECT) alors cela ne fonctionnera pas encore. IL Faut avant réaliser une action sur la feuille, cela permet une espèce de validation de la nouvelle protection. Et cette action ne peut être n'importe laquelle, disons que la fonction "Selection" ne serait pas valide... C'est pour ça qu'on réalise en fait une copie interne à VBA... (on pourrait d'autre référence de case, comme : .Range("D13").copy .range("B4"), mais bon, c'est sans importance...)
Voilà ! pour une feuille...
=
Pour un classeur, le principe est en tout point identique, sauf qu'il n'est pas ici nécessaire d'utiliser une action sur l'objet...
Voilà !
=
A noter que pour Word, cette astuce ne fonctionne pas. PROTECT n'ayant pas exactement le même comportement.
=
A revoir ton commentaire
=
Amicalement,
Us.
26 mars 2006 à 10:01
y'a aucun intérêt de protéger la feuille avant de la déprotéger dans ta première fonction. Et la petite commande de copie de cellule "A1" vers elle même montre que tu débute vraiment dans le VBA.
Pareil pour la déprotection du classeur.
A revoir le code