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. #21
    Membre éclairé
    Homme Profil pro
    Chargé d'affaires commerciales
    Inscrit en
    Janvier 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaires commerciales
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2018
    Messages : 62
    Par défaut
    Dans ton Workbook_open :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_Open()
    Call init_mdp
    Sheets(1).protect mdp
    ' A la suite, toute tes feuilles que tu veux locker
    End Sub
    Essaye comme cela, peut être que de base tes feuilles n'étaient pas verrouillées. Là, à l'ouverture, elles seront verrouillées avec le bon mot de passe.
      1  0

  2. #22
    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 dysorthographie,

    Merci beaucoup pour ton aide, mais je t'avoue que ton code à l'air très compliqué et je n'y comprends pas grand chose.

    Merci mattgui mais je rencontre toujours des soucis. A l'ouverture du fichier toutes mes feuilles sont bien protégées (celles devant l'être), mais lorsque je change de feuille j'ai un message m'indiquant que la feuille est protégée et cela à chaque fois que je manipule les feuilles. Ce n'est pas pratique.
    "Erreur d'exécution 1004 - Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que vous respectez la bonne casse"

    Je continue à chercher.
      0  0

  3. #23
    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 je ne trouve pas la solution à mon problème. A l'ouverture du fichier toutes mes feuilles sont bien protégées (celles devant l'être), mais lorsque je change de feuille j'ai un message m'indiquant que la feuille est protégée et cela à chaque fois que je manipule les feuilles. Ce n'est pas pratique.
    "Erreur d'exécution 1004 - Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que vous respectez la bonne casse"

    Voici le code lié au bouton du formulaire, là j'ai déjà un soucis. En effet à l'ouverture du fichier je peux changer de mot de passe, mais je ne peux plus le faire en cours d'utilisation, Le message "L'ancien mot de passe n'est pas valable" apparaît, je dois obligatoirement fermer le fichier et recommencer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub CmbValide_Click()
    Unload Me
    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
    Voici le code pour l'initialisation du mot de passe (dans un module)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public mdp As String
    Sub init_mdp()
    mdp = Sheets("Passe").Cells(1, 1).Value 'Va chercher le mot de passe stocké dans la feuille "Passe" dans la cellule A1 (la feuille est rendu invisible = xlveryhidden)
    End Sub
    Code dans ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Workbook_Open()
    Call init_mdp
    Sheets("Chèques_vacances").Protect mdp
    Sheets("Petits_voyages").Protect mdp
    Sheets("Grands_voyages").Protect mdp
    Sheets("Prêt").Protect mdp
    Sheets("CESU").Protect mdp
    End Sub
    Les codes liés aux feuilles
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Private Sub Worksheet_Activate()
    ActiveSheet.Unprotect mdp
    Dim An2 As Byte, N As Integer
    An2 = DatePart("ww", Date, 2, 2)
    An = Year(Now())
        Range("F3") = "CLAS" & "-" & "CHV" & "-" & An & "-" & An2
        ActiveSheet.Protect mdp
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect mdp
    If Not Application.Intersect(Target, Range("F15")) Is Nothing Then
    If Range("F15") = "" Then
        N = Range("H3")
        N = N
        Range("H3") = N
        Else
        N = Range("H3")
        N = N + 1
        Range("H3") = N
    End If
    End If
        ActiveSheet.Protect mdp
    End Sub
     
    Private Sub CmbValide_Click()
    Dim Lig As Long, DerLig As Long
    Dim ShtS As Worksheet, ShtF As Worksheet
     
    Set ShtS = Sheets("Chèques_vacances")
    Set ShtF = Sheets("Rec_CV")
     
    Application.ScreenUpdating = False
    ShtF.Unprotect mdp
     
    DerLig = ShtF.Cells(Rows.Count, "A").End(xlUp).Row + 1
    For Lig = 2 To DerLig
     
    ShtF.Range("A" & DerLig) = ShtS.Range("F3").Value
    ShtF.Range("B" & DerLig) = ShtS.Range("H3").Value
    ShtF.Range("C" & DerLig) = ShtS.Range("F15").Value
    ShtF.Range("D" & DerLig) = ShtS.Range("F13").Value
    ShtF.Range("E" & DerLig) = ShtS.Range("F19").Value
    ShtF.Range("F" & DerLig) = ShtS.Range("G19").Value
    ShtF.Range("G" & DerLig) = ShtS.Range("H19").Value
    ShtF.Range("H" & DerLig) = ShtS.Range("D23").Value
    ShtF.Range("J" & DerLig) = ShtS.Range("B23").Value
    ShtF.Range("K" & DerLig) = ShtS.Range("B32").Value
    ShtF.Range("L" & DerLig) = ShtS.Range("F5").Value
    ShtF.Range("M" & DerLig) = ShtS.Range("C36").Value
    ShtF.Range("N" & DerLig) = ShtS.Range("F36").Value
    Next Lig
    ActiveWindow.SelectedSheets.PrintOut copies:=2, Collate:=True
    ShtF.Protect mdp
    Application.ScreenUpdating = True
    End Sub
      0  0

  4. #24
    Membre éclairé
    Homme Profil pro
    Chargé d'affaires commerciales
    Inscrit en
    Janvier 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaires commerciales
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2018
    Messages : 62
    Par défaut
    Bonjour à toi,

    Je ne vois pas où est le problème en soit. As-tu des informations sensibles sur ton classeur ? Si oui, pourrait-tu le "banaliser" et le placer en pièce jointe ? Il sera alors plus simple de vérifier la source du problème.

    Cdt
      0  0

  5. #25
    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
    Echéanciers CLAS.xlsm

    voici le fichier. Le mot de passe est "CLAS". Il n'y a rien de sensible.
      0  0

  6. #26
    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
    Pourquoi devoir enlever la protection?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuil1.protect userinterfaceonly:= true
    permet aux macros de fonctionner sur des feuilles protégées...
    "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

  7. #27
    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
    Pierre,
    Tu mets ton code ici ? C'est cà ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.Unprotect mdp 'remplacé par ActiveSheet.Unprotect UserInterfaceOnly
      0  0

  8. #28
    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
    En fait, tu dois une première fois protéger ta feuille avec le code que je te donnes (en y ajoutant d'autres arguments tels que le mdp et autres...).

    Lorsque la feuille est protégée en mode UserOnlyInterfaceOnly=True, seul l'interface Excel est protégé et tu peux manipuler ta feuille sans aucun souci par macro.

    Au pire, tu lances la commande dans la fenêtre d'exécution (CTRL+G)
    "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

  9. #29
    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
    Très bien, merci. Je vais modifier mes codes en focntion
      0  0

  10. #30
    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
    Alors j'ai fait selon le code suivant, mais j'ai un message d'erreur sur la ligne en gras.
    "Erreur d'exécution 1004" - Erreur définie par l'application ou l'objet
    Qu'Est-ce qui cloche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Activate()
    ActiveSheet.Unprotect mdp, UserInterfaceOnly:=True
    Dim An2 As Byte, N As Integer
    An2 = DatePart("ww", Date, 2, 2)
    An = Year(Now())
        Range("F3") = "CLAS" & "-" & "PV" & "-" & An & "-" & An2
        ActiveSheet.Protect mdp, UserInterfaceOnly:=False
    End Sub
      0  0

  11. #31
    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
    Pour la modification du mot de passe en cliquant sur le bouton du formulaire, je penses avoir trouvé la solution

    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
     
    Private Sub CmbValide_Click()
    Unload Me
    mdp = Sheets("Passe").Cells(1, 1).Value 'Cette partie est manquante dans la 1ère version
    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

  12. #32
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Unprotect mdp
    Unprotect attend un seul argument, à savoir le mdp. Tu ne dois utiliser UserInterfaceOnly qu'au moment du Protect
    "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. #33
    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.
    Après modification, j'ai ce nouveau message d'erreur, c'est galère !

    Lorsque je clique sur l'onglet de la feuille pour l'activer, j'ai ce message "Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que vous respectez la bonne casse"
    Je n'y comprends rien

    C'est bon, j'ai trouvé. J'avais laissé un mot de passe dans "Protéger la feuille" de la barre de commandes.
      0  0

  14. #34
    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
    Donne le code avec les quelques lignes autour...

    Si tu fais cela sur Sheet_Activate, fais attention que mdp est une variable publique, et qu'elle a peut-être été réinitialisée (suite à plantage et arrêt du code, par exemple,...)

    En mode Debug, tu as intérêt à regarder les valeurs de tes variables.
    "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

  15. #35
    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
    C'est bon, j'ai trouvé. J'avais laissé un mot de passe dans "Protéger la feuille" de la barre de commandes, quel brêle je fais.

    Je crois que tout fonctionne correctement maintenant. Je vais encore faire quelques tests.

    Je vous remercie tous pour vos précieux conseils et pour l'aide que vous m'avez apporté.
      0  0

  16. #36
    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
    Citation Envoyé par NEC14 Voir le message
    [...]quel brêle je fais.[...]
    C'est souvent le cas quand on a la tête dans le guidon...

    Alleï... Bonne continuation et bonne fin de journée
    "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

  17. #37
    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 ça n'a pas durée ! Premier test, premier message d'erreur.

    Lorsque je change le mot de passe à l'aide de mon formulaire, je clique sur un onglet d'une feuille et boum ! le fameux message "Mot de passe non valide. Vérifiez que la touche VERR.MAJ n'est pas activée et que vous respectez la bonne casse" revient au galop.
    Le message d'erreur est lié à cette ligne du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Activate()
    ActiveSheet.Unprotect mdp
    Dim An2 As Byte, N As Integer
    An2 = DatePart("ww", Date, 2, 2)
    An = Year(Now())
        Range("F3") = "CLAS" & "-" & "PV" & "-" & An & "-" & An2
        ActiveSheet.Protect mdp, UserInterfaceOnly:=True
    End Sub
    Voici le code lié à mon formulaire :
    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
     
    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
    Le code du module initialisation du mot de passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public mdp As String
     
    Sub init_mdp()
    mdp = Sheets("Passe").Cells(1, 1).Value
    End Sub
    A l'ouverture du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_Open()
    Call init_mdp
    End Sub
      0  0

  18. #38
    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
    Je ne comprends pas trop ce que tu souhaites réaliser ni l'utilité de la variable publique mdp.

    Pourrais-tu expliquer ce que tu souhaites réaliser en français (pas en vba)?
    "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. #39
    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
    Lorsque je livre le fichier, j'ai prévu un mot de passe. Mais le responsable du service souhaite pouvoir changer de mot de passe quand bon lui semble.

    C'est pourquoi j'ai créé dans la feuille "INTRO" du fichier un bouton qui permet d'ouvrir un formulaire. Dans ce formulaire, il indique l'ancien mot de passe (mot de passe stocké dans la feuille "Passe" en cellule A1, feuille masquée et rendue inaccessible, puisque l'éditeur de Vba est verrouillé).

    Une fois le mot de passe changé, il doit être actif pour chacune des feuilles du fichier (celles concernées par ce mot de passe). Il remplace l'ancien mot de passe.
      0  0

  20. #40
    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
    Après la validation du nouveau mot de passe dans le formulaire, tu dois:
    1. la déprotéger avec l'ANCIEN mot de passe;
    2. la protéger avec le nouveau.


    Puis tu dois stocker le nouveau mot de passe à la place de l'ancien. Je te propose de t'inspirer de la proc suivante, à laquelle tu passes les deux MDP. Evidemment, si toutes les feuilles ne sont pas protégées, tu devras placer une condition au sein de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ProtectWithNewMDP(OldMDP As String, NewMDP As String)
      Dim ws As Worksheet
     
      For Each ws In ThisWorkbook
        ws.Unprotect OldMDP
        ws.Protect NewMDP, UserInterfaceOnly:=True
      Next
    End Sub
    Tu appelles alors cette proc sur le btnValider_Click et tu n'oublies pas de stocker le nouveau MDP à la place de l'ancien.

    Essaie toujours de découper ton code en procédures et fonctions qui n'ont qu'une responsabilité.

    Ton userform a la responsabilité de saisir le nouveau mot de passe. Ma proc a la responsabilité de modifier les MDP des feuilles protégées.
    "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

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