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

VBA Word Discussion :

Compter le nombre de lignes dans une table


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Compter le nombre de lignes dans une table
    Bonjour,

    Voici mon problème : je cherche à compter le nombre ligne d'une colonne bien précise dans une table

    J'ai tout d'abord testé cette solution qui fonctionne parfaitement pour une table où toutes les colonnes ont le même nombre de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function rechercheLigne(motCle As String, ByVal doc As Document, nTable As Integer, nCol As Integer) As Integer
        Dim i As Integer
        Dim x
     
        x = doc.Tables(nTable).Rows.Count
     
        For i = 1 To doc.Tables(nTable).Rows.Count Step 1
            If (doc.Tables(nTable).Cell(i, 1).Range.Text Like motCle) Then
            rechercheLigne = i
            Exit For
            End If
        Next i
    End Function
    Cela ne fonctionne plus si ma colonne contient moins de ligne que ma table ...

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    L'information est directement disponible avec cette ligne de code ou col représente l'index de la colonne à compter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.Tables(1).Columns(col).Cells.Count

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse carden.

    Ceci me paraissait une bonne solution mais finalement cette ligne génère l'erreur d'exécution '5992'

    "Impossible d'accéder à des colonnes individuelles de cette collection car le tableau possède des cellules de largueur différentes"

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Le problème venait du fait que certaines cellules étaient fusionnés avec d'autres de colonnes différentes, il faut donc ruser.

    En se basant sur les indices de range des cellules, on peut y arriver.
    Pouvez-vous le tester et le confirmer. L'erreur générée est la 5941


    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
    18
    19
    20
    21
    Function nbligcol(doc As Document, col As Integer) As Integer
    Dim d As Cell
    Dim start As Long
    nbligcol = 0
    start = 0
    For i = 1 To doc.Tables(1).Rows.Count
    Set d = doc.Tables(1).Cell(i, col)
    On Error GoTo plus
    nbligcol = nbligcol + 1
    start = d.Range.start
    Next
    Exit Function
    plus:
    If start <> d.Range.start And Err.Number = 5941 Then
    nbligcol = nbligcol + 1
    start = d.Range.start
    End If
    i = i + 1
    Resume
     
    End Function

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Effectivement cette solution fonctionne.

    Merci beaucoup !!

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

Discussions similaires

  1. [SQL] Compter le nombre d'occurences dans une table par valeur
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 17h22
  2. tables SYSINDEXES - Comptage nombre de lignes dans une tables
    Par Labienus dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/04/2008, 23h20
  3. Compter le nombre de colonne dans une table
    Par Coin dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2006, 16h03
  4. Réponses: 11
    Dernier message: 20/10/2006, 12h16
  5. Réponses: 8
    Dernier message: 20/06/2005, 15h10

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