Compteur de mots dans un texte

Résolu
omzo25 Messages postés 7 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 10 juin 2007 - 7 févr. 2006 à 22:04
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur 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

12 réponses

philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
8 févr. 2006 à 14:54
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
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 févr. 2006 à 23:18
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
1
Orlean2 Messages postés 50 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 1 décembre 2015
7 févr. 2006 à 22:14
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
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
7 févr. 2006 à 23:47
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
-------------------------------------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
8 févr. 2006 à 15:51
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
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
8 févr. 2006 à 15:53
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)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 févr. 2006 à 17:07
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
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
8 févr. 2006 à 17:26
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
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
8 févr. 2006 à 17:28
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
0
omzo25 Messages postés 7 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 10 juin 2007
9 févr. 2006 à 22:23
bon merci philip j tt de suite m'en aller le tester
0
omzo25 Messages postés 7 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 10 juin 2007
14 févr. 2006 à 00:02
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
et en code java ca donne quoi? j'essaye de trouver les mots et leur occurence à partir d'un document HTML
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
4 déc. 2013 à 11:22
Pas bonjour à toi non plus, donc ...
Ta question est à poser sur le forum Java !
Ici, nous sommes des VBistes, hein ...
0