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 :

Déprotéger un VBAProject par code pour maj du code


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut Déprotéger un VBAProject par code pour maj du code
    Bonsoir,

    J'ai besoin de modifier la macro de 200 classeurs, mais je n'arrive pas à déprotéger le VBAProject avec le code ci-dessous.
    le mot de passe est toto
    sinon est-il plus simple de modifier une macro ou le module ?
    MERCI d'avance de vos réponses

    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
    Sub déprotéger()
     
    Dim wbk As Workbook
    Dim wsh As Worksheet
    Dim Fich As String
    Dim Feuille
    Dim vbProj As Object
     
    Application.ScreenUpdating = False
    Fich = Dir("I:\EP\DPT\TEST\*.xls")
    Do While Fich <> ""
        With wsh
            Set wbk = Workbooks.Open("I:\EP\DPT\TEST\" & Fich)
     
        Set vbProj = wbk.VBProject
        If vbProj.Protection <> 1 Then Exit Sub
        Set Application.VBE.ActiveVBProject = vbProj
        SendKeys Password & "toto"
        Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
        'With wbk.VBProject
           '.VBComponents.Import "C:\Documents and Settings\6467\Bureau\Module3.bas"
        'End With
     
        wbk.Save
        wbk.Close False
        Fich = Dir
        Set wbk = Nothing
        End With
    Loop
     
    Set wsh = Nothing
     
    Application.ScreenUpdating = True
     
    MsgBox "TRAITEMENT TERMINE", vbCritical, "Information"
    End Sub

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut
    Salut PPN83 voila comment je procède

    Dans ton sub général
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    If ProtectedVBProject(MonWorkBook) = True Then
        Dim Pass As String
        Pass = "monMotDePasse"
     
        Call UnprotectVBProject(MonWorkBook)
     
        SendKeys Pass & "~~", True
        End If
    La fonction qui vérifie si il est protégé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function ProtectedVBProject(ByVal wb As Workbook) As Boolean
    ' returns TRUE if the VB project in the active document is protected
    Dim VBC As Integer
    VBC = -1
    On Error Resume Next
    VBC = wb.VBProject.VBComponents.Count
    On Error GoTo 0
    If VBC = -1 Then
    ProtectedVBProject = True
    Else
    ProtectedVBProject = False
    End If
    End Function
    Le sub qui va enlever la protection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub UnprotectVBProject(wb As Workbook)
      Dim vbProj As Object
      Set vbProj = wb.VBProject
       If vbProj.Protection <> 1 Then Exit Sub
     
      Set Application.VBE.ActiveVBProject = vbProj 
      Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
    End Sub
    Voilou

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Bonsoir Bakman

    Merci de ta participation

    Mais ça ne fonctionne pas, j'ai l'erreur d'exécution "impossible d'effectuer cette opération tant que le projet est protégé" à la ligne 7 de la fonction. Si tu as une solution ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut
    Ok! tu peut poster le code please?
    à la ligne 7 je sais pas ce qu'il y a

    sinon rajoute ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendKeys Pass & "~~", True
    a la derniere ligne de la fonciton UnprotectVBProject

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Bonjour,

    la ligne 7 de la fonction est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBC = wb.VBProject.VBComponents.Count
    j'ai inséré ta dernière phrase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendKeys Pass & "~~", True
    dans la macro UnprotectVBProject mais j'ai le même problème; toujours à la ligne 7 de la fonction.

    Merci

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut
    Alors là je comprend pas ca fonctionne bien chez moi essaye de ne pas passer par la fonction qui vérifie si le projet est protégé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim Pass As String
        Pass = "monMotDePasse"
     
        Call UnprotectVBProject(MonWorkBook, Pass)
     
        SendKeys Pass & "~~", True
        End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub UnprotectVBProject(wb As Workbook, pass As String)
      Dim vbProj As Object
      Set vbProj = wb.VBProject
       If vbProj.Protection <> 1 Then Exit Sub
     
      Set Application.VBE.ActiveVBProject = vbProj 
      Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
    SendKeys Pass & "~~", True
    End Sub
    Je pense à un truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.DisplayAlerts = False
    Il devrais ne plus t'afficher le message du coup la fonction qui vérifie le si le projet est protégé devrait foncitonner

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Bonsoir Backman

    Excuse pour les délais de réponse mais je n'ai pas trop le temps en ce moment.

    Le problème reste entier, le projet n'est pas déverrouillé.
    Au lancement de la macro, bizarrement le verrouillage numérique se désactive et la boite de dialogue "VBAProject propriétés du projet" s'ouvre et dans le nom du projet c'est le mot de passe qui s'affiche et pas le nom je ne pense pas que ce soit normal.

    Cordialement

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Et que donne un juste avant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendKeys Pass & "~~", True
    ?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Bonsoir,

    Pas mieux et la macro ne va pas jusqu'au bout
    Le problème ne viendrait il pas du déverrouillage du pavé numérique ?

    Merci

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Et en scindant le sendkeys en 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SendKeys Pass & "~", True
    DoEvents
    SendKeys "~", True
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Bonsoir,

    Non pas d'amélioration et j'ai toujours l'affichage de la boite de dialogue "VBAProject propriétés du projet". que je ferme en cliquant OK

    J'ai supprimé la fermeture du classeur et je m'aperçois que la macro déverrouille bien le projet mais quand je ferme le classeur il se verrouille à nouveau !

Discussions similaires

  1. [AC-2007] besoin d'aide pour comprendre un code pour FTP trouvé sur le forum
    Par tibofo dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/04/2010, 20h03
  2. Aide pour compiler du code pour DOS/XP
    Par jkepler dans le forum Fortran
    Réponses: 1
    Dernier message: 22/11/2007, 10h42
  3. Réponses: 2
    Dernier message: 27/04/2006, 16h45
  4. Paramètre de requete par le code pour état
    Par electrosat03 dans le forum Access
    Réponses: 6
    Dernier message: 17/03/2006, 17h39
  5. Réponses: 2
    Dernier message: 18/10/2003, 14h42

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