Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Protection projet VBA

196 views
Skip to first unread message

Charly

unread,
Jan 14, 2010, 2:08:14 PM1/14/10
to
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:=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


michdenis

unread,
Jan 14, 2010, 4:51:26 PM1/14/10
to
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:=2578, _
recursive:=True).Execute
End Sub
'----------------------------------------


"Charly" <schauss...@hotmail.com> a �crit dans le message de groupe de discussion :
O29wuzUl...@TK2MSFTNGP05.phx.gbl...

FS

unread,
Jan 30, 2010, 3:27:23 PM1/30/10
to
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 :

michdenis

unread,
Jan 30, 2010, 3:42:47 PM1/30/10
to
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.


FS

unread,
Jan 31, 2010, 4:31:51 AM1/31/10
to
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 :

michdenis

unread,
Jan 31, 2010, 10:16:45 AM1/31/10
to

J'essaierai de me souvenir de ta proposition
si je fais face � la situation.

Merci.

0 new messages