Aller au contenu

Comment (bien) compter le nombre de mots dans un texte avec Google Sheets ?

Antoine Brisset
Antoine Brisset
Temps de lecture : 4 min
Comment (bien) compter le nombre de mots dans un texte avec Google Sheets ?
Photo by James Orr / Unsplash

Table des matières

Compter le nombre de mots dans un texte est une tâche récurrente en SEO.

Pourtant, elle n'est pas aussi triviale qu'il n'y paraît.

Je te montre aujourd'hui comment faire avec Google Sheets.

Méthodes

Il existe plusieurs façons de faire.

Je vais t'en présenter deux :

  • méthode 1️⃣ : compter le nombre d'espaces dans le texte
  • méthode 2️⃣ : découper le texte à chaque espace et compter le nombre de valeurs obtenues

Le texte d'exemple est : "je vous montre comment calculer le nombre de mots d'un texte, avec Google Sheets."

2 méthodes de comptage

Avec la 1ère méthode, on compte le nombre total de caractères (LEN), puis on compte le nombre de caractères sans les espaces (SUBSTITUTE). La différence entre les 2 permet d'obtenir le nombre de mots.

Avec la 2ème méthode, on découpe la chaîne à chaque espace (SPLIT), et on compte le nombre de valeurs issues de ce découpage (COUNTA).

Problème

Dans les deux cas, le décompte peut être faux.

Pourquoi ?

À cause des signes de ponctuation.

Et oui, avec la 1ère méthode (LEN), si la phrase se termine par un espace + point d'exclamation (" !"), cet espace va être comptabilisé. Ce qui va ajouter un mot "en trop".

Idem avec la 2ème méthode (SPLIT) : le caractère "!" va se retrouver dans la plage de COUNTA et il sera comptabilisé.

La virgule et le point, eux, ne posent pas problème, car ils sont collés au mot qui les précède.

Espace + point d'exclamation = un mot en trop

Solution

Pour contourner ce problème, il faut passer par une méthode intermédiaire qui va remplacer les signes de ponctuation problématiques par... rien.

Ce qu'on va faire avec REGEXREPLACE.

Suppression des signes de ponctuation

C'est mieux.

Avec la 2ème méthode, cette fois le résultat est correct.

Mais... c'est toujours incorrect avec la 1ère méthode.

Et oui, si le texte se termine par un point (exemple : "Sheets."), le dernier mot n'est pas comptabilisé. Il faut donc forcer un +1.

Ajout de +1 à la 1ère formule

Cette fois c'est bon.

Hummm... Vraiment ?

Non, il reste un problème : si le texte se termine par un espace + point d'exclamation (ou d'interrogation), le signe de ponctuation va bien être supprimé (via le REGEXREPLACE) mais pas l'espace.

Il faut donc ajouter un TRIM pour le supprimer.

Suppression de l'espace superflu

Récapitulatif

Voici les formules finales.

  • méthode 1️⃣ :
=LEN(TRIM(REGEXREPLACE(A2;"[,;:?!]+";"")))-LEN(TRIM(SUBSTITUTE(REGEXREPLACE(A2;"[,;:?!]+";"");" "; "")))+1
  • méthode 2️⃣ :
=COUNTA(SPLIT(REGEXREPLACE(A2;"[,;:?!]+";"");" "))

Limites

Bien sûr, ces 2 méthodes ne sont pas parfaites.

Elles comportent même plusieurs biais.

Deux exemples pour illustrer :

  • si je prends le texte "2 + 2 = 4", 5 mots seront comptabilisés. Est-ce juste ? Faut-il compter les opérateurs ? Les chiffres ?
  • si je prends ce morceau de phrase "Google Sheets ( le tableur Google)", 6 mots seront comptabilisés. Ici, à cause de l'erreur de syntaxe (espace superflu après la parenthèse ouvrante), la parenthèse sera comptabilisée.

Pour traiter ces cas particuliers, il faudrait supprimer tout signe de ponctuation, hors mis le trait d'union et l'apostrophe qui sont utilisés pour lier des mots.

On aurait alors des formules de ce type :

  • méthode 1️⃣ :
=LEN(TRIM(REGEXREPLACE(A2;"[!""#$%&()*+,./:;<=>?@[\]^_`{|}~]";" ")))-LEN(TRIM(SUBSTITUTE(REGEXREPLACE(A2;"[!""#$%&()*+,./:;<=>?@[\]^_`{|}~]";" ");" "; "")))+1
Jolie regex, n'est-ce pas ?
  • méthode 2️⃣ :
=COUNTA(SPLIT(REGEXREPLACE(A2;"[!""#$%&()*+,./:;<=>?@[\]^_`{|}~]";"");" "))
Suppression de toute la ponctuation (sauf trait d'union et apostrophe)

À vous de voir ce qui vous paraît le plus juste.

Honnêtement, je pense que chacun a sa propre définition de ce qu'est un "mot". Donc difficile d'être objectif.

D'ailleurs, ça peut poser problème pour des prestations de rédaction dont le tarif est indexé sur le nombre de mots...

Une dernière remarque.

Pour le texte qui m'a servi d'exemple, un outil comme compteur-de-mots.ouest-france.fr me sort 15 mots et non 14, car il considère "d'" et "un" dans "d'un" comme deux mots distincts.

Personnellement, je le compte comme un seul mot, mais encore une fois à chacun de se faire son avis :)

Google Sheets

Antoine Brisset Twitter

Consultant SEO depuis 2010. Je traque les clics inutiles et automatise les tâches répétitives pour gagner du temps dans mon quotidien de travailleur du web.


Articles Similaires

Membres Public

Importer des datasets facilement grâce aux fonctions nommées de Google Sheets

Aujourd'hui, je vais te montrer comment importer facilement un jeu de données que tu utilises souvent à l'intérieur de tes feuilles Google Sheets. Exemple : tu travailles sur du SEO local et tu as besoin, régulièrement, de récupérer la liste des 36000 communes françaises. Pour éviter de devoir à chaque fois

Importer des datasets facilement grâce aux fonctions nommées de Google Sheets
Membres Public

Comment scraper proprement avec IMPORTXML ?

Quand on utilise IMPORTXML pour extraire le contenu de plusieurs balises (exemple : toutes les balises h2 d'une page), les différentes valeurs trouvées s'affichent par défaut les unes en dessous des autres, sur plusieurs lignes. C'est embêtant. Pourquoi ? Parce que si on ajoute d'autres URLs, on ne peut pas "tirer" la

Comment scraper proprement avec IMPORTXML ?
Membres Public

L'astérisque comme alternative à la fonction AND dans Google Sheets

Les formules Google Sheets, c'est bien, mais quand on commence à enchaîner les ouvertures de parenthèses pour imbriquer plusieurs fonctions, ça devient vite indigeste. Aujourd'hui, je vais te donner une astuce toute simple pour réduire le nombre de parenthèses dans tes IF. En général, pour tester si plusieurs conditions sont

L'astérisque comme alternative à la fonction AND dans Google Sheets