IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

compter le nombre de lignes dans une cellule Excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut compter le nombre de lignes dans une cellule Excel
    Bonjour,

    Je dois calculer le nombre de retour à la ligne dans les cellules Excel de la colonne H de mon tableau.
    Aprés des recherches sur differents forum, j 'ai trouvé ce petit programme qui fonctionne relativement bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub comptage()
     
    htl = 12.75 
    lgn = ActiveCell.Row 
    htlgn = Rows(lgn).RowHeight
    txt = Cells(lgn, 1)
     
        Tableau = Split(txt, Chr(10))
        cpt = UBound(Tableau)
     
    nbl = htlgn / htl
    MsgBox "Nombre de lignes dans la cellule = " & nbl & Chr(10)
     
    End Sub
    Le souci, c'est que parfois, mes collègues créent des retour à la ligne vide.
    Et le code ci dessus ne fait pas la difference entre un retour à la ligne avec des informations et un retour à la ligne vide.

    Comment puis je dire à mon code de compter uniquement les retour à la ligne qui contiennent une information

    Merci d'avance

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Tu peux essayer comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub comptage()
        htl = 12.75
        lgn = ActiveCell.Row
        htlgn = Rows(lgn).RowHeight
        txt = Cells(ActiveCell.Row, 1)
        Tableau = Split(txt, Chr(10))
        For i = 0 To UBound(Tableau)
            If Tableau(i) = "" Then rectif = rectif + 1
        Next i
        nbl = (htlgn / htl) - rectif
        MsgBox "Nombre de lignes dans la cellule = " & nbl & Chr(10)
    End Sub
    Attention toutefois à ce type de calcul car il est directement lié à la hauteur de ligne, elle-même étant liée au choix de la police (hauteur 12.75 points pour Arial 10 par exemple).

    Cordialement.

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une autre fonction qui permet de donner le nombre de lignes séparés par un retours de ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function NbreLignes(ByVal Str As String) As Integer
     
    NbreLignes = Len(Str) - Len(Replace(Str, Chr(10), "")) + (Right(Trim(Str), 1) = Chr(10)) + 1
    End Function
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    @mercatog
    Au vu du code présenté par facteur, j’ai compris qu’il souhaite compter les sauts de ligne ainsi que les renvois à la ligne automatique, ce qui explique son calcul avec la hauteur de ligne.

    Cordialement.

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    @gFZT82
    ...que les renvois à la ligne automatique..
    Oui peut être c'est ça.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour mercatog et gFZT82
    Merci pour cette reponse.
    Effectivement comme le dis gFZT82, la macro était fait pour compter les sauts de ligne ainsi que les renvois à la ligne automatique.
    Mais je me suis rendu compte que mes collegues utilisaient uniquement les renvois à la ligne automatique.
    Donc le code de mercatog me semble plus simple à appliquer.

    Cependant, je ne suis pas à l'aide avec les functions.
    Comment inserer ce code dans une cellule qui me donnerait le nombre de renvoie à la ligne ?

    Par exemple, les renvoie à la ligne se trouve dans les cellules de la colonne H.
    j 'aimerais que dans les cellule de la colonne I, s'inscrivent le nombre de renvoie automatique à la ligne.
    Exemple : H2 = 3 renvoie automatique
    donc I2 = 3

    Bonjour mercatog
    J'ai pu integré ton code dans les cellules de la colonne I.
    Et cela fonctionne trés bien : cela me donne donc le nombre de retour à la ligne des cellules de la colonne H.
    Néanmoins, j'ai pu constaté 1 problème qui crée un quiproquo:
    lorsque la cellule H2 est vide, le code me renvoie la valeur 1 alors que je souhaiterais avoir 0.
    Y aurait il un moyen d'y remedier ?

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function NbreLignes(ByVal Str As String) As Integer
     
    NbreLignes = Len(Str) - Len(Replace(Str, Chr(10), "")) + (Right(Trim(Str), 1) = Chr(10)) - (Len(Str) > 0)
    End Function
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour mercatog
    Ton code fonctionne à merveille .
    Pourrais tu me décrire ce code afin que je puisse le comprendre.. et ainsi le réutiliser dans d'autres fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbreLignes = Len(Str) - Len(Replace(Str, Chr(10), "")) + (Right(Trim(Str), 1) = Chr(10)) - (Len(Str) > 0)

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    La fonction peut être écrite comme ceci (C'est plus visible et c'est plus compréhensible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function NbreLignes(ByVal Str As String) As Integer
    Dim n As Integer, m As Integer
    Dim Str2 As String
    Dim k As Byte
     
    n = Len(Str)
    If n > 0 Then
        's'il y a un saut de ligne en fin de Str, on ne doit pas tenir compte de lui
        If Right(Trim(Str), 1) = Chr(10) Then k = 1
        'On a compté le nombre total de caractères dans Str
        'ensuite on supprime la caractère qu'on désire compter (ici c'est le retour en ligne Chr(10)
        Str2 = Replace(Str, Chr(10), "")
        'm désigne le nombre total de caractères après avoir supprimé Chr(10)
        m = Len(Str2)
        If m > 0 Then NbreLignes = n - m + 1 - k
    End If
    End Function
    La forme précédente est une forme comprimée de tous ces lignes:

    Explication de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbreLignes = Len(Str) - Len(Replace(Str, Chr(10), "")) + (Right(Trim(Str), 1) = Chr(10)) - (Len(Str) > 0)
    (a) Len(Str): Nombre global de caractères du mot Str
    (b) Len(Replace(Str, Chr(10), "")): Nombre global de caractères du mot Str ne tenant pas compte du caractère Chr(10)
    (c) (Right(Trim(Str), 1) = Chr(10)): Partie booléenne (Vrai=-1 et Faux=0) Si le dernier caractère est Chr(10) donne -1, sinon 0
    (d) (Len(Str) > 0): Partie booléenne (Vrai=-1 et Faux=0) Si le mot est vide donne -1 sinon 0


    NbreLignes =(a)-(b)+((c)-(d))
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Merci Mercatog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compter nombre de mots dans une cellule Excel
    Par nkhalidy dans le forum Excel
    Réponses: 6
    Dernier message: 12/07/2017, 21h12
  2. [XL-2010] Compter le nombre de lignes dans une cellule fusionnée
    Par hipnobe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/02/2015, 23h12
  3. Réponses: 7
    Dernier message: 14/03/2014, 13h39
  4. Compter le nombre de lignes dans une table
    Par foudesbois dans le forum VBA Word
    Réponses: 4
    Dernier message: 15/02/2013, 14h21
  5. Compter le nombre de lignes dans un cellule
    Par Gautheron dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 01/02/2009, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo