OVH Cloud OVH Cloud

Déprotection module VBA

5 réponses
Avatar
Beabou
Bonjour,

Je viens d'écrire une procédure qui modifie une procédure afin de mettre à
jour certaines lignes. Le projet dans lequel je fais faire la modif est
protégé.
Merci de me donner l'instruction qui déprotège le projet.
Merci.
Beabou.

5 réponses

Avatar
Oliv'
Beabou que je salut a écrit dans

Bonjour,

Je viens d'écrire une procédure qui modifie une procédure afin de
mettre à jour certaines lignes. Le projet dans lequel je fais faire
la modif est protégé.
Merci de me donner l'instruction qui déprotège le projet.
Merci.
Beabou.



regarde là
http://www.excelabo.net/xl/protection.php#passevba

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Avatar
Beabou
J'ai regardé l'aide mais je n'arrive pas à mettre en place la déprotection.
J'ai crée un nouveau classeur (MAJ RAF.xls) avec un module (ModuleMaj) dans
lequel j'ai mis la procédure suivante :

Sub traitement()
Dim Classeur As Workbook
Dim Module As Object
Dim Rechercher As String
Dim Remplacer As String
Dim Trouver As Integer
Dim I As Integer

Rechercher = "C:gaf_exp.txt"
Remplacer = "C:GRAVDIRGAFgaf_exp.txt"
For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name <> "ModuleMaj" Then
For I = 1 To .CountOfLines
Trouver = InStr(.Lines(I, 1), Rechercher)
If Trouver > 0 Then
'si une occurrence est trouvée, fait la modif et boucle
'sur la ligne afin de remplacer tous les mots
Do
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & Remplacer & _
Mid(.Lines(I, 1), _
Trouver + Len(Rechercher) _
, Len(.Lines(I, 1)))
Trouver = InStr(Trouver + 1, _
.Lines(I, 1), Rechercher)
Loop While Trouver <> 0
End If
Next I
End If
End With
Next Module
Next Classeur
Set Classeur = Nothing
Set Module = Nothing
MsgBox ("MAJ terminée")
End Sub

Je ne connais pas le nom du classeur dans lequel je dois faire la maj
(chaque utilisateur a renommé son fichier) par contre j'ai le mdp du projet.

Help.......
Avatar
anonymousA
bonjour,

dans ta procédure il faut inserer l'appel à la procédure UnprotectVBProject
communiquée ci-dessous
For Each Classeur In Workbooks
UnprotectVBProject classeur, "mdp"
.......... la suite de ta procédure

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)

Dim vbProj As Object

Set vbProj = WB.VBProject

If vbProj.Protection <> 1 Then Exit Sub
with Application.VBE
Set .ActiveVBProject = vbProj
SendKeys Password & "~~"
.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute
end with

End Sub

Ceci dit, j'attire ton attention sur le fait que tu vas parcourir la
collection de tous les modules c.à.d les modules de feuille et du classeur,
de userform , les modules standard et de classe mais c'est peut être ce que
tu souhaites !
Enfin les projets que tu auras déprotégés ne redeviendront protégés qu'à la
refermeture des fichiers.

A+


J'ai regardé l'aide mais je n'arrive pas à mettre en place la déprotection.
J'ai crée un nouveau classeur (MAJ RAF.xls) avec un module (ModuleMaj) dans
lequel j'ai mis la procédure suivante :

Sub traitement()
Dim Classeur As Workbook
Dim Module As Object
Dim Rechercher As String
Dim Remplacer As String
Dim Trouver As Integer
Dim I As Integer

Rechercher = "C:gaf_exp.txt"
Remplacer = "C:GRAVDIRGAFgaf_exp.txt"
For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name <> "ModuleMaj" Then
For I = 1 To .CountOfLines
Trouver = InStr(.Lines(I, 1), Rechercher)
If Trouver > 0 Then
'si une occurrence est trouvée, fait la modif et boucle
'sur la ligne afin de remplacer tous les mots
Do
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & Remplacer & _
Mid(.Lines(I, 1), _
Trouver + Len(Rechercher) _
, Len(.Lines(I, 1)))
Trouver = InStr(Trouver + 1, _
.Lines(I, 1), Rechercher)
Loop While Trouver <> 0
End If
Next I
End If
End With
Next Module
Next Classeur
Set Classeur = Nothing
Set Module = Nothing
MsgBox ("MAJ terminée")
End Sub

Je ne connais pas le nom du classeur dans lequel je dois faire la maj
(chaque utilisateur a renommé son fichier) par contre j'ai le mdp du projet.

Help.......




Avatar
Beabou
Je viens d'essayer mais ça ne fonctionne pas !!

Il y a peut-être moyen de simplifier la procédure sachant que :
Je ne connais pas le nom du classeur dans lequel s'effectue la procédure
Je connais le nom du module et de la procédure.
Je connais le mdp du projet.
Avatar
anonymousA
re,

la procédure de déprotection fonctionne..ca c'est certain . Si tu le
souhaites , envoies sur ma bal perso () ta procédure et
un exemple de classeur à déproteger, ce qui implique bien sur que tu
n'omettes pas de me donner le mot de passe.
C'est comme tu le sens. Je te ferai ça Dimanche soir. Peux pas avant.

A+


Je viens d'essayer mais ça ne fonctionne pas !!

Il y a peut-être moyen de simplifier la procédure sachant que :
Je ne connais pas le nom du classeur dans lequel s'effectue la procédure
Je connais le nom du module et de la procédure.
Je connais le mdp du projet.