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 :

[XL 2007 et +] activer et modifier mot de passe accès macro par code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2019
    Messages : 4
    Par défaut [XL 2007 et +] activer et modifier mot de passe accès macro par code VBA
    Bonjour,
    le sujet a été abordé de nombreuses fois, mais j'ai eu beau tester tout ce qui est possible et imaginable, je n'ai pas réussi à résoudre mon problème.
    En gros j'ai un fichier de gestion de l'activité de ma boite avec des feuilles protégées pas mot de passe.
    Les actions sont réalisées à travers des macro qui bien sûr utilisent le mot de passe.
    L'accès aux macros est donc lui aussi restreint par un mot de passe.
    L'idée c'est de pouvoir changer ce mot de passe en un seul coup avec une macro.
    Je n'ai aucun soucis en ce qui concerne les pages, ou le contenu des macros.
    En revanche, je n'arrive pas à interagir avec la protection de mon projet, autrement que manuellement.
    L’intérêt est de n'avoir qu'un seul mot de passe "administrateur" qui se modifie en une seule action.
    Existe-t-il un moyen de déverrouiller l'accès aux macros par un code vba, ainsi que de mettre à jour le mot de passe dans les propriétés du projet?

    Cordialement.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2019
    Messages : 4
    Par défaut
    Finalement j'ai trouvé.
    J'ai mixé plusieurs codes trouvés à différents endroits
    En gros ça donne ç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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
    Dim vbProj As Object
     
    Set vbProj = WB.VBProject
     
    'can't do it if already unlocked!
    If vbProj.Protection <> 1 Then Exit Sub
     
    Set Application.VBE.ActiveVBProject = vbProj
     
    ' now use lovely SendKeys to quote the project password
    SendKeys Password & "~~"
    Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
    End Sub
     
    Sub ProtectVBProject(WB As Workbook, ByVal Password As String)
    Dim vbProj As Object
     
    Set vbProj = WB.VBProject
     
    'can't do it if already locked!
    If vbProj.Protection = 1 Then Exit Sub
     
    Set Application.VBE.ActiveVBProject = vbProj
     
    ' now use lovely SendKeys to set the project password
    SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
    Password & "~"
     
    Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
     
    WB.Save
    End Sub
    Code que je place dans un module.

    Ensuite j'utilise:
    UnprotectVBProject Workbooks("mon_classeur.xlsm"), "MDP" pour enlever la protection
    et
    ProtectVBProject Workbooks("mon_classeur.xlsm.xlsm"), "MDP" pour changer le mot de passe.

    L'astuce consiste juste à utiliser les deux actions ci-dessus dans des userform pour n'enlever la protection que si le bon mot de passe a préalablement été bien rempli et
    Ne changer le mot de passe qu'après confirmation du nouveau mot de passe voulu.

    Dans mon cas j'utilise 3 userform:
    Le premier qui me demande le MDP pour le retrait de la protection, si c'est le bon l'action est effectuée.
    Les 2 suivants me demandent le MDP, si il est bon une nouvelle fenêtre me permet de le changer par double validation.

    Je ne fais varier qu'une constante déclarée de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const MDPA As String = "MDP"
    En espérant que ça pourra faire gagner du temps à d'autres.

    Cordialement.

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

Discussions similaires

  1. [WD24] Modifier mot de passe acces postgreSQL par programmation
    Par Jon Shannow dans le forum WinDev
    Réponses: 18
    Dernier message: 01/07/2019, 16h44
  2. [WS 2008 R2] Modifier mot de passe admin local par GPO
    Par Invité dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 21/10/2016, 21h45
  3. [AC-2003] Modifier le chemin du fichier.mdw par code vba
    Par maclolo2 dans le forum Sécurité
    Réponses: 1
    Dernier message: 11/04/2012, 16h17
  4. Réponses: 1
    Dernier message: 06/05/2008, 14h29
  5. modifier mot de passe de la base de donnée
    Par zut94 dans le forum Access
    Réponses: 9
    Dernier message: 28/02/2006, 11h36

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