OVH Cloud OVH Cloud

déprotéger l'éditeur VB

1 réponse
Avatar
philip
Bonjour,
J'ai un classeur piloté par une maous macro et dont les feuilles et le
projet VBA sont protégés par un mot de passe (que je connais puisque c'est
moi qui l'ai créé).
Dans le cadre d'une commande qui qui fait un Enregistrer-Sous de ce classeur
tout en supprimant les formules, les protections et les macros, il ne me
manque plus qu'une chose : déprotéger par code VBA la fenêtre de l'éditeur
VB. J'ai déjà essayé des procédures de Frédéric Sigonneau, mais je n'arrive
pas à les faire fonctionner.
Connaissez-vous une petite procédure sympa qui le ferait ?
Merci de votre aide.

1 réponse

Avatar
PMO
Bonjour,

Une piste avec le code suivant à copier dans un module
standard d'un nouveau classeur qui sera dévolu à l'usage
de la macro de déprotection du VBE.
Le principe est de faire surgir le classeur à déprotéger dans
une nouvelle instance d'Excel pour que les SendKeys
n'interfèrent pas directement dans le classeur contenant
le programme.

Il suffit de lancer la macro PMO_DeprotectionProjetVBE mais,
au préalable, modifiez les constantes MOTDEPASSE et CHEMIN
à votre usage.

Il serait plus prudent, pour effectuer un premier test, de construire
un classeur et de protéger le VBE par un mot de passe. Il servira
de cobaye et vous pourrez voir si tout se passe bien.

'**********
'############################################
'### Adaptez les constantes à votre usage ###
Const MOTDEPASSE As String = "zaza"
Const CHEMIN As String = "c:test.xls"
'############################################
Sub PMO_DeprotectionProjetVBE()
Dim XL As Excel.Application
Dim WB As Workbook
On Error GoTo Erreur
Set XL = CreateObject("Excel.Application")
XL.Visible = True
Set WB = XL.Workbooks.Open(CHEMIN)
If WB.VBProject.Protection <> 1 Then Error 9
XL.SendKeys "%{F11}", True
XL.Application.VBE.CommandBars(1).FindControl _
(ID:%78, recursive:=True).Execute
XL.SendKeys MOTDEPASSE & "~"
If WB.VBProject.Protection = 1 Then Error 11
XL.SendKeys _
"+{TAB}{RIGHT}{TAB}-{TAB}{DEL}{TAB}{DEL}{TAB}~"
WB.Save
Erreur:
WB.Close
XL.Quit
Set WB = Nothing
Set XL = Nothing
If Err = 9 Then MsgBox "Projet déjà déprotégé."
If Err = 11 Then MsgBox "Mot de passe incorrect."
End Sub
'**********

Cordialement.

--
PMO
Patrick Morange



Bonjour,
J'ai un classeur piloté par une maous macro et dont les feuilles et le
projet VBA sont protégés par un mot de passe (que je connais puisque c'est
moi qui l'ai créé).
Dans le cadre d'une commande qui qui fait un Enregistrer-Sous de ce classeur
tout en supprimant les formules, les protections et les macros, il ne me
manque plus qu'une chose : déprotéger par code VBA la fenêtre de l'éditeur
VB. J'ai déjà essayé des procédures de Frédéric Sigonneau, mais je n'arrive
pas à les faire fonctionner.
Connaissez-vous une petite procédure sympa qui le ferait ?
Merci de votre aide.