OVH Cloud OVH Cloud

Modifier une macro par macro

2 réponses
Avatar
Michel.Girard
Bonsoir
Je désire modifier une macro par macro
Est-ce possible ?
Merci beaucoup
Michel

2 réponses

Avatar
MichDenis
Bonjour Michel,

Oui, c'est possible. Je te propose 2 façons de faire selon que tu connais avant le lancer la procédure, le nom du module
où ta ligne de code doit être modifiée ou non .


'Ligne de code dont tu ne connais pas le nom du module où la ligne de code à changer se trouve
--------------
Sub RemplacerUneLigneDeCode()

Dim LigneRecherchée As String, RemplacéPar As String
Dim VbComp As Object, VbComps As Object
Dim i, j, Nb As Integer, NLigne As Integer

LigneRecherchée = "Sub ChangeLineInSubs2()"
RemplacéPar = "Trouver()"

Set VbComps = ActiveWorkbook.VBProject.VBComponents
Nb = VbComps.Count
For Each VbComp In ActiveWorkbook.VBProject.VBComponents
For i = 1 To Nb
NLigne = VbComps(i).CodeModule.CountOfLines
For j = 1 To NLigne
If VbComps(i).CodeModule.Lines(j, 1) = LigneRecherchée Then
VbComps(i).CodeModule.DeleteLines j
VbComps(i).CodeModule.InsertLines j, RemplacéPar
End If
Next j
Next i
Next
Set VbComp = Nothing: Set VbComps = Nothing

End Sub
--------------


'Recherche dans un module particulier
'---------------
Sub RemplacerUneLigneDeCodeParUnAutre()

Dim Recherche As String, Remplace As String, Comp As Object
Dim A As Integer, B As Integer, Nb As Integer, NbLigne As Integer

Recherche = "Set Rg = Worksheets(""Feuil1"").Range(""B200"")"
Remplace = "Set Rg = Worksheets(""Feuil1"").Range(""B2"")"

Set Comp = ActiveWorkbook.VBProject.VBComponents("module1")
NbLigne = Comp.CodeModule.CountOfLines
For B = 1 To NbLigne
If Comp.CodeModule.Lines(B, 1) = Recherche Then
Comp.CodeModule.DeleteLines B
Comp.CodeModule.InsertLines B, Remplace
End If
Next
Set Comp = Nothing

End Sub
--------------


Salutations!



"Michel.Girard" a écrit dans le message de news:
O$35E$
Bonsoir
Je désire modifier une macro par macro
Est-ce possible ?
Merci beaucoup
Michel
Avatar
Michel.Girard
Merci beaucoup Denis
c'est très sympa de ta part
Bonne soirée
Michel

"MichDenis" a écrit dans le message de news:
%
Bonjour Michel,

Oui, c'est possible. Je te propose 2 façons de faire selon que tu connais
avant le lancer la procédure, le nom du module
où ta ligne de code doit être modifiée ou non .


'Ligne de code dont tu ne connais pas le nom du module où la ligne de code
à changer se trouve
--------------
Sub RemplacerUneLigneDeCode()

Dim LigneRecherchée As String, RemplacéPar As String
Dim VbComp As Object, VbComps As Object
Dim i, j, Nb As Integer, NLigne As Integer

LigneRecherchée = "Sub ChangeLineInSubs2()"
RemplacéPar = "Trouver()"

Set VbComps = ActiveWorkbook.VBProject.VBComponents
Nb = VbComps.Count
For Each VbComp In ActiveWorkbook.VBProject.VBComponents
For i = 1 To Nb
NLigne = VbComps(i).CodeModule.CountOfLines
For j = 1 To NLigne
If VbComps(i).CodeModule.Lines(j, 1) = LigneRecherchée Then
VbComps(i).CodeModule.DeleteLines j
VbComps(i).CodeModule.InsertLines j, RemplacéPar
End If
Next j
Next i
Next
Set VbComp = Nothing: Set VbComps = Nothing

End Sub
--------------


'Recherche dans un module particulier
'---------------
Sub RemplacerUneLigneDeCodeParUnAutre()

Dim Recherche As String, Remplace As String, Comp As Object
Dim A As Integer, B As Integer, Nb As Integer, NbLigne As Integer

Recherche = "Set Rg = Worksheets(""Feuil1"").Range(""B200"")"
Remplace = "Set Rg = Worksheets(""Feuil1"").Range(""B2"")"

Set Comp = ActiveWorkbook.VBProject.VBComponents("module1")
NbLigne = Comp.CodeModule.CountOfLines
For B = 1 To NbLigne
If Comp.CodeModule.Lines(B, 1) = Recherche Then
Comp.CodeModule.DeleteLines B
Comp.CodeModule.InsertLines B, Remplace
End If
Next
Set Comp = Nothing

End Sub
--------------


Salutations!



"Michel.Girard" a écrit dans le message
de news:
O$35E$
Bonsoir
Je désire modifier une macro par macro
Est-ce possible ?
Merci beaucoup
Michel