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 & "~"
Application.VBE.CommandBars(1).FindControl(ID:=2578,
recursive:=True).Execute
Wb.Save
End Sub
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
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:=2578, _
recursive:=True).Execute
End Sub
'----------------------------------------
"Charly" <schauss...@hotmail.com> a �crit dans le message de groupe de discussion :
O29wuzUl...@TK2MSFTNGP05.phx.gbl...
> 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 :
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 :
Merci.