Compte de mots dans un fichier Excel

ErwanJeg

XLDnaute Nouveau
Bonjour,

Je travaille sur des fichiers xls contenant uniquement du texte et je voudrais savoir s'il existe une fonction/macro/formule magique me permettant de faire un compte de mots dans une feuille directement plutôt que de recourir à l'épuisant à la longue Ctrl + C/Ctrl + V vers un fichier Word et utiliser l'outil statistique.
Merci d'avance,
Erwan
 

Staple1600

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

Bonjour


Code:
Sub CountWords()
'auteur: [FONT=Arial][SIZE=1][COLOR=#800000]Charles H. Pearson  [/COLOR][/SIZE][/FONT]
    Dim WordCount As Long
    Dim Rng As Range
    Dim S As String
    Dim N As Long
    For Each Rng In ActiveSheet.UsedRange.Cells
        S =          Application.WorksheetFunction.Trim(Rng.Text)
        N = 0
        If S <> vbNullString Then
            N = Len(S) -  Len(Replace(S, " ", "")) + 1
        End If
        WordCount = WordCount + N
    Next Rng
    MsgBox "Words In ActiveSheet Sheet: " & Format(WordCount,"#,##0")
    End Sub
 

Tibo

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

Bonjour,

Un essai avec une formule sur une autre feuille :

Code:
=SOMMEPROD((NBCAR(Feuil1!A1:C5)-NBCAR(SUBSTITUE(Feuil1!A1:C5;" ";"")))*1)

Plage de cellules à adapter.

Cela dit, pour toute la feuille, ça rique de prendre un "certain" temps...

@+
 

abcd

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

Bonjour Tibo,

Ne faudrait-il pas appliquer un SUPPRESPACE à cette formule (espaces superflus en fin de phrase) et ajouter le nombre de cellules non vides (il y a un mot de plus que d'espaces par cellule) ?

abcd
 

Staple1600

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

Re, bonjour Tibo, abcd



En reprenant la macro précédente

Code:
Sub CountWords(feuille As String)
    Dim WordCount As Long
    Dim Rng As Range
    Dim S As String
    Dim N As Long
    For Each Rng In Sheets(feuille).UsedRange.Cells
        S = Application.WorksheetFunction.Trim(Rng.Text)
        N = 0
        If S <> vbNullString Then
            N = Len(S) - Len(Replace(S, " ", "")) + 1
        End If
        WordCount = WordCount + N
    Next Rng
    MsgBox "Nombre de mot(s) dans la feuille :" & Sheets(feuille).Name & Chr(13) & Format(WordCount, "#,##0")
End Sub
Code:
Sub compte_mots()
Dim nom_feuille As String
nom_feuille = InputBox("Saisir le nom de la feuille")
CountWords nom_feuille
End Sub
 

Tibo

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

re,

Après la remarque judicieuse de abcd, une correction :

Code:
=SOMMEPROD((NBCAR(SUPPRESPACE(Feuil1!A1:C5))-NBCAR(SUBSTITUE(
SUPPRESPACE(Feuil1!A1:C5);" ";""))))+NBVAL(Feuil1!A1:C5)

En supposant qu'aucune cellule ne contiennent qu'un espace (problème qui pourrait être résolu, mais qui alourdirait un peu la formule).

Merci abcd

@+
 

abcd

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

Re Tibo,

Il me semble (non, j'en suis sur !) que SUPPRESPACE supprime l'espace solitaire dans une cellule.

A1 : espace
B1 : =NBCAR(A1) renvoie 1
B2 : =NBCAR(SUPPRESPACE(A1)) renvoie 0

Mais il faudrait aussi que le NBVAL en tienne compte !

abcd
 

Tibo

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

reSalut abcd,

Je crois avoir trouvé une piste pour tenir compte des cellules qui contiendraient un espace. Situation peu probable, mais on ne sait jamais ...

Code:
=SOMMEPROD((NBCAR(SUPPRESPACE(Feuil1!A1:C5))-NBCAR(SUBSTITUE(
SUPPRESPACE(Feuil1!A1:C5);" ";""))))+NBVAL(Feuil1!A1:C5)-SOMMEPROD(((NBCAR(
SUPPRESPACE(Feuil1!A1:C7))+ESTVIDE(Feuil1!A1:C7))=0)*1)

Y'a peut-être plus simple... je vais continuer à chercher.

@+
 

abcd

XLDnaute Barbatruc
Re : Compte de mots dans un fichier Excel

Salut Tibo,

Assez simple avec une fonction de MorefunC :

=NBCAR(SUPPRESPACE(MCONCAT(A1:C10;" ")))-NBCAR(SUBSTITUE(MCONCAT(A1:C10);" ";""))+1

Le seule limite est 32767 caractères dans une cellule, mais cette limite était aussi valable pour les autres solutions.
 

Discussions similaires

Statistiques des forums

Discussions
312 447
Messages
2 088 496
Membres
103 871
dernier inscrit
julienleburton