OVH Cloud OVH Cloud

Protection du code

3 réponses
Avatar
Vincent.
Bonjour =E0 toutes et =E0 tous !
Voici ma question du jour : comment peut-on prot=E9ger le=20
code d'un classeur par macro ?
Le contexte : je d=E9place une feuille d'un classeur vers un=20
nouveau classeur et enregistre le nouveau classeur sans=20
protection (ni de code, ni de feuille, ni de classeur). Or=20
ladite feuille a quelques lignes de code (des tris simples=20
avec insertion de sous-totaux) que je pr=E9f=E9rerai prot=E9ger=20
des m=E9faits de mes utilisateurs pr=E9f=E9r=E9s...=20
Si quelqu'un sait ou a une piste, merci d'avance ! (et=20
d'ailleurs merci d'avance tout court)
A+

V.

3 réponses

Avatar
denis P
Bonjour Vincent
j'ai retrouvé le code donner par Bill Manville dans mes archives.
Te convient-il ?

denis p.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''
'Protéger et déprotéger le projet d'un classeur
'par macro
'Code de Bill Manville
'diffusé sur mpfe par papou

Sub TestProtect()
ProtectVBProject Workbooks("Proteger_deproteger.xls"), "Jack"
End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks("Proteger_deproteger.xls"), "Jack"
End Sub

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 & "~"

Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''


"Vincent." a écrit dans le message de
news:175b01c4dd09$c5ea5750$
Bonjour à toutes et à tous !
Voici ma question du jour : comment peut-on protéger le
code d'un classeur par macro ?
Le contexte : je déplace une feuille d'un classeur vers un
nouveau classeur et enregistre le nouveau classeur sans
protection (ni de code, ni de feuille, ni de classeur). Or
ladite feuille a quelques lignes de code (des tris simples
avec insertion de sous-totaux) que je préférerai protéger
des méfaits de mes utilisateurs préférés...
Si quelqu'un sait ou a une piste, merci d'avance ! (et
d'ailleurs merci d'avance tout court)
A+

V.
Avatar
anomymousA
bonjour,

on ne peut pas proteger un projet par des instructions avec des mots-clés.
On est obligé de simuler la rentrée des élemenst par SendKeys. Il existe
plusieurs manières de proteger un code par ce biais. Je t'en communique une
qui n'est pas d emoi comme tu pourras le voir dasn l'entête mais elle
fonctionne du moins sur ma machine (NT Excel 2000)

'Protéger et déprotéger le projet d'un classeur
'par macro
'Code de Bill Manville
'diffusé sur mpfe par papou

Sub TestProtect()
ProtectVBProject Workbooks("Proteger_deproteger.xls"), "Jack"
End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks("Proteger_deproteger.xls"), "Jack"
End Sub

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 & "~"

Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

WB.Save
End Sub

A+

Bonjour à toutes et à tous !
Voici ma question du jour : comment peut-on protéger le
code d'un classeur par macro ?
Le contexte : je déplace une feuille d'un classeur vers un
nouveau classeur et enregistre le nouveau classeur sans
protection (ni de code, ni de feuille, ni de classeur). Or
ladite feuille a quelques lignes de code (des tris simples
avec insertion de sous-totaux) que je préférerai protéger
des méfaits de mes utilisateurs préférés...
Si quelqu'un sait ou a une piste, merci d'avance ! (et
d'ailleurs merci d'avance tout court)
A+

V.



Avatar
Vincent.
Merci beaucoup à tous les deux !
Je vais essayer ça...

-----Message d'origine-----
Bonjour Vincent
j'ai retrouvé le code donner par Bill Manville dans mes
archives.

Te convient-il ?

denis p.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''

''''''''''''''''''''''''''''''''
'Protéger et déprotéger le projet d'un classeur
'par macro
'Code de Bill Manville
'diffusé sur mpfe par papou

Sub TestProtect()
ProtectVBProject Workbooks
("Proteger_deproteger.xls"), "Jack"

End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks
("Proteger_deproteger.xls"), "Jack"

End Sub

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 & "~"

Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute

WB.Save
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''

''''''''''''''


"Vincent." a écrit dans
le message de

news:175b01c4dd09$c5ea5750$
Bonjour à toutes et à tous !
Voici ma question du jour : comment peut-on protéger le
code d'un classeur par macro ?
Le contexte : je déplace une feuille d'un classeur vers un
nouveau classeur et enregistre le nouveau classeur sans
protection (ni de code, ni de feuille, ni de classeur). Or
ladite feuille a quelques lignes de code (des tris simples
avec insertion de sous-totaux) que je préférerai protéger
des méfaits de mes utilisateurs préférés...
Si quelqu'un sait ou a une piste, merci d'avance ! (et
d'ailleurs merci d'avance tout court)
A+

V.


.