[Résolu] Declarer une variable public et l'initialiser

Gilles52300

XLDnaute Junior
Bonjour le Forum,

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.
 
Dernière édition:

Gilles52300

XLDnaute Junior
Re : Declarer une variable public et l'initialiser.

Merci Pierrot pour ta réponse.
Entre temps j'ai trouvé comment faire pour initialiser.
Private Sub userform_initialize()
Call changmotdepasse.motdp
End Sub

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?
 

Jam

XLDnaute Accro
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:
1 - création nom.png

Petite précision: Il n'est pas nécessaire de mettre des guillemets :eek:

2. il doit apparaître dans la liste des noms comme cela:
2. nom créé.png

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:
3. cacher nom.png

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
VB:
names("mdp").value
pour protéger ou déprotéger la feuille.

Bon courage

Edit: Salut Pierrot :D
 

Jam

XLDnaute Accro
Re : Declarer une variable public et l'initialiser.

Re,

Avec ta méthode Pierrot, est-ce qu'il est possible de modifier le mdp sans rentrer dans la module?

Avec la mienne oui ;)


Edit....en fait il faut tout de même aller dans la fenêtre d'exécution pour le modifier via une ligne de code
VB:
names("mdp").value="mon nouveau mot de passe"

Bon courage
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Declarer une variable public et l'initialiser.

Re, bonjour Jam:)
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.

bah... déprotège les avec l'ancien mot de passe.... tu les reprotégera par la suite.... ou alors quelque chose m'échappe... fort possible...
 

Gilles52300

XLDnaute Junior
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.
 

Pierrot93

XLDnaute Barbatruc
Re : Declarer une variable public et l'initialiser.

Re,

Je vais me pencher sur un code pour modifier le mot de passe de toutes les feuilles automatiquement après modification du mdp.

tu peux peut être t'inspirer de ceci :

Code:
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
 

Gilles52300

XLDnaute Junior
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.
 

Discussions similaires

Réponses
8
Affichages
224

Statistiques des forums

Discussions
312 490
Messages
2 088 877
Membres
103 981
dernier inscrit
vinsalcatraz