Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA,
enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du
classeur actif, et un autre pour ôter la protection de ce classeur.
J'ai essayé les procédure de Bill Manville,
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 & "~"
Sub ProtectVBA
ProtectVBProject ActiveWorkbook, "mdp"
DoEvents
End Sub
Sub UnprotectVBA
UnprotectVBProject ActiveWorkbook, "mdp"
DoEvents
End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans
laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre
"VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
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
michdenis
Bonjour,
VBA_Protection.xls est le nom d'un classeur ouvert dont tout le code est protégé par un mot de passe : "denis"
La procédure "OterProtectionPRojetVBA" déprotège le code du classeur. La macro doit être lancé à partir de l'interface de la feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Tu colles ce qui suit dans un module standard :
'---------------------------------------- Sub OterProtectionPRojetVBA() UnprotectVBProject Workbooks("VBA_Protection.xls"), "denis" 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:%78, _ recursive:=True).Execute End Sub '----------------------------------------
"Charly" a écrit dans le message de groupe de discussion :
Bonjour et tous mes voeux pour l'année 2010,
Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA, enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du classeur actif, et un autre pour ôter la protection de ce classeur. J'ai essayé les procédure de Bill Manville,
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:%78, 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 & "~"
Sub ProtectVBA ProtectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
Sub UnprotectVBA UnprotectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre "VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
Merci pour aide
Bonjour,
VBA_Protection.xls est le nom d'un classeur ouvert
dont tout le code est protégé par un mot de passe : "denis"
La procédure "OterProtectionPRojetVBA" déprotège le
code du classeur. La macro doit être lancé à partir de
l'interface de la feuille de calcul et non à partir de la fenêtre
de l'éditeur de code.
Tu colles ce qui suit dans un module standard :
'----------------------------------------
Sub OterProtectionPRojetVBA()
UnprotectVBProject Workbooks("VBA_Protection.xls"), "denis"
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:%78, _
recursive:=True).Execute
End Sub
'----------------------------------------
"Charly" <schauss_charles@hotmail.com> a écrit dans le message de groupe de discussion :
O29wuzUlKHA.4872@TK2MSFTNGP05.phx.gbl...
Bonjour et tous mes voeux pour l'année 2010,
Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA,
enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du
classeur actif, et un autre pour ôter la protection de ce classeur.
J'ai essayé les procédure de Bill Manville,
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:%78,
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 & "~"
Sub ProtectVBA
ProtectVBProject ActiveWorkbook, "mdp"
DoEvents
End Sub
Sub UnprotectVBA
UnprotectVBProject ActiveWorkbook, "mdp"
DoEvents
End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans
laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre
"VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
VBA_Protection.xls est le nom d'un classeur ouvert dont tout le code est protégé par un mot de passe : "denis"
La procédure "OterProtectionPRojetVBA" déprotège le code du classeur. La macro doit être lancé à partir de l'interface de la feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Tu colles ce qui suit dans un module standard :
'---------------------------------------- Sub OterProtectionPRojetVBA() UnprotectVBProject Workbooks("VBA_Protection.xls"), "denis" 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:%78, _ recursive:=True).Execute End Sub '----------------------------------------
"Charly" a écrit dans le message de groupe de discussion :
Bonjour et tous mes voeux pour l'année 2010,
Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA, enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du classeur actif, et un autre pour ôter la protection de ce classeur. J'ai essayé les procédure de Bill Manville,
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:%78, 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 & "~"
Sub ProtectVBA ProtectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
Sub UnprotectVBA UnprotectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre "VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
Merci pour aide
FS
Bonsoir,
> Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA, > enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du > classeur actif, et un autre pour ôter la protection de ce classeur.
La condition sine qua non, dans mon expérience, pour manipuler le mot de passe d'un VBAProject par du code (par exemple avec les procédures de Bill Manville) c'est qu'il ait reçu un autre nom que son nom par défaut (VBAProject). On peut faire ça en modifiant ses propriétés dans l'éditeur VBE ou par du code. Même si ce n'est dit, à ma connaissance, nulle part dans l'aide, si le projet n'a pas reçu un nom "propre", les tentatives pour le protéger/déprotéger en VBA ne sont pas fiables. C'est du moins, je le répète, ce que j'ai constaté et c'est, peut-être, la raison de ta difficulté.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Charly a écrit :
Bonjour et tous mes voeux pour l'année 2010,
Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA, enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du classeur actif, et un autre pour ôter la protection de ce classeur. J'ai essayé les procédure de Bill Manville,
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:%78, 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 & "~"
Sub ProtectVBA ProtectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
Sub UnprotectVBA UnprotectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre "VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
Merci pour aide
Bonsoir,
> Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA,
> enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du
> classeur actif, et un autre pour ôter la protection de ce classeur.
La condition sine qua non, dans mon expérience, pour manipuler le mot de
passe d'un VBAProject par du code (par exemple avec les procédures de
Bill Manville) c'est qu'il ait reçu un autre nom que son nom par défaut
(VBAProject).
On peut faire ça en modifiant ses propriétés dans l'éditeur VBE ou par
du code.
Même si ce n'est dit, à ma connaissance, nulle part dans l'aide, si le
projet n'a pas reçu un nom "propre", les tentatives pour le
protéger/déprotéger en VBA ne sont pas fiables.
C'est du moins, je le répète, ce que j'ai constaté et c'est, peut-être,
la raison de ta difficulté.
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Charly a écrit :
Bonjour et tous mes voeux pour l'année 2010,
Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA,
enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du
classeur actif, et un autre pour ôter la protection de ce classeur.
J'ai essayé les procédure de Bill Manville,
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:%78,
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 & "~"
Sub ProtectVBA
ProtectVBProject ActiveWorkbook, "mdp"
DoEvents
End Sub
Sub UnprotectVBA
UnprotectVBProject ActiveWorkbook, "mdp"
DoEvents
End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans
laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre
"VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
> Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA, > enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du > classeur actif, et un autre pour ôter la protection de ce classeur.
La condition sine qua non, dans mon expérience, pour manipuler le mot de passe d'un VBAProject par du code (par exemple avec les procédures de Bill Manville) c'est qu'il ait reçu un autre nom que son nom par défaut (VBAProject). On peut faire ça en modifiant ses propriétés dans l'éditeur VBE ou par du code. Même si ce n'est dit, à ma connaissance, nulle part dans l'aide, si le projet n'a pas reçu un nom "propre", les tentatives pour le protéger/déprotéger en VBA ne sont pas fiables. C'est du moins, je le répète, ce que j'ai constaté et c'est, peut-être, la raison de ta difficulté.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Charly a écrit :
Bonjour et tous mes voeux pour l'année 2010,
Je travaille avec Excel 2003 et j'aimerais écrire un petit module VBA, enregistré dans mon classeur PERSO.XLS, pour protéger le projet VBA du classeur actif, et un autre pour ôter la protection de ce classeur. J'ai essayé les procédure de Bill Manville,
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:%78, 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 & "~"
Sub ProtectVBA ProtectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
Sub UnprotectVBA UnprotectVBProject ActiveWorkbook, "mdp" DoEvents End Sub
mais j'ai quelques problèmes.
Pour ôter la protection, la fenêtre "VBAProject Mot de passe" s'ouvre, dans laquelle je dois saisir le mot de passe, et ensuite s'ouvre la fenêtre "VBAProject - Propriétés du projet" - celle-ci reste active.
La procédure pour configurer la protection ne fait strictement rien.
Merci pour aide
michdenis
Bonjour Frédéric,
Avec la procédure publiée sur ce fil, elle fonctionne rondement sans renommer le projet !
Il est vrai que je n'utilise pas ce type de machin trop souvent.
Bonjour Frédéric,
Avec la procédure publiée sur ce fil, elle fonctionne
rondement sans renommer le projet !
Il est vrai que je n'utilise pas ce type de machin trop souvent.
Avec la procédure publiée sur ce fil, elle fonctionne rondement sans renommer le projet !
Il est vrai que je n'utilise pas ce type de machin trop souvent.
FS
Salut Denis,
> Avec la procédure publiée sur ce fil, elle fonctionne > rondement sans renommer le projet !
Je n'en doute pas. Mais j'ai constaté qu'un coup (ou deux ou trois) ça marche et puis ça marche plus..jusqu'à ce que ça remarche. Je ne m'explique pas pourquoi. J'ai fait tourner ce genre de code très régulièrement (ie plusieurs fois par mois) sur des configurations différentes (Excel 2000 à 2003 et même 2007) et seul le fait de donner au projet un autre nom que le nom par défaut ne m'a jamais causé de mauvaise surprise... c'est pourquoi je donne ce conseil. "Solution" empirique à un problème aléatoire. Mon fils m'a souvent dit que l'informatique (c'est son boulot) n'était pas une science exacte. J'ai mis du temps à accepter cette idée que je trouvais en totale contradiction avec la manipulation de séries de 0 et 1 (quelle place pour l'inexactitude là dedans ?) qui au bout du compte la constitue. Et pourtant :)
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
michdenis a écrit :
Bonjour Frédéric,
Avec la procédure publiée sur ce fil, elle fonctionne rondement sans renommer le projet !
Il est vrai que je n'utilise pas ce type de machin trop souvent.
Salut Denis,
> Avec la procédure publiée sur ce fil, elle fonctionne
> rondement sans renommer le projet !
Je n'en doute pas. Mais j'ai constaté qu'un coup (ou deux ou trois) ça
marche et puis ça marche plus..jusqu'à ce que ça remarche.
Je ne m'explique pas pourquoi.
J'ai fait tourner ce genre de code très régulièrement (ie plusieurs fois
par mois) sur des configurations différentes (Excel 2000 à 2003 et même
2007) et seul le fait de donner au projet un autre nom que le nom par
défaut ne m'a jamais causé de mauvaise surprise... c'est pourquoi je
donne ce conseil.
"Solution" empirique à un problème aléatoire. Mon fils m'a souvent dit
que l'informatique (c'est son boulot) n'était pas une science exacte.
J'ai mis du temps à accepter cette idée que je trouvais en totale
contradiction avec la manipulation de séries de 0 et 1 (quelle place
pour l'inexactitude là dedans ?) qui au bout du compte la constitue.
Et pourtant :)
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
michdenis a écrit :
Bonjour Frédéric,
Avec la procédure publiée sur ce fil, elle fonctionne
rondement sans renommer le projet !
Il est vrai que je n'utilise pas ce type de machin trop souvent.
> Avec la procédure publiée sur ce fil, elle fonctionne > rondement sans renommer le projet !
Je n'en doute pas. Mais j'ai constaté qu'un coup (ou deux ou trois) ça marche et puis ça marche plus..jusqu'à ce que ça remarche. Je ne m'explique pas pourquoi. J'ai fait tourner ce genre de code très régulièrement (ie plusieurs fois par mois) sur des configurations différentes (Excel 2000 à 2003 et même 2007) et seul le fait de donner au projet un autre nom que le nom par défaut ne m'a jamais causé de mauvaise surprise... c'est pourquoi je donne ce conseil. "Solution" empirique à un problème aléatoire. Mon fils m'a souvent dit que l'informatique (c'est son boulot) n'était pas une science exacte. J'ai mis du temps à accepter cette idée que je trouvais en totale contradiction avec la manipulation de séries de 0 et 1 (quelle place pour l'inexactitude là dedans ?) qui au bout du compte la constitue. Et pourtant :)
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
michdenis a écrit :
Bonjour Frédéric,
Avec la procédure publiée sur ce fil, elle fonctionne rondement sans renommer le projet !
Il est vrai que je n'utilise pas ce type de machin trop souvent.
michdenis
J'essaierai de me souvenir de ta proposition si je fais face à la situation.
Merci.
J'essaierai de me souvenir de ta proposition
si je fais face à la situation.