Bonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Bonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Bonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
GaenoniusBonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
Gaenonius
Bonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
GaenoniusBonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code???
Merci Gaenonius!!!!
Ca fonctionne. Et pour info j'ai la version 2002 d'Excel.
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code??? C'est tout de même bizar...??
Sinon, en effet j'ai également changé le nom de ma routine ;-)
"Gaenonius" wrote:J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
GaenoniusBonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code???
Merci Gaenonius!!!!
Ca fonctionne. Et pour info j'ai la version 2002 d'Excel.
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code??? C'est tout de même bizar...??
Sinon, en effet j'ai également changé le nom de ma routine ;-)
"Gaenonius" wrote:
J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
Gaenonius
Bonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code???
Merci Gaenonius!!!!
Ca fonctionne. Et pour info j'ai la version 2002 d'Excel.
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code??? C'est tout de même bizar...??
Sinon, en effet j'ai également changé le nom de ma routine ;-)
"Gaenonius" wrote:J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
GaenoniusBonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code???
Non, aucune. Je me contente de constater que tout ce qui touche à la
programmation du VBE nécessite assez souvent "d'insister" pour que les
modifications soient prises en compte. On n'est pas loin là, à mon avis, des
limites de la programmation VBA appliquée à l'environnement de programmation
lui-même.
--
GaenoniusMerci Gaenonius!!!!
Ca fonctionne. Et pour info j'ai la version 2002 d'Excel.
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code??? C'est tout de même bizar...??
Sinon, en effet j'ai également changé le nom de ma routine ;-)
"Gaenonius" wrote:J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
GaenoniusBonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code???
Non, aucune. Je me contente de constater que tout ce qui touche à la
programmation du VBE nécessite assez souvent "d'insister" pour que les
modifications soient prises en compte. On n'est pas loin là, à mon avis, des
limites de la programmation VBA appliquée à l'environnement de programmation
lui-même.
--
Gaenonius
Merci Gaenonius!!!!
Ca fonctionne. Et pour info j'ai la version 2002 d'Excel.
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code??? C'est tout de même bizar...??
Sinon, en effet j'ai également changé le nom de ma routine ;-)
"Gaenonius" wrote:
J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
Gaenonius
Bonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code???
Non, aucune. Je me contente de constater que tout ce qui touche à la
programmation du VBE nécessite assez souvent "d'insister" pour que les
modifications soient prises en compte. On n'est pas loin là, à mon avis, des
limites de la programmation VBA appliquée à l'environnement de programmation
lui-même.
--
GaenoniusMerci Gaenonius!!!!
Ca fonctionne. Et pour info j'ai la version 2002 d'Excel.
Cependant, as tu une explication de cette nécessité de me mettre un DoEvents
dans le code??? C'est tout de même bizar...??
Sinon, en effet j'ai également changé le nom de ma routine ;-)
"Gaenonius" wrote:J'ai constaté que pour Excel 2000 (si tu utilises cette version, sinon ça ne
coute rien d'essayer),il fallait passer quelques (solides) couches de DoEvents
pour que la déprotection soit prise en compte dans la suite du code. Ça pourrait
donner pour toi quelque chose comme ça :
Sub DeProtect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
Do
i = i + 1: DoEvents
Loop While i < 5000
End Sub
(J'ai remplacé UnProtect, nom d'une méthode VBA, par DeProtect, nom purement
inventé, par une sorte de réflexe limite compulsif mais tu fais bien entendu
comme tu l'entends).
--
GaenoniusBonjour à tous,
Je recherche depuis quelques temps la possibilité de modifier le code VBA
(protégé par mot de passe) d'un fichier excel que j'ai distribué... J'ai
trouvé sur ce forum et d'autres, quelques exemples de code mais sans
résultat. Le seul que j'ai trouvé et qui fonctionne est le suivant:
_____________________________________________________________
Sub Unprotect()
Workbooks.Open "D:Fichier.xls"
UnprotectVBProject Workbooks("Fichier.xls"), "MotDePasse"
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
_____________________________________________________________
Seul problème celui-ci ne fonctionne plus lorsque je l'incorpore au milieu
d'un projet avec d'autres modules.
Je n'ai aucun message d'erreur, jusqu'à ce que ma macro doive modifier mon
projet (théoriquement déprotégé):
"Erreur d'exécution '50289':
Impossible d'effectuer cette opération tant que le projet est protégé."
Si quelqu'un a une idée, je suis preneur car là je tourne en rond ;-)
Merci
@+
Me