Changer le mot de passe de protection/déprotection d'une feuille excel

hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011 - 3 oct. 2011 à 10:01
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011 - 3 oct. 2011 à 14:35
Bonjour à vous tous,

Voilà je dois proteger des feuilles d'un fichier "A" Excel par mot de passe. Ce mot passe et contenu dans un autre fichier "B" Excel qui paramètre l'autre.

Bon là n'est pas le problème, car quand je veux déproteger une feuille pour réaliser une action, je viens bien chercher le mot de passe dans mon fichier "B".

Mon problème se situe au moment ou je veux changer le mot de passe de déprotection. En effet en changeant le mot de passe dans mes paramètres je dois continuer à déproteger mes feuilles sans soucis!

Pour cela j'ai remarqué que lorsque que l'on reproteger la feuille, Excel redemande un nouveau mot de passe. Je peux donc aisément (enfin presque) changer le mot de passe à volonter.

J'ai donc créé une fonction permettant à l'utilisateur de changer le mot de passe dans les paramètres. Bien sure elle garde en mémoire le nouveau mot de passe et l'ancien.

Ensuite dans la partie workbook du fichier "A" je change le mot de passe de protection/déprotection. Pour cela je déprotege ma feuille avec le mot de passe actuel et je regarde si cette action génére une erreur, si oui, alors on a changé le mot de passe donc je viens lire l'ancien et je déprotege. Ensuite je viens lire le nouveau mot de passe et je protege ma feuille avec.

Voici mon code:

On Error Resume Next
Workbooks("AutoEtalon").Worksheets("Rapport d'étalonnage fléau").Unprotect (niveau3)
If Err = 1004 Then 'si le mot de passe à changer alors on prend l'ancien et on déprotège la feuille
    niveau3 = Workbooks("Paramètrages").Worksheets("Paramètrages").Cells(691, 18).Value
    Workbooks("AutoEtalon").Worksheets("Rapport d'étalonnage fléau").Unprotect (niveau3)
    'puis on reprotege avec le nouveau mot de passe
    niveau3 = Workbooks("Paramètrages").Worksheets("Paramètrages").Cells(691, 10).Value
    Worksheets("Rapport d'étalonnage fléau").Protect (niveau3)
End If


Cela marche au poil enfin pour les deux premiers changement de mot de passe!
En effet quand je mets au tout début "flo" comme mot de passe tout va bien j'ai initialisé toute mes feuilles ça marche.
Ensuite je change "flo" par "toto" le programme génére bien une erreur 1004, vient bien lire l'ancien mot de passe "flo" et réécrit le nouveau "flo"
Finalement je remplace "toto" par "papa" et "flo" par "toto" et là il génére bien une erreur 1004 il prend bien en compte le nouveau mot de passe mais quand je veux déproteger ma feuille c'est avec le mot de passe "flo"!

Je sais pas pourquoi ça fait ça. Si quelqu'un à une idée?? :)
Merci

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
3 oct. 2011 à 10:07
Bonjour,

