OVH Cloud OVH Cloud

Dé-protéger un projet via un emacro

6 réponses
Avatar
Tucky
Bonjour,

Je souhaiterai savoir si l'on peut dé-protéger un projet (si l'on connait le
mot de passe) via une macro.

Merci d'avance

Tucky

6 réponses

Avatar
Jean-François Aubert
Salut Tucky,

voir ici:
http://frederic.sigonneau.free.fr/code/VBE/DeprotegeProjetVBA.txt

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Tucky" a écrit dans le message de news:

Bonjour,

Je souhaiterai savoir si l'on peut dé-protéger un projet (si l'on connait
le
mot de passe) via une macro.

Merci d'avance

Tucky


Avatar
Tucky
Bonjour Jean-Francois,

Merci pour le lien ; mais de mon lieu de travail, une partie d'Internet
n'est pas accessible. Serait-il possible d'avoir une copie du fichier txt sur
ce forum ou via "www.cjoint.com".

Merci d'avance.

Tucky


Salut Tucky,

voir ici:
http://frederic.sigonneau.free.fr/code/VBE/DeprotegeProjetVBA.txt

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Tucky" a écrit dans le message de news:

Bonjour,

Je souhaiterai savoir si l'on peut dé-protéger un projet (si l'on connait
le
mot de passe) via une macro.

Merci d'avance

Tucky







Avatar
jps
et un fichier .txt à la 9, un!

Attribute VB_Name = "DeprotegeProjetVBA"

'================================================ 'Laurent Longre, mpfe
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

Function Déprotège(Classeur As String, MdP As String) As Boolean

Dim XLhWnd As Long, VBEhWnd As Long, CurhWnd As Long
Dim Wbk As Workbook

On Error Resume Next
Set Wbk = Workbooks(Dir$(Classeur))
On Error GoTo Fin
If Not Wbk Is Nothing Then
If Wbk.FullName <> Classeur Then Exit Function
If Not Wbk.Saved Then Wbk.Save
Else: Application.ScreenUpdating = False
End If

CurhWnd = GetForegroundWindow
XLhWnd = FindWindowA(vbNullString, Application.Caption)

With Application.VBE
VBEhWnd = FindWindowA(vbNullString, .MainWindow.Caption)
If CurhWnd = XLhWnd Then SetForegroundWindow VBEhWnd
.CommandBars.FindControl(ID:%57).Execute
' NE PAS EFFACER, même si le classeur est déjà ouvert !!!!!!
Workbooks.Open Classeur
If ActiveWorkbook.VBProject.Protection = vbext_pp_locked Then
SendKeys "~" & MdP & "~", True
.ActiveCodePane.Window.Close
End If
End With

SetForegroundWindow CurhWnd
Déprotège = True
Exit Function

Fin:
End Function

Sub test()

' Déprotection du projet VBA C:TempTest.xls (mot de passe "Zaza"),
' Ajout d'un module standard dans ce projet, puis rétablissement
' de la protection

Const Classeur = "C:TempTest.xls"
If Not Déprotège(Classeur, "zaza") Then
MsgBox "Erreur"
Else
MsgBox "Projet VBA déprotégé."
With Workbooks(Dir$(Classeur))
.VBProject.VBComponents.Add vbext_ct_StdModule
.Close True
End With
Workbooks.Open Classeur
MsgBox "Projet reprotégé, ajout d'un module standard."
End If

End Sub

'================================================
'Sub essai()
'Fichier = Workbooks("Classeur3.xls").FullName
'MsgBox Fichier
'End Sub

"Tucky" a écrit dans le message de news:

Bonjour Jean-Francois,

Merci pour le lien ; mais de mon lieu de travail, une partie d'Internet
n'est pas accessible. Serait-il possible d'avoir une copie du fichier txt
sur
ce forum ou via "www.cjoint.com".

Merci d'avance.

Tucky


Salut Tucky,

voir ici:
http://frederic.sigonneau.free.fr/code/VBE/DeprotegeProjetVBA.txt

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Tucky" a écrit dans le message de
news:

