1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Option Explicit
Option Compare Text
Sub testAjout()
'"laProcedure" est la macro dont vous souhaitez numéroter les lignes
NumerotationLignesProcedure "Module1", "laProcedure"
NumerotationLignesProcedure "Module1", "laProcedure_1"
NumerotationLignesProcedure "Module1", "laProcedure_2"
End Sub
Sub NumerotationLignesProcedure(nomModule As String, nomMacro As String)
'
'Cet exemple ne gère pas les erreurs s'il existe déja une numérotation
'
Dim Debut As Integer, Lignes As Integer, x As Integer
Dim Texte As String, strVar As String
With ThisWorkbook.VBProject.VBComponents(nomModule).CodeModule
Debut = .ProcStartLine(nomMacro, 0)
Lignes = .ProcCountLines(nomMacro, 0)
End With
For x = Debut + 2 To Debut + Lignes - 1
With ThisWorkbook.VBProject.VBComponents(nomModule).CodeModule
Texte = .Lines(x, 1)
strVar = Application.WorksheetFunction.Substitute(Texte, " ", "")
strVar = Application.WorksheetFunction.Substitute(strVar, vbCrLf, "")
strVar = Application.WorksheetFunction.Substitute(strVar, vbTab, "")
'Adaptez les filtres en fonction de vos projets.
'Remarque: les arguments PrivateFunction et PublicFunction sont volontairement accolés.
'
If strVar <> "" And _
Left(strVar, 3) <> "Sub" And _
Left(strVar, 10) <> "PrivateSub" And _
Left(strVar, 9) <> "PublicSub" And _
Left(strVar, 8) <> "Function" And _
Left(strVar, 15) <> "PrivateFunction" And _
Left(strVar, 14) <> "PublicFunction" And _
Right(ThisWorkbook.VBProject.VBComponents(nomModule). _
CodeModule.Lines(x - 1, 1), 1) <> "_" _
Then .ReplaceLine x, x & " " & Texte
End With
Next
End Sub |
Partager