Comment (bien) compter le nombre de mots dans un texte avec Google Sheets ?
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."
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.
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
.
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.
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.
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️⃣ :
- méthode 2️⃣ :
=COUNTA(SPLIT(REGEXREPLACE(A2;"[!""#$%&()*+,./:;<=>?@[\]^_`{|}~]";"");" "))
À 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 :)
- Partager sur Twitter
- Partager sur Facebook
- Partager sur LinkedIn
- Partager sur Pinterest
- Partager par E-mail
- Copier le lien
Un Template Google Sheets Offert ! 🎁
Rejoins ma newsletter et reçois une astuce SEO chaque mercredi ! En cadeau, je t'offre un template Google Sheets avec 50 fonctions de scraping prêtes à l'emploi.