Bonjour,

Je souhaiterai savoir si l'on peut dé-protéger un projet (si l'on
connait
le
mot de passe) via une macro.

Merci d'avance

Tucky









Avatar
lSteph
Bonjour "Tucky",
n'est pas accessible. Serait-il possible d'avoir une copie du fichier txt
sur
ci après.


Cordialement.

lSteph
'- -

Attribute VB_Name = "DeprotegeProjetVBA"

'================================================ 'Laurent Longre, mpfe
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

Function Déprotège(Classeur As String, MdP As String) As Boolean

Dim XLhWnd As Long, VBEhWnd As Long, CurhWnd As Long
Dim Wbk As Workbook

On Error Resume Next
Set Wbk = Workbooks(Dir$(Classeur))
On Error GoTo Fin
If Not Wbk Is Nothing Then
If Wbk.FullName <> Classeur Then Exit Function
If Not Wbk.Saved Then Wbk.Save
Else: Application.ScreenUpdating = False
End If

CurhWnd = GetForegroundWindow
XLhWnd = FindWindowA(vbNullString, Application.Caption)

With Application.VBE
VBEhWnd = FindWindowA(vbNullString, .MainWindow.Caption)
If CurhWnd = XLhWnd Then SetForegroundWindow VBEhWnd
.CommandBars.FindControl(ID:%57).Execute
' NE PAS EFFACER, même si le classeur est déjà ouvert !!!!!!
Workbooks.Open Classeur
If ActiveWorkbook.VBProject.Protection = vbext_pp_locked Then
SendKeys "~" & MdP & "~", True
.ActiveCodePane.Window.Close
End If
End With

SetForegroundWindow CurhWnd
Déprotège = True
Exit Function

Fin:
End Function

Sub test()

' Déprotection du projet VBA C:TempTest.xls (mot de passe "Zaza"),
' Ajout d'un module standard dans ce projet, puis rétablissement
' de la protection

Const Classeur = "C:TempTest.xls"
If Not Déprotège(Classeur, "zaza") Then
MsgBox "Erreur"
Else
MsgBox "Projet VBA déprotégé."
With Workbooks(Dir$(Classeur))
.VBProject.VBComponents.Add vbext_ct_StdModule
.Close True
End With
Workbooks.Open Classeur
MsgBox "Projet reprotégé, ajout d'un module standard."
End If

End Sub

'================================================
'Sub essai()
'Fichier = Workbooks("Classeur3.xls").FullName
'MsgBox Fichier
'End Sub

Avatar
lSteph
;-) tant pis, à la minute,
mieux vaut 2 tiens qu'un tu l'auras!
Salutations.

"jps" a écrit dans le message de news:

et un fichier .txt à la 9, un!

Attribute VB_Name = "DeprotegeProjetVBA"

'================================================ > 'Laurent Longre, mpfe
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

Function Déprotège(Classeur As String, MdP As String) As Boolean

Dim XLhWnd As Long, VBEhWnd As Long, CurhWnd As Long
Dim Wbk As Workbook

On Error Resume Next
Set Wbk = Workbooks(Dir$(Classeur))
On Error GoTo Fin
If Not Wbk Is Nothing Then
If Wbk.FullName <> Classeur Then Exit Function
If Not Wbk.Saved Then Wbk.Save
Else: Application.ScreenUpdating = False
End If

CurhWnd = GetForegroundWindow
XLhWnd = FindWindowA(vbNullString, Application.Caption)

With Application.VBE
VBEhWnd = FindWindowA(vbNullString, .MainWindow.Caption)
If CurhWnd = XLhWnd Then SetForegroundWindow VBEhWnd
.CommandBars.FindControl(ID:%57).Execute
' NE PAS EFFACER, même si le classeur est déjà ouvert !!!!!!
Workbooks.Open Classeur
If ActiveWorkbook.VBProject.Protection = vbext_pp_locked Then
SendKeys "~" & MdP & "~", True
.ActiveCodePane.Window.Close
End If
End With

