OVH Cloud OVH Cloud

Macro VBAProjet

4 réponses
Avatar
BHY
Mes macros sont prtégées dans VBA. Est-il possible de déprotéger et
reprotéger ces macros à partir d'une macro lancer sous Excel ?
Merci
--
BHY

4 réponses

Avatar
Emcy
Salut,

http://www.veriti.net/download.php?lng=fr&pg42

ça te va ?

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

Mes macros sont prtégées dans VBA. Est-il possible de déprotéger et
reprotéger ces macros à partir d'une macro lancer sous Excel ?
Merci
--
BHY


Avatar
BHY
Je comprends la remarque et adhère complètement
Mais j'ai du mal m'exprimer dans ma question.
Je n'ai pas oublié le pwd : j'ai un tableur que je protège avec un Pwd et
les macros de ce tableur sont aussi protégées avec le même pwd.
J'ai une macro "administrateur" qui me permet de changer le mot de passe de
toutes les feuilles et du classeur (Saisie ancien Pwd > saisie nouveau >
confrmation).Cette macro fonctionne parfaitement pour les feuilles et le
classeur mais je cherche le moyen dans cette macro de modifier en même temps
le Pwd des macros (projet VBA)
Merci
BHY
--
BHY



Je tiens à souligner la vocation expressément personnelle de ce
programme, qui vous permettra de réouvrir ou de modifier un fichier
Excel sur lequel vous auriez placé un mot de passe oublié par la suite
(ce qui est malheureusement fréquent...). Ce n'est en aucun cas une
invitation à déprotéger des fichiers que, pour diverses raisons, leurs
auteurs ont tenu à protéger.

La puissance du programme vous permet d'aller voir "derrière" des
programmes que d'autres ont souvent passé beaucoup de temps à écrire. Ne
l'oubliez pas et respectez le travail effectué.

ça sent la FERRARI non ;-)

recommandations de l'auteur

les routines présentes dans ces modules sont strictement
destinées à un usage personnel
je décline toute responsabilité quant à l'utilisation qui pourrait en
être faite
N'oubliez pas non plus que ce code reste ma propriété intellectuelle
ce n'est pas parce que vous pouvez le lire, que vous pouvez vous
l'approprier. En résumé, respectez le travail d'autrui


Salut,

http://www.veriti.net/download.php?lng=fr&pg42

ça te va ?

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


Mes macros sont prtégées dans VBA. Est-il possible de déprotéger et
reprotéger ces macros à partir d'une macro lancer sous Excel ?
Merci
--
BHY











Avatar
RGI
Bonjour

c'est différent certes !!!!

ceci doit faire cette demande

Sub TestProtect()
ProtectVBProject Workbooks("fichier.xls"), "motdepasse"
End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks("fichier.xls"), "motdepasse"
End Sub

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 ProtectVBProject(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 "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
Password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub

PS: Il faut fermer le fichier pour que la protection puisse être prise
en compte

salutations

RGI

Je comprends la remarque et adhère complètement
Mais j'ai du mal m'exprimer dans ma question.
Je n'ai pas oublié le pwd : j'ai un tableur que je protège avec un Pwd et
les macros de ce tableur sont aussi protégées avec le même pwd.
J'ai une macro "administrateur" qui me permet de changer le mot de passe de
toutes les feuilles et du classeur (Saisie ancien Pwd > saisie nouveau >
confrmation).Cette macro fonctionne parfaitement pour les feuilles et le
classeur mais je cherche le moyen dans cette macro de modifier en même temps
le Pwd des macros (projet VBA)
Merci
BHY



Avatar
BHY
Merci, on y est presque ... j'ai intégré ton code dans le code de mon
userForm ChangePassword mais quand je l'exécute il accède bien au VBAProject
mais il me demande de saisir le password, il ne prend pas les variable
Old_Pwd ou New_Pwd, j'ai du rater quelques chose dans ma syntaxe ...

.......
Old_Pwd = ChangePwd_UserForm.Old_Pwd_TextBox
New_Pwd = ChangePwd_UserForm.New_Pwd_TextBox

'Unprotect Workbook & All Sheets (Old Password)
Dim sht As Worksheet
ActiveWorkbook.Unprotect Old_Pwd
For Each sht In ActiveWorkbook.Worksheets
sht.Unprotect Old_Pwd
Next sht
UnprotectVBProject Workbooks("Gate_Eng_V1.xls"), Old_Pwd


'Protect Workbook & All Sheets (New Password)
Range("Pwd") = New_Pwd
For Each sht In ActiveWorkbook.Worksheets
sht.Protect New_Pwd, Contents:=True, _
DrawingObjects:=True, Scenarios:=True
Next sht
ActiveWorkbook.Protect New_Pwd, Structure:=True, Windows:úlse

UnprotectVBProject Workbooks("Gate_Eng_V1.xls"), New_Pwd

Sheets("Administration").Select
Range("H67").Select
Unload ChangePwd_UserForm

FIN:

End Sub

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 ProtectVBProject(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 "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
Password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub
--
BHY



Bonjour

c'est différent certes !!!!

ceci doit faire cette demande

Sub TestProtect()
ProtectVBProject Workbooks("fichier.xls"), "motdepasse"
End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks("fichier.xls"), "motdepasse"
End Sub

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 ProtectVBProject(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 "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
Password & "~"
Application.VBE.CommandBars(1).FindControl(ID:%78,
recursive:=True).Execute
WB.Save
End Sub

PS: Il faut fermer le fichier pour que la protection puisse être prise
en compte

salutations

RGI

Je comprends la remarque et adhère complètement
Mais j'ai du mal m'exprimer dans ma question.
Je n'ai pas oublié le pwd : j'ai un tableur que je protège avec un Pwd et
les macros de ce tableur sont aussi protégées avec le même pwd.
J'ai une macro "administrateur" qui me permet de changer le mot de passe de
toutes les feuilles et du classeur (Saisie ancien Pwd > saisie nouveau >
confrmation).Cette macro fonctionne parfaitement pour les feuilles et le
classeur mais je cherche le moyen dans cette macro de modifier en même temps
le Pwd des macros (projet VBA)
Merci
BHY