IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Gestion de mot de passe


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut [VBA-E]Gestion de mot de passe
    Bonjour!
    Maintenant que j'ai récuppéré mon super programme de macro, je suis confronté à un nouveau problème (eh oui encore)

    Lors du lancement de la macro, un mot de passe est requis, voici comment je gère ce mot de passe: (avec une userform et une textbox)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click() 'bouton OK
        MotDePasse = UserForm1.TextBox1.Text
        If MotDePasse = "tartampion" Then
            MsgBox ("Mot de passe correct")
        Else
            MsgBox ("Mot de passe pas bon!")
        End If
    End Sub
    Bon j'ai vraiment simplifié parcequ'en fait c'est un peu plus compliqué mais tout vous montré n'aurait pas été utile!

    Ce que je voudrais c'est rajouter un bouton "changer le mot de passe" qui ouvre une autre userform avec trois textbox
    -textbox1 --> ancien mot de passe
    -textbox2 --> nouveau mot de passe
    -textbox3 --> confirmation du nouveau mot de passe

    A priori, rien de bien compliqué! j'ai presque réussi mais le problème, c'est que quand on clique sur le CommandButton "fermer" d'une autre de mes userform, le nouveau mot de passe n'est plus enregistré...

    Code du fameux CommandButton "fermer"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
        End
    End Sub
    Si vous pouviez me donner une piste ce serait bien gentil !!! Et gentil, je sais que vous l'êtes

    Merci d'avance!!!!
    Épargnez votre cerveau : éteignez votre télé !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Yolak,

    Dans le code affecté à votre formulaire qui permet de modifier le mot de passe avez-vous prévu l'enregistrement de votre fichier :

    Amicalement.

  3. #3
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Non mais en rajoutant cette ligne (qui semble fonctionner) le mot de passe n'est pas retenu.

    Je vais vous donner le code de manière plus explicite:

    code du module (permet l'initialisations de plusieurs variables)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Initialisation()
     
        'Initialisation des variables globales
        compteur_publique_listbox = 0
        compteur_ajout_d_article = 0
        nb_sachets = 0
        securite_retrait = 0
        total_bol1 = 0
        total_bol2 = 0
        total_bol3 = 0
        total_bol4 = 0
        total_bol5 = 0
        Acceuil.Show
        ThisWorkbook.Save
     
     
    End Sub
    Code de l'userform "MotDePasse" (comporte un bouton "ok", un bouton "abandonner", un bouton "changer le mot de passe" et une textbox)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub CommandButton1_Click() 'bouton ok
        Dim MotDePasseEntre, message As String
     
            'Mot de passe de démarrage de l'application
            MotDePasseEntre = TextBox1.Text
     
            'MotDePasseUtilisateur est une variable globale déclarée dans le module d'initialisation
            If MotDePasseEntre = MotDePasseUtilisateur Then
     
                MotDePasse.Hide
                Call Initialisation
     
            'Si l'utilisateur clique sur le bouton annuler, on quitte l'application
            ElseIf MotDePasseEntre = "" Then
                Exit Sub
     
            Else
            'En cas de mauvaise saisie du mot de passe:
                message = MsgBox("Mot de passe non valide", vbOKOnly + vbCritical, "Erreur!")
                End
            End If
     
    End Sub
     
    Private Sub CommandButton2_Click() 'bouton abandonner
        End
    End Sub
     
    Private Sub TextBox1_Change() 'cryptage de la saisie
        TextBox1.PasswordChar = "*"
    End Sub
     
    Private Sub CommandButton3_Click() 'bouton "changer de mot de passe"
        MotDePasse.Hide
        ChangementDeMotDePasse.Show

    Code de la userform "changement de mot de passe" (elle comporte 3 textbox, un bouton "ok" et un bouton "abandonner"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub CommandButton1_Click() 'bouton OK
        Dim AncienMotDePasse, NouveauMotDePasse, Confirmation As String
        Dim message
     
        'Affectation des saisie dans les textbox
        AncienMotDePasse = TextBox1.Text
        NouveauMotDePasse = TextBox2.Text
        Confirmation = TextBox3.Text
     
        'vérification des saisie et changement de mot de passe
        If AncienMotDePasse = MotDePasseUtilisateur And Confirmation = NouveauMotDePasse Then
     
            MotDePasseUtilisateur = NouveauMotDePasse
     
            message = MsgBox("Mot de passe modifié", vbInformation + vbOKOnly, "Information")
            ChangementDeMotDePasse.Hide
            Call Initialisation
     
        End If
     
    End Sub
     
    'Dès  qu'un caractère est entré dans la textbox1, les deux autres textbox deviennent accessibles
    Private Sub TextBox1_Change()
     
        TextBox1.PasswordChar = "*"
        If TextBox1.TextLength > 0 Then
            Frame1.Enabled = True
            TextBox2.Enabled = True
            TextBox3.Enabled = True
            Label2.Enabled = True
            Label3.Enabled = True
     
        End If
    End Sub
     
    'Cryptage des saisies dans les textbox
    Private Sub TextBox2_Change()
        TextBox2.PasswordChar = "*"
    End Sub
     
    Private Sub TextBox3_Change()
        TextBox3.PasswordChar = "*"
    End Sub
    Pour info, mon projet comporte plusieurs userform en plus des deux cités ci-dessus. "Acceuil" est une de ces userform supplémentaire

    En espérant que c'est clair (si non j'en suis confus ^^)
    Et merci d'avance
    Épargnez votre cerveau : éteignez votre télé !

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous


    Où est stocké le 1er MDP ? dans une cellule, dans du code, dans un fichier txt, ou autre ?

    A la lecture du code, j'ai l'impression que le nouveau MDP n'est pas stocké à la place de l'ancien.

    A+

    Eric

  5. #5
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Effectivement je n'ai pas du tout géré le stockage du mot de passe!
    Dois-je le faire dans un fichier .txt ??
    Épargnez votre cerveau : éteignez votre télé !

  6. #6
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    J'ai donc utilisé cette idée de fichier texte et voilà le code que j'ai tapé:

    code du module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Motdepasse_txt()
     
    Dim Fichier As NewFile
    Dim Data
     
    Open ("C:\Documents and Settings\******\Bureau\******\*******\******\motdepasse.txt") For Input As #1
    Line Input #1, Data
    MotDePasseUtilisateur = Data
    Close #1
    Call Export
    End Sub

    code de l'userform "changement de mot de passe"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Open ("C:\Documents and Settings\******\Bureau\****\****\****\motdepasse.txt") For Output As #1
            Write #1, MotDePasseUtilisateur
     
            Close #1
            message = MsgBox("Mot de passe modifié", vbInformation + vbOKOnly, "Information")
            ChangementDeMotDePasse.Hide
            Call Motdepasse_txt
    Seulement je suis confronté à un problème:

    Lorsque le mot de passe est recopié dans le fichier texte, des guillemets s'ajoutent bêtement, du coup faut ajouter des guillemets lors de la saisie du mot de passe pour qu'il soit valide!

    à part ça, ça fonctionne!
    Merci pour l'idée
    Épargnez votre cerveau : éteignez votre télé !

  7. #7
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MotDePasseSansGuillemets= Replace(MotDePasseUtilisateur , Chr(34), "")
    J'ai rajouté cette ligne pour supprimer les guillemets

    Merci à tous à bientôt je suppose
    Épargnez votre cerveau : éteignez votre télé !

  8. #8
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Parcontre, le mot de passe est facilement trouvable puisqu'il suffit d'ouvrir le fichier texte contenant le mot de passe lol

    Comment je peux faire pour rendre inaccessible le fichier texte par tout utilisateur (à part moi)?
    Épargnez votre cerveau : éteignez votre télé !

  9. #9
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous
    Bonjour Yolak

    Et oui, et en plus il faut que les 2 fichiers soient sur le même ordi (ou presque = réseaux)

    Le plus simple est de stocker les mdp directement sur le fichier "maître", dans une feuille protégée avec un mdp bien sur, et cachée. Juste pour les mauvais curieux pas "bons" en VBA, car de toutes façons, le mdp sera forcément dans le code VBA, pour modifier la feuille.

    Tu ne m'as pas répondu à la question : où sont stockés, au début, les mdp ?

    Si ils sont dans une procédure, tu peux également les modifier. Le seul intérêt : pas d'augmentation de la taille du fichier final, quoiqu' une feuille supplémentaire a un poids négligeable.

    A+

    Eric

  10. #10
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Le plus simple est de stocker les mdp directement sur le fichier "maître", dans une feuille protégée avec un mdp bien sur, et cachée.
    Heuu comment on fait ça?

    où sont stockés, au début, les mdp ?
    Ben dans le fichier texte!
    Épargnez votre cerveau : éteignez votre télé !

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous

    Juste un petit exemple joint.
    Tu as les noms dans la colonne A avec le mdp en B. Tu peux combiner les 2
    Il te reste à l'améliorer pour ton fichier, et des mdp.
    Il y a peut être plus simple.

    A+

    Eric
    Fichiers attachés Fichiers attachés

  12. #12
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Citation:
    Le plus simple est de stocker les mdp directement sur le fichier "maître", dans une feuille protégée avec un mdp bien sur, et cachée.


    Heuu comment on fait ça?
    Bon lol j'ai vraiment fait ça à l'arrache mais ça marche


    Code de la feuille cachée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Activate()
        Dim mdp As String
        If Sheets("Feuille_mdp").Visible = True Then
            Sheets("Feuille_mdp").Visible = False
            mdp = InputBox("Entrez le mot de passe", "accès restreint")
            If mdp = "******" Then
                Sheets("Feuille_mdp").Visible = True
            Else
                MsgBox ("Vous n'avez pas les droits pour avoir accès à la page")
            End If
        End If
    End Sub
    code de This WorkBook:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Sheets("Feuille_mdp").Visible = False
    End Sub
    Merci beaucoup pour les conseils!
    Cette fois je clique sur résolu et j'espère ne plus avoir de problèmes!!!
    ++
    Épargnez votre cerveau : éteignez votre télé !

  13. #13
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous

    Un petit + joint

    A+

    Eric
    Fichiers attachés Fichiers attachés

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tiens, je "t"'ai mis une boîte de dialogue pour saisir un mot de passe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Mettre un mot de passe sur l'onglet Modules
    Par flyfrog dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/06/2006, 14h25
  2. [VBA-A]probleme de mot de passe
    Par lumbroso dans le forum VBA Access
    Réponses: 27
    Dernier message: 26/05/2006, 09h52
  3. [VBA-E] Affecter un mot de passeà un bouton
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/03/2006, 10h49
  4. [LG] Gestion de mot de passe
    Par kakaroto dans le forum Langage
    Réponses: 3
    Dernier message: 02/08/2005, 09h13
  5. Génération aléatoire et gestion de mots de passe
    Par thomine dans le forum Sécurité
    Réponses: 5
    Dernier message: 23/03/2005, 16h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo