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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.