Protéger par macro le code d'un autre classeur

Comment par macro protéger le code VBA d'un autre classeur (ouvert) et choisir le mot de passe qui me permettra de le déprotéger ?

Testé sous Excel 2000 :

 Private Declare Function FindWindowA Lib "User32" _
 (ByVal lpClassName As String, _ 
ByVal lpWindowName As String) As Long  
Private Declare Function GetForegroundWindow Lib "User32" () As Long  
Private Declare Function SetForegroundWindow Lib "User32" _ (ByVal hWnd As Long) As Long

sub Protéger(Classeur As String, MDP As String)
 Dim CurhWnd As Long, VBP As Object
 Set VBP = Workbooks(Classeur).VBProject
 If VBP.Protection Then exit sub
 CurhWnd = GetForegroundWindow
 With Application.VBE
 SetForegroundWindow FindWindowA("wndclass_desked_gsk", _
  .MainWindow.Caption)
 VBP.VBComponents(1).CodeModule.CodePane.Show
 .CommandBars.FindControl(ID:\=2578).Execute
 End With
 SendKeys "^{TAB} {TAB}" & MDP & "{TAB}" & MDP & "~", True
 SetForegroundWindow CurhWnd
 Workbooks(Classeur).Close True ' Si tu veux sauver et fermer le
 classeur
 end sub
sub Test()
 ' Protège le code VBA du classeur ouvert "Test.xls" avec le
 ' mot de passe "MonMotDePasse"
 Protéger "Test.xls", "MonMotDePasse"
 end sub

Auteur :

Mots clefs associés à cette page : , , , , , , ,

merci beaucoup

Juste un petit commentaire pour dire que ça fonctionne aussi sous Excel 2007 et que cette procédure est juste parfaite ! merci beaucoup !