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

Word Discussion :

[VBA] - Comptage sur une colonne spécifique dans tableau [WD-2016]


Sujet :

Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [VBA] - Comptage sur une colonne spécifique dans tableau
    Bonjour à toutes et à tous,

    Mon attente est la suivante :
    Arriver à compter les occurrences "MME" présentes dans une colonne précise (la 3ème) d'un tableau sous word.

    La macro ci-dessous fonctionne très bien mais cela compte sur l'ensemble du tableau. De ce fait si l'on a dans une autre colonne l’occurrence MME contenu dans un mot, cela est pris en compte... et le total attendu est faussé.
    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
     
     
    Sub Compte() 
     
        Dim Plage As String 
        Dim Compteur As Integer 
        Dim searchtext As String 
        Dim Tableau() As String 
     
     Plage = ActiveDocument.Tables(1).Range.Text 
     
        searchtext = "MME" 
        Tableau = Split(Plage, searchtext) 
        Compteur = UBound(Tableau()) 
        ActiveDocument.Bookmarks("Nb1").Range.Text = Compteur 
     
    End Sub
    J'ai bien tenté de modifier la ligne
    Plage = ActiveDocument.Tables(1).Range.Text
    en mettant
    Plage = ActiveDocument.Tables(1).columns(3).Range.Text
    mais évidement ça ne va pas et génère une erreur ;-(

    Un grand merci d'avance à celui ou celle qui pourra me corriger ce code.
    Daniel

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par danielos Voir le message
    Bonjour,

    Essayez ce code contenant une fonction :

    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
    Sub TestCompterLesMots()
    Dim NombreDeMots As Long
        NombreDeMots = CompterLesMots(ActiveDocument.Tables(1), 3, "MME")  ' A adapter selon le numéro d'ordre de votre table dans le document
        MsgBox NombreDeMots
    End Sub
     
    Function CompterLesMots(ByVal TableBalayee As Table, ByVal ColonneBalayee As Integer, ByVal ChaineCherchee As String) As Long
    Dim I As Long
        CompterLesMots = 0
        With TableBalayee
             For I = 1 To TableBalayee.Rows.Count
                 If InStr(1, .Cell(I, ColonneBalayee).Range.Text, ChaineCherchee, vbTextCompare) > 0 Then
                    CompterLesMots = CompterLesMots + 1
                 End If
             Next I
        End With
    End Function

  3. #3
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2003
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Essayez ce code contenant une fonction :

    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
    Sub TestCompterLesMots()
    Dim NombreDeMots As Long
        NombreDeMots = CompterLesMots(ActiveDocument.Tables(1), 3, "MME")  ' A adapter selon le numéro d'ordre de votre table dans le document
        MsgBox NombreDeMots
    End Sub
     
    Function CompterLesMots(ByVal TableBalayee As Table, ByVal ColonneBalayee As Integer, ByVal ChaineCherchee As String) As Long
    Dim I As Long
        CompterLesMots = 0
        With TableBalayee
             For I = 1 To TableBalayee.Rows.Count
                 If InStr(1, .Cell(I, ColonneBalayee).Range.Text, ChaineCherchee, vbTextCompare) > 0 Then
                    CompterLesMots = CompterLesMots + 1
                 End If
             Next I
        End With
    End Function

    Ce code fonctionne très bien et répond à mon attente.
    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/10/2012, 14h59
  2. Réponses: 8
    Dernier message: 23/05/2012, 20h24
  3. Réponses: 1
    Dernier message: 07/02/2008, 00h10
  4. Réponses: 2
    Dernier message: 06/09/2007, 15h08
  5. Réponses: 3
    Dernier message: 03/05/2007, 11h06

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