Compteur de mots dans un texte [Résolu]

Signaler
Messages postés
7
Date d'inscription
vendredi 6 janvier 2006
Statut
Membre
Dernière intervention
10 juin 2007
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
bonjour chers programmeurs ben mwa j mapel omar fall et suis en 2ième année de génie informatk .
ben g un projet à rendre et il concerne la création d'une application ki va ns permettre de compter le nombre d'occurence d'un mot choisi au nivea d l'application ki aura 3 zones de texte; une zone pour la saisie du texte , une pour le choix du mot à rechercher et une pour afficher le nombre d'occurrence du mot

12 réponses

Messages postés
278
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
13 avril 2013
1
Bonjour,

La méthode de Gobillot me semble la plus simple à utiliser (une ligne de code !!!!!)
Pour répondre à la question de OZMO25, tu as simplement à placer sur ta feuille 3 zones de textes :
> TxtTextSource qui contient le texte à analyser
> TxtTextSearch qui contient le mot ou la chaîne de caractères à chercher dans la première zone de texte
> TxtNb qui te donnera le nombre d'occurence trouvé

Le commandButton se nomme CmdCalculate :

Private Sub CmdCalculate_Click()
TxtNb.Text = UBound(Split(TxtTextSource.Text, TxtTextSearch.Text))
End Sub

Petit correctif (GOBILLOT)
Au passage, il y'a 5 occurences du mot "et" et 3 occurences du mot "mot"

Philippe
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
27
en supposant qu'il y a un espace derrière le mot

ce qui exclut les ponctuations . , ; etc ...





Dim Str As String



Str = "bonjour chers programmeurs ben mwa j mapel
omar fall et suis en 2ième année de génie informatk ben g un projet à
rendre et il concerne la création d'une application ki va ns permettre
de compter le nombre d'occurence d'un mot choisi au nivea d
l'application ki aura 3 zones de texte; une zone pour la saisie du
texte , une pour le choix du mot à rechercher et une pour afficher le
nombre d'occurrence du mot"



MsgBox UBound(Split(Str, "et ")) ' = 4

MsgBox UBound(Split(Str, "ben ")) ' = 2

MsgBox UBound(Split(Str, "la ")) ' = 2

MsgBox UBound(Split(Str, "mot ")) ' = 2

Daniel
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
1 décembre 2015

Private Sub Command1_Click()
a$ = "les mot son separer par des espace"
a$ = a$ + " " 'tu rajout un espace a la fin de ta chaine
i = 0
Mot = 0
While InStr(i + 1, a$, " ")
Mot = Mot + 1
i = InStr(i + 1, a$, " ") + 1
Wend
Print Mot, "Mots"


End Sub
'attention au double espace tu peut les enlever avant le traitement pratiquement par la meme fonction
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
5
génie informatique ... et tu bloque la dessus ??? anyway

je supprime les espace de trop
ensuite je convertie en tableau
puis j'affiche la longueur du tableau + 1 à cause du 0

msgbox(split(replace(texbox1.text," "," ")," ").lenght + 1)


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016

salut,

je n'ai encore jamais utilisé d'expressions régulières mais j'ai pensé à cela :

Dim regExp as New Regex (TxtTextSearch.Text)
' ou avec des options :
' Dim regExp as New Regex (TxtTextSearch.Text, _
' RegexOptions.IgnoreCase| RegexOptions.IgnorePatternWhitespace)

Dim matches as MatchCollection = regExp.Matches(TxtTextSource.Text)

TxtNb.Text = matches.count

il faudrait donc en premier se préoccuper de la validité de l'expression régulière puis tester le tout. comme je ne peux pas le tester en ce moment je vous fais confiance pour essayer et me tenir au courant !

à plus
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016

oupsss, c'est pas très VB ce que je raconte (et pourtant j'ai relu !) :

' ou avec des options :
' Dim regExp as New Regex (TxtTextSearch.Text, _
' RegexOptions.IgnoreCase Or RegexOptions.IgnorePatternWhitespace)
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
27
normal c'est les failles de la méthode:



mot" pas compté parce que pas d'espace derrière
projet devrait pas être compté

permettre n'est pas le mot "et" et doit pas être compté



Daniel
Messages postés
278
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
13 avril 2013
1
C'est vrai! Avec la ligne de code qui suit cela fonctionne mais c'est à confirmer (je n'ai peut être pas testé tous les cas et y'a surement des execptions).

Private Sub CmdCalculate_Click()
TxtNb.Text = UBound(Split(TxtTextSource.Text, " " & TxtTextSearch.Text)) + UBound(Split(TxtTextSource.Text, TxtTextSearch.Text & " ")) - UBound(Split(TxtTextSource.Text, " " & TxtTextSearch.Text & " "))
End Sub
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
21
Pour compter le nombre d'occurence d'un mot dans une chaine de caractères, les expressions régulières sont toutes indiquées :







' Référence à cocher : Microsoft VB Scripts Regular Expressions 5.5





Dim FORMAT_STRING As RegExp

Dim MATCHES, MATCH As Object



Set FORMAT_STRING= New RegExp

FORMAT_STRING.Pattern = "[a-z]{2}[A-Z]{3}[0-9]*[a-zA-Z]+[a|A]"



' Le format de chaine recherché ici est :

'
une chaine contenant, à la suite, 2 lettres minuscules, 3 majuscules,

' 0
ou plusieurs chiffres , au moins une lettre et pour finir la lettre A.

' ex : "trGEV89gTEdA"



'Ensuite, tu peux faire des traitements dessus :

Set MATCHES = FORMAT_STRING.Execute(maChaineATraiter)







For Each MATCH In MATCHES

' Dans la boucle, MATCH.Value contient alors la valeur extraite de ta

' chaine de départ et ayant le bon format

' Tu
fais donc les traitements que tu veux ici.

' Du genre, afficher les éléments trouvés.

MsgBox MATCH.Value

Next

MsgBox MATCHES.Count ' Retourne le nombre d'éléments trouvés.





-----------------------------------



Si le mot que tu recherches est toto, il suffira de dire :

FORMAT_STRING.Pattern = "toto"



Si tu veux tenir compte des majuscules (toTo, TOto, totO, ...), tu peux faire :

FORMAT_STRING.Pattern = "[t|T]{1}[o|O]{1}[t|T]{1}[o|O]{1}"






Manu
Messages postés
7
Date d'inscription
vendredi 6 janvier 2006
Statut
Membre
Dernière intervention
10 juin 2007

bon merci philip j tt de suite m'en aller le tester
Messages postés
7
Date d'inscription
vendredi 6 janvier 2006
Statut
Membre
Dernière intervention
10 juin 2007

slt ben g u a tester ton code et cela c montrer bon ben mon otre problem est colorier le mot recherché dans le texte
et en code java ca donne quoi? j'essaye de trouver les mots et leur occurence à partir d'un document HTML
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Pas bonjour à toi non plus, donc ...
Ta question est à poser sur le forum Java !
Ici, nous sommes des VBistes, hein ...