Voila, je travaille sur un fichier qui ne comporte que des userforms et les macros sont lancées à partir d'un bouton.
Dans toutes ces macros, j'accéde à des feuilles excel que je dois de-proteger et re-protéger par un mot de passe.
Je souhaite pourvoir changer mon mot de passe de temps en temps et j'avais pensé pour éviter de modifier toutes mes macros une par une de déclarer une variable public qui irait chercher le mdp dans une cellule excel.
Je crée un module pour déclarer une mariable public.
mais après je calle car je ne sais pas comment l'initialiser.
J'ai lu tout beaucoup de sujet traitant du sujet mais je n'arrive pas à m'en sortir. C'est ma première tentative en variable public.
voilà ce que j'ai au démarrage dans mon module "changmotdepasse".
Code:
Public mdpfeuille As String
Public Sub motdp()
mdpfeuille = Sheets("Informations").Range("D13")
End Sub
Je reconnais que mettre un mot de passe dans un cellule excel est un peu niais, mais je ne sais pas comment faire autrement.
je peux fournir le fichier, mais il est un peu lourd maintenant.
merci de vos réponse.
par contre j'ai changer mon mot de passe, mais.... mes feuilles ont toujours en mémoire l'ancien mot de passe. Donc je ne peux plus les ouvrir! Oui c'est un peu balot.
j'ai essayer en fermant Excel mais rien. Donc je suis dans une impasse de mot de passe. en fait il faudrait que je reformate tous les mots de passe.
Avec ta méthode Pierrot, est-ce qu'il est possible de modifier le mdp sans rentrer dans la module?
Re : Declarer une variable public et l'initialiser.
Salut Gilles,
Il y a plein de solution, mais aucune n'est véritable bonne avec Excel.
Ton choix n'est donc pas plus mauvais qu'un autre.
Personnellement j'utilise une astuce disons vicieuse mais très efficace: un nom caché !
1. Aller dans le gestionnaire de nom et créer un nom:
Petite précision: Il n'est pas nécessaire de mettre des guillemets
2. il doit apparaître dans la liste des noms comme cela:
3. Ensuite on va dans la fenêtre d'exécution de l'IDE et il n'y a plus qu'à saisir l'instruction suivante et valider:
C'est fini ! Le mot de passe a disparu de la liste des noms. Il faut être ensuite un peu tordu pour deviner qu'un nom invisible s'y cache .
Ensuite il suffit de passer la valeur de la variable via
Re : Declarer une variable public et l'initialiser.
Merci bien pour ta réponse Jam,
Effectivement un nom caché n'est pas plus mal. Ce que j'avais fait c'est passé l'écriture en blanc dans ma feuille. donc illisible et comme ma feuille est protégée et que l'on ne peut pas y naviguer, on ne peut pas le voir.
Je vais essayer ta méthode.
En attendant je vais faire comme Pierrot le Suggère, dé-protéger mes feuilles avec l'ancien mot de passe.
Je suppose que si l'on change de mot de passe avec ta méthode Jam, j'aurais le même soucis.
Je vais me pencher sur un code pour modifier le mot de passe de toutes les feuilles automatiquement après modification du mdp.
Merci encore pour votre aide.
Option Explicit
Public Const mdp As String = "toto"
Public Const Ancienmdp As String = "titi"
Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Unprotect Ancienmdp
ws.Protect mdp
Next ws
End Sub
Re : Declarer une variable public et l'initialiser.
Cool Pierrot,
merci bien... mes cheveux te remercient par avance car là ils commençaient à friser!
je reviens vers vous dés que j'ai fini pour vous dire.
Re : Declarer une variable public et l'initialiser.
Bon voilà le travail final qui fonctionne à merveille grace à vous.
Dans le module
Code:
Option Explicit
Public mdpfeuille As String
Public ancienmdp As String
Public Sub motdp()
mdpfeuille = Sheets("Informations").Range("D13")
End Sub
Sub changement()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Unprotect ancienmdp
ws.Protect mdpfeuille
Next ws
End Sub
dans la macro qui me sert pour changer les mot de passe
Code:
Else: Sheets("Informations").Cells(13, 4) = feuilnewmdp
ancienmdp = mdpfeuille
mdpfeuille = feuilnewmdp
Call changmotdepasse.changement
End If
Avec ton code Pierrot, j'ai gagné un temps fou et des cheveux. Merci bien encore à vous deux.