Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déprotéger le projet d'un classeur par VBA dont on connait le mot de passe

7 réponses
Avatar
alain Lebayle
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub



--

7 réponses

Avatar
papou
Bonjour
Change ceci :
If vbProj.Protection 1 Then Exit Sub
par
If vbProj.Protection = 0 Then Exit Sub

Parce que la propriété Protection d'un projet VBA renvoie 0 si le projet
n'est pas vérrrouillé et 1 dans le cas contraire.

Par contre pas moyen de vérifier si c'est utilisable sur Excel 97.

Cordialement
Pascal

"alain Lebayle" a écrit dans le message de
news: %23$N$
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent
pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub



--






Avatar
FS
Bonjour,

Ci-dessous un code de Bill Manville, largement diffusé sur le net, qui
fonctionne très bien avec Excel 97 (testé) :

'===================== Sub TestUnprotect()
Dim S
S = "TestMdpxl97.xls"
UnprotectVBProject Workbooks(S), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
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
'=======================
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub





Avatar
alain Lebayle
Un très grand merci à toi, cela fonctionne très bien, mais, pas testé sur
Excel 97
Alain

"papou" a écrit dans le message
de news:
Bonjour
Change ceci :
If vbProj.Protection 1 Then Exit Sub
par
If vbProj.Protection = 0 Then Exit Sub

Parce que la propriété Protection d'un projet VBA renvoie 0 si le projet
n'est pas vérrrouillé et 1 dans le cas contraire.

Par contre pas moyen de vérifier si c'est utilisable sur Excel 97.

Cordialement
Pascal

"alain Lebayle" a écrit dans le message
de news: %23$N$
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent
pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub



--










Avatar
alain Lebayle
Bonsoir,
Merci beaucoup.
Cela fonctionne parfaitement, avec en plus l'assurance d'Excel 97
Dernière question, les fichiers Excel commencent tous par "Questions..."
Or, je ne sais pas comment dire à la macro S = "Questions....xls"
j'essaye avec & "*", mais en vain
Encore merci
Alain

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

Bonjour,

Ci-dessous un code de Bill Manville, largement diffusé sur le net, qui
fonctionne très bien avec Excel 97 (testé) :

'===================== > Sub TestUnprotect()
Dim S
S = "TestMdpxl97.xls"
UnprotectVBProject Workbooks(S), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
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
'======================= >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent
pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub






Avatar
isabelle
bonjour Alain

Fichier = "NomDuFichier"
IF Right(Fichier, 3)= "xls" And Left(Fichier, 9) = "Questions" Then

isabelle

alain Lebayle a écrit :
Bonsoir,
Merci beaucoup.
Cela fonctionne parfaitement, avec en plus l'assurance d'Excel 97
Dernière question, les fichiers Excel commencent tous par "Questions..."
Or, je ne sais pas comment dire à la macro S = "Questions....xls"
j'essaye avec & "*", mais en vain
Encore merci
Alain

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


Bonjour,

Ci-dessous un code de Bill Manville, largement diffusé sur le net, qui
fonctionne très bien avec Excel 97 (testé) :

'===================== >> Sub TestUnprotect()
Dim S
S = "TestMdpxl97.xls"
UnprotectVBProject Workbooks(S), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
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
'======================= >>
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :

Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent
pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub











Avatar
FS
Re,

Avec ce genre de code tu ne peux traiter qu'un fichier à la fois et le
nom doit être passé "en dur".
Si tu as plusieurs fichiers à traiter, tu dois pouvoir boucler sur les
fichiers ouverts et ne traiter que ceux qui t'intéressent avec (pseudo-code)

For Each classeur In Workbooks
If Left(classeur.Name,9)="Questions" Then
traitement
Enf If
Next

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :
Bonsoir,
Merci beaucoup.
Cela fonctionne parfaitement, avec en plus l'assurance d'Excel 97
Dernière question, les fichiers Excel commencent tous par "Questions..."
Or, je ne sais pas comment dire à la macro S = "Questions....xls"
j'essaye avec & "*", mais en vain
Encore merci
Alain

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

Bonjour,

Ci-dessous un code de Bill Manville, largement diffusé sur le net, qui
fonctionne très bien avec Excel 97 (testé) :

'===================== >> Sub TestUnprotect()
Dim S
S = "TestMdpxl97.xls"
UnprotectVBProject Workbooks(S), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
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
'======================= >>
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais le
mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent
pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub









Avatar
alain Lebayle
Bonsoir Isabelle
Merci beaucoup à isabelle, j'ai pu faire fonctionner grâce à sa procédure.
Un très grand merci à tous les 2
Très bonne soirée
Alain

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

Re,

Avec ce genre de code tu ne peux traiter qu'un fichier à la fois et le nom
doit être passé "en dur".
Si tu as plusieurs fichiers à traiter, tu dois pouvoir boucler sur les
fichiers ouverts et ne traiter que ceux qui t'intéressent avec
(pseudo-code)

For Each classeur In Workbooks
If Left(classeur.Name,9)="Questions" Then
traitement
Enf If
Next

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :
Bonsoir,
Merci beaucoup.
Cela fonctionne parfaitement, avec en plus l'assurance d'Excel 97
Dernière question, les fichiers Excel commencent tous par "Questions..."
Or, je ne sais pas comment dire à la macro S = "Questions....xls"
j'essaye avec & "*", mais en vain
Encore merci
Alain

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

Bonjour,

Ci-dessous un code de Bill Manville, largement diffusé sur le net, qui
fonctionne très bien avec Excel 97 (testé) :

'===================== >>> Sub TestUnprotect()
Dim S
S = "TestMdpxl97.xls"
UnprotectVBProject Workbooks(S), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
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
'======================= >>>
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

alain Lebayle a écrit :
Bonjour,
Je souhaite par VBA déprotéger le projet d'un classeur dont je connais
le mot de passe.
J'ai essayé différentes formules sur le net, mais elles ne fonctionnent
pas.
Excel 97
j'ai récupéré celle-ci sur dont l'auteur est mdeste.
Il y une erreur de syntaxe ligne 4

Je vous remercie
Alain

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
End Sub

Sub Test()
UnprotectVBProject Workbooks("MonFichier.xls"), "toto"
DoEvents
End Sub