SetForegroundWindow CurhWnd
Déprotège = True
Exit Function

Fin:
End Function

Sub test()

' Déprotection du projet VBA C:TempTest.xls (mot de passe "Zaza"),
' Ajout d'un module standard dans ce projet, puis rétablissement
' de la protection

Const Classeur = "C:TempTest.xls"
If Not Déprotège(Classeur, "zaza") Then
MsgBox "Erreur"
Else
MsgBox "Projet VBA déprotégé."
With Workbooks(Dir$(Classeur))
.VBProject.VBComponents.Add vbext_ct_StdModule
.Close True
End With
Workbooks.Open Classeur
MsgBox "Projet reprotégé, ajout d'un module standard."
End If

End Sub

'================================================ >
'Sub essai()
'Fichier = Workbooks("Classeur3.xls").FullName
'MsgBox Fichier
'End Sub

"Tucky" a écrit dans le message de news:

Bonjour Jean-Francois,

Merci pour le lien ; mais de mon lieu de travail, une partie d'Internet
n'est pas accessible. Serait-il possible d'avoir une copie du fichier txt
sur
ce forum ou via "www.cjoint.com".

Merci d'avance.

Tucky


Salut Tucky,

voir ici:
http://frederic.sigonneau.free.fr/code/VBE/DeprotegeProjetVBA.txt

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Tucky" a écrit dans le message de
news:

Bonjour,

Je souhaiterai savoir si l'on peut dé-protéger un projet (si l'on
connait
le
mot de passe) via une macro.

Merci d'avance

Tucky












Avatar
Tucky
Bonjour,

Merci à tous pour vos réponses ainsi que de m'avoir posté sur ce forum le
fichier txt.

Bonne journée.

Tucky

Bonjour "Tucky",
n'est pas accessible. Serait-il possible d'avoir une copie du fichier txt
sur
ci après.


Cordialement.

lSteph
'- -

Attribute VB_Name = "DeprotegeProjetVBA"

'================================================ > 'Laurent Longre, mpfe
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

Function Déprotège(Classeur As String, MdP As String) As Boolean

Dim XLhWnd As Long, VBEhWnd As Long, CurhWnd As Long
Dim Wbk As Workbook

On Error Resume Next
Set Wbk = Workbooks(Dir$(Classeur))
On Error GoTo Fin
If Not Wbk Is Nothing Then
If Wbk.FullName <> Classeur Then Exit Function
If Not Wbk.Saved Then Wbk.Save
Else: Application.ScreenUpdating = False
End If

CurhWnd = GetForegroundWindow
XLhWnd = FindWindowA(vbNullString, Application.Caption)

With Application.VBE
VBEhWnd = FindWindowA(vbNullString, .MainWindow.Caption)
If CurhWnd = XLhWnd Then SetForegroundWindow VBEhWnd
.CommandBars.FindControl(ID:%57).Execute
' NE PAS EFFACER, même si le classeur est déjà ouvert !!!!!!
Workbooks.Open Classeur
If ActiveWorkbook.VBProject.Protection = vbext_pp_locked Then
SendKeys "~" & MdP & "~", True
.ActiveCodePane.Window.Close
End If
End With

SetForegroundWindow CurhWnd
Déprotège = True
Exit Function

Fin:
End Function

Sub test()

' Déprotection du projet VBA C:TempTest.xls (mot de passe "Zaza"),
' Ajout d'un module standard dans ce projet, puis rétablissement
' de la protection

Const Classeur = "C:TempTest.xls"
If Not Déprotège(Classeur, "zaza") Then
MsgBox "Erreur"
Else
MsgBox "Projet VBA déprotégé."
With Workbooks(Dir$(Classeur))
.VBProject.VBComponents.Add vbext_ct_StdModule
.Close True
End With
Workbooks.Open Classeur
MsgBox "Projet reprotégé, ajout d'un module standard."
End If

End Sub

'================================================ >
'Sub essai()
'Fichier = Workbooks("Classeur3.xls").FullName
'MsgBox Fichier
'End Sub