Compter les lignes d'un code VBA

suistrop

XLDnaute Impliqué
Bonjour,

J'ai bientot fini de programmer tout ce que j avais dans le cadre de mon stage.
J'aurais voulu savoir comment faire pour calculer le nombre de ligne de code que j ai tapé histoire de me faire une idée.

Je ne sais pas non plus comment afficher les numéro de ligne sous l éditeurs VBA.


Merci
 

Raja

XLDnaute Accro
Re : Compter les lignes d'un code VBA

Bonjour,

Dans l'éditeur VBA, quand tu positionne ton curseur dans une ligne du code, les coordonnées de la ligne et la colonne sont affichés dans la barre d'outil (à coté de l'outil "aide sur Microsoft VB")
 

Staple1600

XLDnaute Barbatruc
Re : Compter les lignes d'un code VBA

Bonjour
Code:
Public Function TotalCodeLinesInProject(VBProj As VBIDE.VBProject) As Long
'auteur: Chip Pearson
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This returns the total number of code lines (excluding blank lines and
    ' comment lines) in all VBComponents of VBProj. Returns -1 if VBProj
    ' is locked.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        
        Dim VBComp As VBIDE.VBComponent
        Dim LineCount As Long
        If VBProj.Protection = vbext_pp_locked Then
            TotalCodeLinesInProject = -1
            Exit Function
        End If
        For Each VBComp In VBProj.VBComponents
            LineCount = LineCount + TotalCodeLinesInVBComponent(VBComp)
        Next VBComp
        
        TotalCodeLinesInProject = LineCount
    End Function
 

suistrop

XLDnaute Impliqué
Re : Compter les lignes d'un code VBA

Merci Staple1600

Mais il me dit que la fonction n est pas défini erreur : type défini par l utilisateur non défini :(

et sinon comme nom dans la fonction ?? le nom de mon fichier ou VBAproject? ou VBAProject(nom de mon fichier)

Merci


PS : toute mes ligne de code se trouve dans des modules !
 

Staple1600

XLDnaute Barbatruc
Re : Compter les lignes d'un code VBA

Re

EDITION: Autrement , il y a plus simple
Installer MZTools (voir dans le salon post sur cet utilitaire fort sympathique)
et clique dans VBE, sur Statistiques
et là tu auras tout et plus


Comme cela ca fonctionne mieux
(activer dans Référence:
Microsoft Visual Basic for Applications Extensibilty 5.3 )

Lancer la macro test
(dans un classeur contenant du code VBA)

Code:
Sub test()
Dim VBProj As VBIDE.VBProject
Set VBProj = ActiveWorkbook.VBProject
MsgBox TotalCodeLinesInProject(VBProj)
End Sub
Public Function TotalCodeLinesInProject(VBProj As VBIDE.VBProject) As Long
'auteur: Chip Pearson
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This returns the total number of code lines (excluding blank lines and
    ' comment lines) in all VBComponents of VBProj. Returns -1 if VBProj
    ' is locked.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        
        Dim VBComp As VBIDE.VBComponent
        Dim LineCount As Long
        If VBProj.Protection = vbext_pp_locked Then
            TotalCodeLinesInProject = -1
            Exit Function
        End If
        For Each VBComp In VBProj.VBComponents
            LineCount = LineCount + TotalCodeLinesInVBComponent(VBComp)
        Next VBComp
        
        TotalCodeLinesInProject = LineCount
    End Function

Public Function TotalCodeLinesInVBComponent(VBComp As VBIDE.VBComponent) As Long
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This returns the total number of code lines (excluding blank lines and
    ' comment lines) in the VBComponent referenced by VBComp. Returns -1
    ' if the VBProject is locked.
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim N As Long
        Dim S As String
        Dim LineCount As Long
        
        If VBComp.Collection.Parent.Protection = vbext_pp_locked Then
            TotalCodeLinesInVBComponent = -1
            Exit Function
        End If
        
        With VBComp.CodeModule
            For N = 1 To .CountOfLines
                S = .Lines(N, 1)
                If Trim(S) = vbNullString Then
                    ' blank line, skip it
                ElseIf Left(Trim(S), 1) = "'" Then
                    ' comment line, skip it
                Else
                    LineCount = LineCount + 1
                End If
            Next N
        End With
        TotalCodeLinesInVBComponent = LineCount
    End Function
 
Dernière édition:

suistrop

XLDnaute Impliqué
Re : Compter les lignes d'un code VBA

Re


Tu as coché la référence citée plus bas?


Le code tel quel fonctionne avec le classeur actif

PS: utilises MZtools c'est beaucoup plus simple

J ai activé la référence ,

j ai bien compris que ca marchais avec le fichier en cours mais je t ai donnée le nom pour que tu me dise sous quel forme le mettre directement dans la fonction.

Je vais explorer la piste MZtools je sais pas du tout ce que c est je vais voir :) google is my friend !
 

suistrop

XLDnaute Impliqué
Re : Compter les lignes d'un code VBA

Merci pour tout ,
Finalement j ai installer MZtool simpas :)

ET voila le verdict est tombé :)


VBAProject
Lignes de code : 8 033 (74%)
Lignes de commentaires : 2 721 (25%)
Total des lignes : 10 754


j ai pas tant glander que ca en faite...
 

Discussions similaires

Réponses
7
Affichages
424

Statistiques des forums

Discussions
312 558
Messages
2 089 597
Membres
104 221
dernier inscrit
legendking85