Nombre de mot en double

Signaler
Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005
-
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
-
Bonjour !
J'ai un text qui à par exemle pour valeur "oui oui non oui non oui non non"
J'ai mis chacun de ces mots dans un tableau de cette manière : tabltxt = Split(txt, " ")
Cela est peut-être un bon point de départ pour pouvoir maintenant avoir (dans un tableau ou autre format) le nombre de oui et le nombre de non qu'il contient (ou tout autre mot). Ce que je souhaite surtout obtenir c'est le mot qui apparait le + de fois. Comme s'y prendre ? %-6
Merci!

13 réponses

Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005

pour aider à me répondre je rappelle que UBound(tabltxt) renvoie le nombre de d'élement present dans le tableau (-1 car le tableau commence à 0). Cela pour utiliser une boucle du style For i = 0 To UBound(tabltxt)
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
moi, ce que je ferait c'est un type qui serait un string avec un integer

ensuite de je créerais comme un tableau de longueur non défini pour lui faire un redim -1

ensuite a chaque mot de ton tableau je vérifierais s'il s,y trouve pas dasn dans le nouveau tableau, si oui, faire son chiffre + 1, sinon redim preserve tableau(ubound + 1) et ajouter le nouveau texte et le chiffre 1

après avoir fini de bouclé, tu va te retrouver avec un tableau qui contient tout les mots avec leur nombre de fois que chaque mot se retrouve, il te reste plus qu'a trouver celui qui a le nombre le plus élevé ou le trier en ordre croissant ou décroissant
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Plus FAcilement

Dim NON as integer
DimNON as integer

For i = 1 To Len(Text1) If Mid(Text1, i, 3) "OUI" Then OUI OUI + 1 If Mid(Text1, i, 3) "NON" Then NON NON + 1
Next

ca te va ??

It@li@
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
en effait, sauf faut que les mot soit que OUI ou NON. si ton texte se trouve a être 100% des OUI et NON, ITALIA est plus rapide. Si par contre tu peut retrouver n'importe quoi comme texte, là prend le miens
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
D'aprés sa Question :

J'ai un text qui à par exemle pour valeur "oui oui non oui non oui non non"

Ca doit être le Cas
Par contre Excuse Petite Erreur de Frappe :

Dim OUI as integer
Dim NON as integer

It@li@
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
miweux vaut donner les 2 possibilité de réponse, et au cas que quelqu'un d,autre tombe sur le post, ben il aura les 2 soluton :-)
Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005

effectivement je ne suis pas censé savoir les mots qu'il contient (cf " (ou tout autre mot). " de mon premier post)
Par contre Italia je ne comprend pas ce qu'est un " type qui serait un string avec un integer " Ca donne quoi en VB ?
Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005

heu... excusez moi ! Je posais ma question à Dragon ! Mais les autres peuvent aussi m'expliquer lol
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
hey ho, c,est moi qui a dit ça lol joke

private type nbFoisMots
mot as string
nombre as integer
end type

et dans ton code de recherche

dim tableau() as nbFoisMots
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
lol, tu normal que la réponse arrive avant mon post lol petti bug du site ici lol ou c'est juste moi qui voit cet ordre là ???
Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005

lol j'ai envoyé la correcton de mon erreur juste (20:45:12)
après avoir posté lerreur et regarde les heures et réponse est à 20:48:42 mais apparement le site est affreusement lent ya comme des tits pb !

Sinon je n'arrive vraiment pas à saisir cette histoire de type string/integer. Qd tu dis "ajouter le nouveau texte et le chiffre 1" comment j'utilise ce nouveau type pour lutiliser avec le tableau ? Il faut qu'il ait deux colonnes ? Aussi je ne vois le but du redim-1 (prk reduire sa taille ? erreur de frappe pê, redim+1 pluto, non ? par contre je comprend bien le redim preserve tableau(ubound + 1) )
Voila MERCI de ton aide en tout cas :)
Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005

J'ai essayé de le faire de cette maniere :
temp_tabl c'est le tableau avec tous les mots
tempond c'est censé etre un tableau à deux colonnes, la premiere avec un mot, la deuxieme sur la meme ligne le nombre de mot rencontré.
J'utilise CStr et CInt (conversion String<>Integer) pour permettre d'ajouter 1 au chiffre present dans la deuxieme colonne qui est une string.
Le test And l = UBound(tempond) permet de savoir si on a parcouru tout le tableau et donc que le mot n'y est pas, donc l'ajouter.
L'instruction tempond(UBound(tempond) + 1, 1) permet de le redimensionner pour ajouter un nouveau mot. MAIS c'est ici qu'il y a un pb , il me dit que l'indice est en dehors de la plage (Ubound(tempond) est egal a 0 qd ça bug)

'----- Le code -----
ReDim tempond(0, 1) 'pour eviter d'avoir un tableau vide au départ.

For k = 1 To UBound(temp_tabl)
For l = 0 To UBound(tempond)
If temp_tabl(k) tempond(l, 0) Then tempond(l, 1) CStr(CInt(tempond(l, 1)) + 1)
If temp_tabl(k) <> tempond(l, 0) And l = UBound(tempond) Then
ReDim Preserve tempond(UBound(tempond) + 1, 1)
tempond(UBound(tempond), 0) = temp_tabl(k)
tempond(UBound(tempond), 1) = 1
End If

Next l
Next k
'----Fin du code ----
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
ça devrait marcher, mais c'est pas tester

private type nbFoisMots
mot as string
nombre as integer
end type

public function nbFroi(texte() as string)
dim tableau() as nbFoisMots 
dim i as integer,  j as integer
dim trouver as  boolean
redim tableau(-1)

for i = lbound(texte) to ubound(texte)
trouver = false
for j = lbound(tableau) to ubound(tableau)
if tableau(j).mot = texte(i) then
trouver = true
tableau(j).nombre = tableau(j).nombre + 1
end if
next j
if not trouver then
redim preserve tableau(ubound(tableau) + 1)
tableau(ubound(tableau)).mot = texte(i)
tableau(ubound(tableau)).nombre  = 1
end if
next i

end function