OVH Cloud OVH Cloud

Protéger le code d'une copie d'une feuille d'un fichier

1 réponse
Avatar
René Delcourt
Bonjour ,

Une macro de mon fichier "wqwq.xls" (clavier suisse :-) crée un nouveau
fichier "yxyx.xls" en copiant une de ses feuilles.
J'ai adapté un code fourni par Anonymous qui devrait protéger le nouveau
fichier
mais la routine s'applique au fichier source ("wqwq.xls")(dans lequel se
trouve la macro).

Où est l'erreur?

Sub TestProtect()
ProtectVBProject Workbooks("Perso.xls"), "zaza"
End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks("Perso.xls"), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
With Workbooks("Perso.xls")
'ajout d'un module standard
.VBProject.VBComponents.Add 1
End With
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:=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
'================


--
René Delcourt

1 réponse

Avatar
Starwing
Bonjour René,

Essai celui-ci pour... comparer

http://www.excelabo.net/xl/protection.php#protectionVBE

Starwing