Protéger par macro le code d'un autre classeur
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 subsub 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 : Laurent Longre
Mots clefs associés à cette page : adresse, IP, code, macro, protéger, protection, vba, vbe
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

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 !