Microsoft 365 Comptez le nombre de mot sans les signes !?=...

moreauste

XLDnaute Nouveau
Bonjour,
J'ai besoin de connaître le nombre de mot mais sans tous les signes du type !?=#...

Comment faire ? J'ai trouvé cela mais cela compte ces signes :

=NBCAR(B3)-NBCAR(SUBSTITUE(B3;" ";""))+1

Cordialement.

Stéphane.
 

job75

XLDnaute Barbatruc
Bonjour moreauste,

En fait vous voulez supprimer tous les caractères qui ne sont pas des lettres, des chiffres ou des espaces.

Le plus simple est d'utiliser cette fonction VBA, voyez le fichier joint :
VB:
Function Nb_Mots%(t$)
Dim i%, x$
t = UCase(t)
For i = Len(t) To 1 Step -1
    x = Mid(t, i, 1)
    If Not (x Like "[A-Z]" Or x Like "[0-9]") And x <> " " Then t = Left(t, i - 1) & Mid(t, i + 1)
Next
Nb_Mots = UBound(Split(Application.Trim(t))) + 1
End Function
Application.Trim c'est la fonction SUPPRESPACE.

Le code doit être placé impérativement dans un module standard.

A+
 

Pièces jointes

  • Nb_Mots(1).xlsm
    16.5 KB · Affichages: 18

moreauste

XLDnaute Nouveau
Un grand merci à toi mais j'ai trouvé un petite défaut... le mot "à" n'est pas compté comme un mot mais "a" par contre si.

Je pense que les 2 devraient être comptés comme aussi "Ô" que je viens de tester aussi.

Facile à corriger ?

Merci.

Stéphane.
 

job75

XLDnaute Barbatruc
Bonjour moreauste, le forum,

On peut même mettre l'espace entre les crochets, fichier (3) :
VB:
Function Nb_Mots%(t$)
Dim i%
t = LCase(t)
For i = Len(t) To 1 Step -1
    If Not Mid(t, i, 1) Like "[0-9, ,a-z,à,ô]" Then t = Left(t, i - 1) & Mid(t, i + 1)
Next
Nb_Mots = UBound(Split(Application.Trim(t))) + 1
End Function
Bonne journée.
 

Pièces jointes

  • Nb_Mots(3).xlsm
    16.6 KB · Affichages: 3

Discussions similaires

Réponses
5
Affichages
266
Réponses
2
Affichages
210

Statistiques des forums

Discussions
312 492
Messages
2 088 936
Membres
103 987
dernier inscrit
Doctami