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.
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