Compter le nombre de lignes dans un module ?

Sebast

XLDnaute Impliqué
Bonsoir à toutes et à tous,

je cherche en vain depuis un certain temps la méthode pour compter le nombre de lignes de code présente dans un module

Dans une feuille excel je sais faire, mais ça n'est pas transposable aux modules …

Quelqu'un sait-il comment déterminer le nombre de lignes qu'il y a dans un module ?
Dans la pièce jointe, j'attends par exemple pour le module 1 une réponse = 25 et pour le module 2 = zéro


Merci d'avance

Sebast
 

Pièces jointes

  • Forum_02122014.xlsm
    15.2 KB · Affichages: 41

Dranreb

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonsoir

Voir du coté de la propriété ContOfLines de l'objet CodeModule.
Et CodeModule est une propriété de l'objet VBComponent lui même membre d'une collection VBComponents de l'objet VBProject.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonsoir à tous

je cherche en vain depuis un certain temps la méthode pour compter le nombre de lignes de code présente dans un module
Tu cherches avec quels mot-clés ?
car ... voici un exemple tout frais rapporté par G..gle
Code:
Sub CountCodeLines()
    Dim VBCodeModule As Object
    Dim NumLines As Long, N As Long
    With ActiveWorkbook
          For N = 1 To .VBProject.VBComponents.Count
                Set VBCodeModule = .VBProject.VBComponents(N).CodeModule
                NumLines = NumLines + VBCodeModule.CountOfLines
          Next
    End With
    MsgBox "Total number of lines of code in the project = " & NumLines, , "Code Lines"
    Set VBCodeModule = Nothing
End Sub
ou aussi
Code:
Public Sub CountLines()
Dim vbproj As Object 'VBProject
Dim vbComp As Object 'VBComponent
For Each vbComp In ThisWorkbook.VBProject.VBComponents
MsgBox vbComp.Name & " " & vbComp.CodeModule.CountOfLines
Next vbComp
End Sub
 
Dernière édition:

Sebast

XLDnaute Impliqué
Re : Compter le nombre de lignes dans un module ?

Bonsoir à tous,

merci pour vos réponses, qui m'ont mis sur la piste et m'ont incité à creuser davantage.

Danreb : tu avais raison, il faut se creuser les méninges

Staple1600 : idem, même si Google m'a plus égaré qu'autre chose ...

du coup, pour faire très simple, c'était plutôt comment intervenir sur un module particulier qui me posait problème.
Pour les novices (comme moi) que ça pourrait intéresser, compter le nombre de lignes du module 1 devient :

Code:
Sub CompterLignesModule1()

Dim number As Integer

With ThisWorkbook.VBProject.vbComponents("Module1").CodeModule
    number = .CountOfLines
    MsgBox "Dans le module 1, il y a " & number & " lignes de code"
End With

End Sub
 

cathodique

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonjour,

Le sujet m'interresse. J'ai donc testé vos codes mais sans succès donc quelques choses m'échappent.

code de Sebat, ces 2 lignes sont en rouge pourquoi?
Code:
number = .CountOfLines
    MsgBox "Dans le module 1, il y a " & number & " lignes de code"

codes de Staple1600, j'obtiens une erreur (voir image) ErreurVBA.JPG

Merci pour votre précieuse aide.

Cordialement,
 

Sebast

XLDnaute Impliqué
Re : Compter le nombre de lignes dans un module ?

Bonjour Cathodique,

sans fichier joint, c'est pas évident de diagnostiquer le problème.
Cependant, l'erreur peut venir de ce que Module1 n'existe pas chez toi (peut-être a-t-il été renommé de façon plus explicite, du genre "monCode" ...)

as-tu copié exactement mon code posté à 22 h 31, ou seulement un bout ?
Si seulement un bout, on peut avoir des surprises si la structure with ... end with y est mais pas le "." devant l'instruction (ou inversement pas de with ... end with mais le point) ...


Cordialement

Sebast
 

cathodique

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonjour Sebat,

Merci pour ton retour. J'ai effectué un copier/coller de ton code posté à 22h31 (post#4).

J'ai pris au hasard un module de mes fichiers pour monter celui que je joins.

Et le module1 existe bien, ton code est dans le module2.

Merci par avance.

Cordialement,

Elias
 

Pièces jointes

  • Nb_Ligne_Module1.xlsm
    18.4 KB · Affichages: 47
  • Nb_Ligne_Module1.xlsm
    18.4 KB · Affichages: 55
  • Nb_Ligne_Module1.xlsm
    18.4 KB · Affichages: 53

