Bonsoir à tous
J'ai dans le code de plusieurs dizaines de classeurs une constante dont la valeur est fausse.
Le code ci-dessous, que j'ai trouvé sur le net permet de rechercher et remplacer cette valeur ?
Mais comment faire pour déprotéger et protéger le projet VBA de chaque classeur avec:
UnprotectVBProject Workbooks, "MotDePasse"
ProtectVBProject Workbooks, "MotDePasse"
Sub Remplacer()
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 = "MonMotQueJeN'aimePlus"
Remplacer = "MonMotQueJ'aime"
For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name <> "ModuleDeMiseAJour" 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
End Sub
Merci d'avance pour votre réponse
J'ai dans le code de plusieurs dizaines de classeurs une constante dont la valeur est fausse.
Le code ci-dessous, que j'ai trouvé sur le net permet de rechercher et remplacer cette valeur ?
Mais comment faire pour déprotéger et protéger le projet VBA de chaque classeur avec:
UnprotectVBProject Workbooks, "MotDePasse"
ProtectVBProject Workbooks, "MotDePasse"
Sub Remplacer()
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 = "MonMotQueJeN'aimePlus"
Remplacer = "MonMotQueJ'aime"
For Each Classeur In Workbooks
For Each Module In Classeur.VBProject.VBComponents
With Module.CodeModule
If Module.Name <> "ModuleDeMiseAJour" 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
End Sub
Merci d'avance pour votre réponse