(VBA) enlever la protection VBE

Hello le forum,

J'utilise plusieurs fichiers tous identiques sur un reseau. Ces fichiers comportent des macros.

En parallèle, j'ai mon propre fichier "master" où je fais toutes mes upgrade dedans. J'utilise un fichier également qui me sert à exporter tous les modules de mon fichier master vers les autres.

Pour le moment pas de problèmes, mais j'aimerais appliquer un mot de passe a tous mes fichiers sur l'éditeur VBE pour protéger mes macros.

Seulement voilà quand j'utilise mon fichier exportation macro j'ai besoin de fournir ce mot de passe et aussi de le remettre une fois l'importation terminée ...

Connaissez vous le code pour :

déverrouiller un projet VBE

Remettre le mot de passe du projet VBE une fois l'exportation terminée ?

Merci a vous.

Bonjour,

Déverrouiller le projet n'implique pas que tu doives le reverrouiller. (VBE ne fonctionne pas comme une feuille ou un classeur)

Une fois que tu as coché la protection elle existe tant que tu ne la décoches pas.

Le fait d'enlever la protection par mot de passe ne décoche pas la protection : Elle te permet seulement de lire et/ou modifier le projet.

Quand tu refermes le classeur tu dois à nouveau fournir le mot de passe pour accéder à VBA...

La procédure que j'utilise :

 Sub UnProtectVBA()
   UnprotectVBProject ActiveWorkbook, "TonMotDePasse"
 End Sub
'----------------------------------------
Sub UnprotectVBProject(wb As Workbook, ByVal Password As String)
   Dim vbProj As Object
   Set vbProj = wb.VBProject
   'Ne peut procéder si le projet est non-protégé.
   If vbProj.Protection <> 1 Then Exit Sub
   Set Application.VBE.ActiveVBProject = vbProj
   'Utilisation de "SendKeys" Pour envoyer le mot de passe.
   SendKeys Password & "~~"
   Application.VBE.CommandBars(1).FindControl(iD:=2578, recursive:=True).Execute
End Sub

Bon je suppose que tu sauras broder autour de ça...

A+

Hello Galopin,

Au top ! Merci à toi.

En mode débogage ça renvoie une erreur à sendkeys & password qui s'affiche.

Tu sais m'expliquer pourquoi stp ?

Merci à toi.

e code que je t'ai donné suppose que tu lances la macro via la :

Sub UnProtectVBA en modifiant ActiveWorkbook avec un WorkBooks("LeClasseurCible") et "TonMotDePasse" par le mot de passe effectif pour VBAProject pour ce classeur.

La Sub UnprotectVBProject va ensuite récupérer ces infos via le paramètre wb et Password.

Mais maintenant je ne peux guère t'en dire plus : Toussa dépend un peu en plus de ton environnement de travail et de tes habitudes. Moi je fais ce genre de manip via mon xlam préférée en complément et ça ne pose pas de problème particulier jusqu'à Excel 2016...

Mais bien sur il peut y avoir quelques variantes en fonction de ton contexte.

A+

Ok très bien.

Merci à toi

Hello Galopin,

J'ai des soucis avec mon code pour déverrouiller mon projet VBE ...

En fait rien ne se passe... je pense que l'erreur viens du fait qu'il ne trouve pas bien l'activeworkbook... Peux-tu m'aider stp ?

En te remerciant par avance.

Voici mon code :

    Application.EnableEvents = False
    'on ouvre le fichier source
    Workbooks.Open Filename:=Sheets("Maitre").Cells(2, 1).Value, UpdateLinks:=0
    Application.EnableEvents = True
    Col_Module = 3
    'on exporte tous les modules présents dans la feuille exportation
    While ThisWorkbook.Sheets("Exportation").Cells(1, Col_Module).Value <> ""
        Nom_Module = ThisWorkbook.Sheets("Exportation").Cells(1, Col_Module).Value
    'on exporte dans le répertoire du fichier source
        Chemin_Maitre_Module = ActiveWorkbook.Path & "\" & Nom_Module & ".bas"
        ActiveWorkbook.VBProject.VBComponents(Nom_Module).Export Chemin_Maitre_Module
        Col_Module = Col_Module + 1
    Wend
    'on exporte toutes les feuilles présentes dans la feuille exportation
    Col_Feuille = Col_Module + 1
    While ThisWorkbook.Sheets("Exportation").Cells(1, Col_Feuille).Value <> ""
        Nom_Feuille = ThisWorkbook.Sheets("Exportation").Cells(1, Col_Feuille).Value
        Chemin_Maitre_Feuille = ActiveWorkbook.Path & "\" & Nom_Feuille & ".cls"
        ActiveWorkbook.VBProject.VBComponents(Nom_Feuille).Export Chemin_Maitre_Feuille
        Col_Feuille = Col_Feuille + 1
    Wend
    'on exporte tous les formulaires présents dans la feuille exportation
    Col_Formulaire = Col_Feuille + 1
    While ThisWorkbook.Sheets("Exportation").Cells(1, Col_Formulaire).Value <> ""
        Nom_Formulaire = ThisWorkbook.Sheets("Exportation").Cells(1, Col_Formulaire).Value
        Chemin_Maitre_Formulaire = ActiveWorkbook.Path & "\" & Nom_Formulaire & ".cls"
        ActiveWorkbook.VBProject.VBComponents(Nom_Formulaire).Export Chemin_Maitre_Formulaire
        Col_Formulaire = Col_Formulaire + 1
    Wend

    ActiveWorkbook.Close
    'on met dans un tableau tous les classeurs à traiter
    Der_Ligne_F = ThisWorkbook.Sheets("Exportation").Range("A2").End(xlDown).Row
    j = 2
    ReDim Tbl(Der_Ligne_F - 2, 0)
    For i = 0 To Der_Ligne_F - 2
        Tbl(i, 0) = Range("A" & i + 2)
        Application.EnableEvents = False
        Workbooks.Open Filename:=Tbl(i, 0)
        Application.EnableEvents = True
        Call UnProtectVBA

Avec les 2 procedures Unprotect

 Sub UnProtectVBA()
   UnprotectVBProject ActiveWorkbook, "Jvt2019"
 End Sub
'----------------------------------------
Sub UnprotectVBProject(wb As Workbook, ByVal Password As String)
   Dim vbProj As Object
   Set vbProj = wb.VBProject
   'Ne peut procéder si le projet est non-protégé.
   If vbProj.Protection <> 1 Then Exit Sub
   Set Application.VBE.ActiveVBProject = vbProj
   'Utilisation de "SendKeys" Pour envoyer le mot de passe.
   SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
End Sub
Rechercher des sujets similaires à "vba enlever protection vbe"