Sebast

XLDnaute Impliqué
Re : Compter le nombre de lignes dans un module ?

Elias,

j'ai downloadé ton fichier et bien constaté les lignes en rouge.
J'ai effacé la sub et je l'ai recollé après l'avoir copié depuis le site et là ... mystère ! ça marche ...

Va comprendre ... essaie et dis-nous !

à +

Sebast
 

Dranreb

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonjour.
J'avais aussi d'inexplicables erreurs sur cette procédure.
J'ai réussi à la faire fonctionner en la réécrivant comme ça :
VB:
Sub CompterLignesModule1()
Dim N As Long
N = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.CountOfLines
MsgBox "Dans le module 1, il y a " & N & " lignes de code"
End Sub
Mais je ne suis pas sur ce soit déterminant, j'avais aussi préalablement coché la référence "Microsoft Visual Basic for Applications Extensibility 5.3". C'est la biliothèque VBIDE. Elle définit entre autre les types de données VBComponent et CodeModule pour une programmation correcte, c'est à dire sans liaison tardive.
L'utilisation de ces objets peut de plus nécessiter dans Excel, à partir du volet Sécurité des Options, bouton Sécurité des macros, sous volet "Sources fiables" de cocher "Faire confiance au projet Visual Basic".
 

job75

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonjour à tous,

Dans la macro du post #7, devant les textes non compilés en rouge, il y a des caractères qui ne sont pas des espaces mais des caractères de code 160 (espace insécable).

Apparemment VBA n'aime pas ça...

A+
 

MJ13

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Bonjour à tous

Vous pouvez tester un code de ce type (enfin de moi :)):

Code:
Sub a()
    iajcode = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents("ThisWorkbook").CodeModule.CountOfLines
    MsgBox iajcode
End Sub
Sub ab()
    Nmod = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Count
    For i = 1 To Nmod
        'MsgBox Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Item(i).Name
        iajcode = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents(Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Item(i).Name).CodeModule.CountOfLines
        MsgBox Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Item(i).Name & " : " & iajcode & " ligne(s)."
    Next
End Sub
 

job75

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Hello Michel :)

Bien vu mais tu vois je trouve qu'au lieu de :

Code:
Workbooks(ActiveWorkbook.Name)
tu devrais écrire :

Code:
Workbooks(Workbooks(Workbooks(ActiveWorkbook.Name).Name).Name)
Car plus c'est long...

A+
 

MJ13

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Re, Bonjour Gérard

Merci, je note :).

Par contre j'ai déjà eu des soucis avec des copies de code VBA dans un fichier. Il fallait utiliser le codename de la feuille au lieu du name :confused:.
 

cathodique

XLDnaute Barbatruc
Re : Compter le nombre de lignes dans un module ?

Un grand merci à vous tous mais je ne m'en sors pas. J'ai essayé tous vos codes mais rien n'y fait j'ai toujours la même erreur (voir image)ErreurVBA2.JPG
Code:
Sub compterlignemodule1()   'de Sebat
Dim number As Integer
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule  'erreur ici
number = .CountOfLines
MsgBox "Dans le module 1, il y a " & number & "lignes decode"
End With
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Compter_LignesModule1() 'de Drandeb
Dim N As Long
N = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.CountOfLines  'erreur ici
MsgBox "Dans le module 1, il y a " & N & " lignes de code"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub a() 'de MJ13
iajcode = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents("ThisWorkbook").CodeModule.CountOfLines 'erreur ici
MsgBox iajcode
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ab() 'de MJ13
'Nmod = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Count  'erreur ici
Nmod = Workbooks(Workbooks(Workbooks(ActiveWorkbook.Name).Name).Name).VBProject.VBComponents.Count 'de JOB75 erreur ici
For i = 1 To Nmod
'MsgBox Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Item(i).Name
iajcode = Workbooks(ActiveWorkbook.Name).VBProject.VBComponents(Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Item(i).Name).CodeModule.CountOfLines
MsgBox Workbooks(ActiveWorkbook.Name).VBProject.VBComponents.Item(i).Name & " : " & iajcode & " ligne(s)."
    Next
End Sub
j'ai aussi utilisé la proposition de Job75 et toujours le même plantage sur la même ligne.

Encore merci

cordialement
 

Pièces jointes

  • Nb_Ligne_Module1.xlsm
    19.1 KB · Affichages: 35
  • Nb_Ligne_Module1.xlsm
    19.1 KB · Affichages: 40
  • Nb_Ligne_Module1.xlsm
    19.1 KB · Affichages: 41

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T