Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

  • Initiateur de la discussion Initiateur de la discussion thyboob
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thyboob

XLDnaute Nouveau
Bonjour
voilà j'ai une base de donnée à renseigner avec des contraintes qui sont par exemple un champ ayant au minimum 20 mots (pas 20 caractères j'insiste) sachant que le programme d'importation ne compte pas les mots avec 1 ou 2 caractères.
Ma question est comment faire pour réaliser cette formule

exemple de champ :
Chapeau ou couvre chef pour femme disponible en couleur rouge, gris souris et marron cannelle.
Une jolie fleur ton sur ton est cousue sur le coté

la cellule devrait me retourner le chiffre 21

cette formule m'aidera à automatiser mon champ
Merci de votre aide
 
Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Bonjour,

Hello Gilbert🙂

@thyboob:
proposition de fonction:
Code:
Public Function NombreMots(strChaine As String) As Integer
   Dim i As Integer
   Dim t: t = Split(Application.Clean(Application.Trim(strChaine)), " ")
    For i = 0 To UBound(t)
        NombreMots = NombreMots - (Len(t(i)) > 2)
    Next i
End Function

Appel:

Msgbox NombreMots("Chapeau ou couvre chef pour femme disponible en couleur rouge, gris souris et marron cannelle. Une jolie fleur ton sur ton est cousue sur le coté")

Limitations: il faudrait nettoyer la chaine de tous les caractères de ponctuations.

Pour ne conserver que les espaces en milieu de chaine ainsi que les lettres de Aa à Zz :

Code:
Public Function NettoyageChaine(ByVal str As String) As String
    'ne conservera que les lettres et espaces en milieu de chaine
    Dim i As Integer
    str = Trim(str)
    For i = 1 To Len(str)
        Select Case Asc(UCase(Mid(str, i, 1)))
            Case 32, 65 To 90
                NettoyageChaine = NettoyageChaine & Mid(str, i, 1)
            Case Else
        End Select
    Next i
End Function
Public Function NombreMots(strChaine As String) As Integer
   Dim i As Integer
   Dim t: t = Split(Application.Clean(Application.Trim(strChaine)), " ")
    For i = 0 To UBound(t)
        NombreMots = NombreMots - (Len(t(i)) > 2)
    Next i
End Function

A+
 
Dernière modification par un modérateur:
Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Bonjour thyboob, gilbert_RGI, Hasco,

Avec le texte étudié en A1 :

Code:
=SOMMEPROD((STXT(" "&SUPPRESPACE(A1);LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE(A1))+1));1)=" ")*(TROUVE(" ";STXT(SUPPRESPACE(A1)&" ";LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE(A1))+1));9^9))>3))
Edit : fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Re,

S'il y a des renvois à la ligne - CAR(10) - les remplacer par des espace avec le nom T :

Code:
=SUPPRESPACE(SUBSTITUE(SUBSTITUE(SUBSTITUE(Feuil1!$A1;",";);".";);CAR(10);" "))
Edit : pour simplifier, on peut aussi définir le nom mat :

Code:
=LIGNE(INDIRECT("1:"&NBCAR(T)+1))
Fichier (3).

A+
 

Pièces jointes

Dernière édition:
Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Bonjour à tous
je rentre tout juste et je constate que j'ai beaucoup de réponse sur mon sujet, je vais tester tout ça dès demain et vous fait un retour
en tous les cas un grand merci de votre aide
je vous tiens au courant
@ bientôt
Thierry
 
Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Bonjour thyboob, le fil, le forum,

Les 3 points en A3 forment un seul caractère de code 133.

Il faut le supprimer avec :

Code:
=SUPPRESPACE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(Feuil1!$A1;",";);".";);CAR(133););CAR(10);" "))
Fichier (4).

A+
 

Pièces jointes

Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Bonjour à tous
Merci Merci et Merci c'est exactement les réponses que j'attendais. C'est super

Autre chose, dans la formule peux t-on excluse 1 seul mot de 3 lettres (car l'import n'accepte pas le mot "aux")
Encore merci de votre aide !

Thierry
 
Re : Calculer le nombre de mot d'une cellule seulement si le mot est > à 2 caractères

Re,

Si l'on tient au VBA cette fonction fait la même chose que mes formules précédentes :

Code:
Function Nmots%(t$, n As Byte)
Dim i%
t = Replace(Replace(t, ",", ""), ".", "")
t = Replace(Replace(t, Chr(133), ""), vbLf, " ")
t = Application.Trim(t) 'SUPPRESPACE
For i = 1 To Len(t)
  Nmots = Nmots + (Mid(" " & t, i, 1) = " ") * (InStr(Mid(t & " ", i), " ") > n + 1)
Next
End Function
Nouveau fichier joint.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour