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 :

Macro VBA pour changer de mot de passe [XL-2010]


Sujet :

Macros et VBA Excel

  1. #41
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Pierre, bonjour le forum,

    Toutes mes excuses d'avoir tardé à te répondre, mais après notre dernière discussion j'ai du partir en réunion et après il était un peu tard.

    Pour modifier le mot de passe, j'utilise ce code qui est lié au bouton "Valider" du formulaire. Si j'ai bien compris, je dois faire une compilation du code que tu m'as proposé, modifié bien entendu, et du mien ?
    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
     
    Private Sub CmbValide_Click()
     
    Unload Me
     
           mdp = Sheets("Passe").Cells(1, 1).Value
    If AncMdp.Value = mdp Then
          Sheets("Passe").Cells(1, 1).Value = NouvMdp.Value
    mdp = NouvMdp.Value
     
    Else
     
    MsgBox "L'ancien mot de passe n'est pas valable"
     
    End If
     
    End Sub
      0  0

  2. #42
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu ne peux pas enregistrer le nouveau mot de passe à la place de l'ancien avant d'avoir déprotégé les feuilles avec l'ancien et de les avoir protégées à nouveau avec le nouveau mot de passe. Sinon, comment feras-tu pour les déprotéger par la suite puisque tu auras supprimé le mot de passe qui permet de les déprotéger.

    Tu peux copier ma procédure dans un module standard, et avant d'écraser l'ancien code par le nouveau, tu appelles cette procédure au départ de l'évènement sur le bouton et tu lui passe les deux MDP.

    A l'intérieur de la procédure de déprotection/protection, tu devras peut-être gérer la liste des feuilles à protéger car celle que je t'ai donnée protège toutes les feuilles du classeur.

    La manière de t'y prendre pour déterminer les feuilles à traiter dépendra de la conception de ton classeur. Ca peut être une liste des feuilles dans une feuille cachée, ou bien en fonction du name ou mieux du codename. C'est un peu à toi de voir...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  3. #43
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Mais mon code n'enregistre t-il pas le nouveau mot de passe à la place de l'ancien ?

    Je ne sais pas si c'est la neige qui m'a congelé le cerveau, mais je ne comprends pas ce que tu attends de mon code.
    Bon, je vais prendre un café, ça ira mieux ensuite. Je ne suis pas complètement réveillé.
      0  0

  4. #44
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si, mais avant de supprimer l'ancien mdp, tu dois déprotéger tes feuilles avec... c'est une question de logique
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  5. #45
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Oui bien sûr. Allez je vais prendre mon café et je te montres ce que j'ai fait.
      0  0

  6. #46
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai commencé à faire ça, Est-ce le bon début ? (code dans un module)

    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 ProtectMDP(AncMdp As String, NouvMdp As String)
     
    mdp = Sheets("Passe").Cells(1, 1).Value
    If AncMdp.Value = mdp Then
        Sheets("Passe").Cells(1, 1).Value = NouvMdp.Value
            mdp = NouvMdp.Value
     
      Sheets("Chèques_vacances").Unprotect AncMdp
        Sheets("Chèques_vacances").Protect NouvMdp, UserInterfaceOnly:=True
     
    Else
     
    MsgBox "L'ancien mot de passe n'est pas valable"
     
    End If
    End Sub
      0  0

  7. #47
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Oui, ça c'est bon (je n'avais pas vu ce code...)

    La ligne mdp = NouvMdp.Value ne sert à rien.

    Je suppose que ta feuille "Passe" est veryhidden, et je suppose aussi que tu as verrouilé ton code VBA par un mot de passe. Sinon, l'utilisateur pourra entrer dans ton code et voir ce qui s'y passe.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  8. #48
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Oui la feuille "Passe" est en VeryHidden, tous les codes Vba sont bloqués par un mot de passe.

    J'ai quand même pensé à ça. Je termine mon code et je fais quelques essais.

    Merci beaucoup pour l'aide que tu m'as déjà apporté.
      1  0

  9. #49
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Voilà j'ai terminé d'écrire le 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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Sub ProtectMDP(AncMdp As String, NouvMdp As String)
     
    mdp = Sheets("Passe").Cells(1, 1).Value
    If AncMdp.Value = mdp Then
        Sheets("Passe").Cells(1, 1).Value = NouvMdp.Value
     
        Sheets("Chèques_vacances").Unprotect AncMdp
        Sheets("Chèques_vacances").Protect NouvMdp, UserInterfaceOnly:=True
     
        Sheets("Petits_voyages").Unprotect AncMdp
        Sheets("Petits_voyages").Protect NouvMdp
     
        Sheets("Grands_voyages").Unprotect AncMdp
        Sheets("Grands_voyages").Protect NouvMdp
     
        Sheets("Prêt").Unprotect AncMdp
        Sheets("Prêt").Protect NouvMdp
     
        Sheets("CESU").Unprotect AncMdp
        Sheets("CESU").Protect NouvMdp
     
    Else
     
    MsgBox "L'ancien mot de passe n'est pas valable"
     
    End If
    End Sub
    Par contre lorsque je clique sur le bouton "Valider" de mon formulaire, j'ai ce message d'erreur "Erreur de compilation - Argument non facultatif"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CmbValide_Click()
    Unload Me
    ProtectMDP
    End Sub
      0  0

  10. #50
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu as la proc suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub ProtectMDP(AncMdp As String, NouvMdp As String)
    Tu dois donc lui passer deux arguments (l'ancien mdp et le nouveau mdp)... Je suppose qu'ils sont dans des contrôles de ton formulaire
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  11. #51
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Euh non ! Je les ai supprimé
      0  0

  12. #52
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ok. Mais où sont-ils alors?

    Il faut bien que tu les aies quelque part pour pouvoir les utiliser. Tu dis depuis un petit temps que l'utilisateur saisit l'ancien et le nouveau mot de passe dans un userform...

    Pourrais-tu donner le code complet du userform? Parce que là, on perd un peu son temps toi et moi.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  13. #53
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Eh bien j'ai fait la bêtise de les supprimer par une mauvaise manip !
    Je vais le refaire, désolé.
      0  0

  14. #54
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Voilà, le code ressemblé à ça :
    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
     
    Private Sub CmbValide_Click()
     
    Unload Me
     
           mdp = Sheets("Passe").Cells(1, 1).Value
    If AncMdp.Value = mdp Then
          Sheets("Passe").Cells(1, 1).Value = NouvMdp.Value
    mdp = NouvMdp.Value
     
    Else
     
    MsgBox "L'ancien mot de passe n'est pas valable"
     
    End If
     
    End Sub
      0  0

  15. #55
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pose-toi tout de même la question de voir comment tu pourrais demander à un utilisateur de saisir deux mots de passe si tu n'as pas de contrôles textbox pour la saisie?

    Prends un peu de recul par rapport à ce que tu essaies de coder, parce que là, tu codes "le nez dans le guidon" sans aucune réflexion par rapport à ce que tu fais, sans tentatives apparentes de comprendre les solutions que l'on te propose (ce n'est pas un reproche ad hominem, c'est un simple constat).

    Essaie de tracer sur une feuille de papier la trame de ce que tu dois réaliser:
    • saisir deux mots de passe (userform);
    • vérifier que l'ancien mdp est correctement saisi;
    • pour chaque feuille qui doit être verrouillée, la déverouiller avec l'ancien MDP et la verrouiller avec le nouveau.




    Normalement, suite à ce genre de travail de préparation de ta part, une aide de qualité te sera donnée en deux ou trois messages max, alors qu'on frise la quarantaine de messages sur cette discussion, sans compter l'autre discussion de hier (celle avec la c*** de protéger des cellules par label), et d'autres si je ne me trompe en regardant l'historique de tes discussions.

    Ces remarques sont simplement énoncées pour TE permettre de gagner du temps dans la recherche de réponses qualifiées à tes problèmes...

    [EDIT]
    Dans le code que tu donnes à 10:47, il n'y a de nouveau pas le passage par la proc de déverouillage/verrouillage, on ne voit pas trace des textbox, tes variables n'ont pas l'air d'être déclarées... Bref, on retourne +/- 20 messages en arrière. C'est impossible de t'apporter de l'aide dans ces conditions, je suppose que tu peux comprendre cela... Je t'ai pourtant donné le code dans un de mes messages, où il fallait simplement que tu appelles la procédure que je t'ai fournie en lui passant les deux mdp.

    Je ne vois pas ce que je peux faire d'autre.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      1  0

  16. #56
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Je t'ai mis le code tel qu'il existait avant ma suppression.
    Je suis entrain de travailler sur le nouveau en essayant d'appliquer tes recommandations. Dès que j'ai fini, je te le soumettrai.

    EDIT : Dans mon code je passe bien par une vérification de l'ancien mot de passe, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Unload Me
     
           mdp = Sheets("Passe").Cells(1, 1).Value 'Ici je dis que mdp est égale à la valeur se trouvant dans la cellule A1 de la feuille "Passe"
     
    If AncMdp.Value = mdp Then 'Ici, si le mot de passe tapé dans la TextBox AncMdp est bon alors...
     
          Sheets("Passe").Cells(1, 1).Value = NouvMdp.Value 'Le mot de passe tapé dans la TextBox NouvMdp remplace l'ancien mot de passe
     
    mdp = NouvMdp.Value 'mdp devient le nouveau mot de passe
     
    Else
     
    MsgBox "L'ancien mot de passe n'est pas valable"
      0  0

  17. #57
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Désolé mais je n'arrive à rien. Dés que je tente quelque chose, je me retrouve avec des messages d'erreur.
    Je vais arrêter un moment et reprendre plus tard, peut-être aurai-je les idées plus claires, parce que là, rien du tout.
      0  0

  18. #58
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Dans un module standard, tu places ces deux procédures

    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
    Sub ChangePassWord(OldPwd As String, NewPwd As String)
      Dim ws As Worksheet
     
      For Each ws In ThisWorkbook.Worksheets
        If ws.ProtectContents Then
          ws.Unprotect OldPwd
          ws.Protect NewPwd, UserInterfaceOnly:=True
        End If
      Next
    End Sub
     
     
    Sub UpdatePassWords()
      Dim OldPwd As String, NewPwd As String
      Dim CurrentPwd As String
     
      usfPwd.Show
      OldPwd = usfPwd.tboOldPwd
      NewPwd = usfPwd.tboNewPwd
      Unload usfPwd
      CurrentPwd = Range("CurrentPassWord").Value
      If CurrentPwd = OldPwd Then
        ChangePassWord OldPwd, NewPwd
        Range("CurrentPassWord").Value = NewPwd
      Else
        MsgBox "L'ancien mot de passe saisi est incorrect", vbExclamation
      End If
    End Sub
    Tu crées un userform et tu le nommes usfPwd
    Dans ce dernier, tu places deux textbox nommés tboOldPwd et tboNewPwd. Tu y places aussi un bouton nommé btnSubmit. Dans le code du userform, tu as simplement le code du bouton qui masque le userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnSubmit_Click()
      Me.Hide
    End Sub
    Dans une feuille du classeur, tu nommes une cellule CurrentPassword. Elle contiendra le mot de passe actuel qui permet de déverrouiller les feuilles.

    La procédure UpdatePassWords du module standard gère la modification du mot de passe. Démarre-là en pas à pas en te plaçant dedans puis F8. Tu verras ainsi les étapes.

    Cette procédure va
    • afficher le userform;
    • sur clic du bouton submit, le masquer;
    • récupérer les MDP saisis;
    • décharger le userform;
    • lancer la procédure ChangePassWord qui va boucler sur les feuilles, tester celles qui sont protégées et modifier le mdp s'il échet.


    Evidemment, toutes tes feuilles protégées au départ doivent l'être avec le même mot de passe, qui est celui stocké dans la cellule "CurrentPassword" (Feuil5!a1)
    Fichiers attachés Fichiers attachés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  19. #59
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Merci Pierre, mais je ne comprends pas tout. (La touche F8 de mon clavier ne fonctionne pas)

    Comment il gère le remplacement de l'ancien mot de passe par le nouveau ? J'ai fait un test et l'ancien reste toujours

    Dois-je conserver mes codes ou bien les remplacer par les tiens ?

    Désolé d'être aussi nul.
      0  0

  20. #60
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pour le faire fonctionner, tu peux te placer dans la procédure UpdatePasswords puis presser F8 (pas-à-pas) ou F5 (lancement de la proc).

    C'est elle qui gère le tout (appel du userform, récupération des deux mdp saisis, appel de la proc de modification des mots de passe sur les feuilles verrouillées puis sauvegarde du nouveau mot de passe)

    Par la suite, il sera possible de lancer cette proc sur clic d'un bouton, mais teste déjà que cela fonctionne et que tu comprends le code proposé.

    Tu dois remplacer tous tes codes par les miens. Je t'ai mis un fichier qui contient tout ce qu'il faut. Tu peux copier les modules et le userform de mon fichier vers le tien lorsque tu est dans l'environnement VBE (un simple glisser-déplacer des modules de mon fichier vers le tien dans l'arborescence des projets en VBA suffit)

    Citation Envoyé par NEC14 Voir le message
    [...]Désolé d'être aussi nul.
    On est tous passé par là... Essaie le mode pas-à-pas pour bien comprendre chaque étape. C'est comme cela qu'on apprend
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2017, 23h28
  2. Réponses: 3
    Dernier message: 21/10/2015, 14h43
  3. Code VBA pour la saisie d'un mot de passe
    Par narr255 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2010, 12h17
  4. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 06h09
  5. [VBA-E] Macro VBA pour personaliser mon .doc depuis mon .xls
    Par korntex5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2006, 16h01

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