Compteur de mots dans un texte [Résolu]

Messages postés
7
Date d'inscription
vendredi 6 janvier 2006
Dernière intervention
10 juin 2007
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 4 déc. 2013 à 11:22
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
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
278
Date d'inscription
jeudi 14 avril 2005
Dernière intervention
13 avril 2013
3
Merci
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

Dire « Merci » 3

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

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

Messages postés
50
Date d'inscription
samedi 28 février 2004
Dernière intervention
1 décembre 2015
0
Merci
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
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
16
0
Merci
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
2336
Date d'inscription
samedi 14 juillet 2001
Dernière intervention
5 mai 2009
3
0
Merci
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
6766
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
1303
0
Merci
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
6766
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
1303
0
Merci
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
Dernière intervention
31 mars 2015
16
0
Merci
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
Dernière intervention
13 avril 2013
0
Merci
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
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
20
0
Merci
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
Dernière intervention
10 juin 2007
0
Merci
bon merci philip j tt de suite m'en aller le tester
Messages postés
7
Date d'inscription
vendredi 6 janvier 2006
Dernière intervention
10 juin 2007
0
Merci
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
0
Merci
et en code java ca donne quoi? j'essaye de trouver les mots et leur occurence à partir d'un document HTML
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
259 -
Pas bonjour à toi non plus, donc ...
Ta question est à poser sur le forum Java !
Ici, nous sommes des VBistes, hein ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.