tout simplement parce que tu n'as rien modifié dans Workbooks("Paramètrages").Worksheets("Paramètrages").Cells(691, 10)
qui a donc gardé sa valeur ancienne !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011
3 oct. 2011 à 10:26
Bonjour,
Hum excuse moi je t'ai introduit en erreur. J'ai oublié de préciser que j'écrase bien mon ancien mot de passe à chaque fois! En gros quand je veux changer le mot de passe le nouveau se mets toujours dans la cellule (691,10) et l'ancien toujour dans la cellule(691,18). => Et ça ca marche bien
En faite je me demande si Excel ne retient pas lui aussi les mots de passe un peu comme ce que je fais! :(
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
3 oct. 2011 à 10:28
Mais ce qui me gêne énormément dans ton mécanisme, c'est que finalement ta protection n'en est- plus une, dès lors qu'en cas d'erreur, il va spontanément chercher le bon mot de passe et déprotège !
C'est étrange.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
3 oct. 2011 à 10:30
Montre ton code complet, car, dans celui que tu as montré, on ne voit pas ce que tu dis avoir fait.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011
3 oct. 2011 à 10:43
Alors voici la partie qui me permet de changer le mot de passe:
Private Sub CommandButton5_Click()
    'On test si les renseignements sont donnés et on les récupére
    If TextBox14.Text <> "" Then
        MDPActuel = TextBox14.Text
    Else
        MsgBox "Veuillez saisir le mot de passe actuel!", vbInformation, "PMS 51"
        Exit Sub
    End If
    If TextBox12.Text <> "" Then
        MDPNouveau = TextBox12.Text
    Else
        MsgBox "Veuillez saisir le nouveau mot de passe!", vbInformation, "PMS 51"
        Exit Sub
    End If
    If TextBox13.Text <> "" Then
        MDPRenouveau = TextBox13.Text
    Else
        MsgBox "Veuillez resaisir le nouveau mot de passe pour confirmation!", vbInformation, "PMS 51"
        Exit Sub
    End If
    'On vérifie le mot de passe actuel
    If MDPActuel <> CStr(Cells(691, 10).Value) Then
        MsgBox "Ce n'est pas le bon mot de passe!", vbCritical, "PMS 51"
        TextBox14.Text = ""
        Exit Sub
    End If
    'On vérifie les nouveau mot de passe
    If MDPNouveau <> MDPRenouveau Then
        MsgBox "Les nouveaux mot de passe ne correspondent pas!", vbCritical, "PMS 51"
        TextBox13.Text = ""
        Exit Sub
    End If
    niveau1 = CStr(Cells(691, 10).Value)
    ActiveSheet.Unprotect (niveau1)
    Cells(691, 10).Value = MDPNouveau
    Cells(691, 18).Value = MDPActuel
    niveau1 = CStr(Cells(691, 10).Value)
    ActiveSheet.Protect (niveau1)
    MsgBox "Le mot de passe a été modifier." + Chr(10) + Chr(13) + "Veuillez redémarrer AutoEtalon", vbExclamation, "PMS 51"
    Unload Me
End Sub

Et la je recherche l'ancien mot de passe si erreur 1004
On Error Resume Next
Workbooks("AutoEtalon").Worksheets("Rapport d'étalonnage fléau").Unprotect (niveau3)
If Err = 1004 Then 'si le mot de passe à changer alors on prend l'ancien et on déprotège la feuille
    niveau3 = Workbooks("Paramètrages").Worksheets("Paramètrages").Cells(691, 18).Value
    Workbooks("AutoEtalon").Worksheets("Rapport d'étalonnage fléau").Unprotect (niveau3)
    'puis on reprotege avec le nouveau mot de passe
    niveau3 = Workbooks("Paramètrages").Worksheets("Paramètrages").Cells(691, 10).Value
    Worksheets("Rapport d'étalonnage fléau").Protect (niveau3)
End If


Ben je pense pas! Imaginons on vient juste de modifier le mot de passe alors pour l'instant les feuilles sont toujours proteger par l'ancien MdP donc on va les déproteger avec pour ensuite les reproteger avec le nouveau MdP. Ensuite si on entre un mauvais mot de passe alors oui il va générer une erreur et va prendre l'ancien mot de passe qui est lui aussi mauvais! Donc il je devrais pas avoir de problème de sécurité!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
3 oct. 2011 à 11:24
J'ai des difficultés à comprendre ton mécanisme.
Sur quelle feuille est placé ton bouton CommandButton5 ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011
3 oct. 2011 à 11:49
Il est placé dans une UserForm contenant des Multipages (car plusieurs fonctionnalité demandant un mot de passe). Et ensuite j'actualise mes mots de passe en redémarrant mon programme principale.
0
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011
3 oct. 2011 à 11:52
Mon CommandButton5 permet juste de changer les valeurs de mes deux cellules c'est ensuite que je viens lire les valeur pour tester l'erreur.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
3 oct. 2011 à 11:54
Il est placé dans une UserForm contenant des Multipages (car plusieurs fonctionnalité demandant un mot de passe). Et ensuite j'actualise mes mots de passe en redémarrant mon programme principale.

Ouais...
J'ai alors mal ou incomplètement posé ma question.
Quelle est dans ce cas la feuille active, lorsque tu cliques sur ce Command5 que tu as mis dans un userform ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011
3 oct. 2011 à 11:58
Et bien c'est ma feuille paramètrages, de mon classeur paramètrages
0
hflo Messages postés 13 Date d'inscription jeudi 15 septembre 2011 Statut Membre Dernière intervention 3 octobre 2011
3 oct. 2011 à 14:35
J'ai trouvé et c'est vraiment une erreur stupide!
En faite comme mon fichier principal est en lecture seul je ne peux pas l'enregistrer contrairement à mon fichier paramètrages. Donc en réalité le mot de passe de déprotection n'a jamais été changer du moins pas de façon permanante! Donc au bout du troisième mot de passe différent ça plante!

Je te remercie de ton aide! (une nouvelle fois)
0