Compteur de mots dans un texte [Résolu]

omzo25 7 Messages postés vendredi 6 janvier 2006Date d'inscription 10 juin 2007 Dernière intervention - 7 févr. 2006 à 22:04 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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 

13 réponses

Meilleure réponse
philippe laschweng 1 278 Messages postés jeudi 14 avril 2005Date d'inscription 13 avril 2013 Dernière intervention - 8 févr. 2006 à 14:54
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

Merci philippe laschweng 1 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Orlean2 50 Messages postés samedi 28 février 2004Date d'inscription 1 décembre 2015 Dernière intervention - 7 févr. 2006 à 22:14
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
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 7 févr. 2006 à 23:18
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
cs_dragon 2336 Messages postés samedi 14 juillet 2001Date d'inscription 5 mai 2009 Dernière intervention - 7 févr. 2006 à 23:47
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
-------------------------------------------------
Dalida 6766 Messages postés mardi 14 mai 2002Date d'inscriptionContributeurStatut 11 janvier 2016 Dernière intervention - 8 févr. 2006 à 15:51
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
Dalida 6766 Messages postés mardi 14 mai 2002Date d'inscriptionContributeurStatut 11 janvier 2016 Dernière intervention - 8 févr. 2006 à 15:53
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)
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 8 févr. 2006 à 17:07
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
philippe laschweng 1 278 Messages postés jeudi 14 avril 2005Date d'inscription 13 avril 2013 Dernière intervention - 8 févr. 2006 à 17:26
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
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 8 févr. 2006 à 17:28
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
omzo25 7 Messages postés vendredi 6 janvier 2006Date d'inscription 10 juin 2007 Dernière intervention - 9 févr. 2006 à 22:23
0
Merci
bon merci philip j tt de suite m'en aller le tester
omzo25 7 Messages postés vendredi 6 janvier 2006Date d'inscription 10 juin 2007 Dernière intervention - 14 févr. 2006 à 00:02
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 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 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 ...

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.