Faire répéter un mot

Résolu
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 21 nov. 2006 à 15:12
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 24 nov. 2006 à 09:36
Slt, bon alors voilà ma super question... je suis au boulot là j'ai
plus le code dans la tete, mais dans un champ texte je sais faire
ensorte de "sortir" dans label une portion de phrase.... genre si dans
t1.text on a "je suis super fatigué", et qu'avec uen boucle for on veut
"sortir" tout ce qui se trovue après "je suis" (ss condition que "je
suis" soit en début de phrase), dans le label de sortie je peux faire
en sorte de mettre "super fatigué"... euh, j'espère que je suis clair
là .


Bref voilà, ce que je n'arrive pas à faire c'est de limiter la sortie, à 1 seul mot. Soit en l'occurence "super". ("fatigué" ou tout truc après le mot "super", on s'en fiche)


Donc si pour t1.text = "je suis super
fatigué", aulieu d'avoir en sorti label "super fatigué", je voudrais
avoir seulement "super"... je pensais me repérer à l'espace suivant,
mais si qq'un à une autre soluce...? et aussi (je sais je suis bizarre
parfois) comment faire si :


t1.text = "bon alors là je suis super fatigué"


Capter que "je suis" n'est pas en début de phrase et toujorus prendre
ça comme repère, afin de sortir, enfin et toujours, 1 seul mot, en
l'occurence, "super"...


ps: nan je ne bois pas d'alcool, c'est juste une question...

Merci d'avance pour vos conseils voir soluce miracle

6 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
21 nov. 2006 à 15:49
Rien de bien compliqué :

1ère partie : Repérer "je suis" et supprimer tout ce qu'il y a avant

Ton repère, c'est "je suis".
Pour trouver sa position dans ta phrase, il te suffit d'utiliser la fonction InStr.
Temp = InStr(1, t1.text, "je suis")
Ca te sort le position dans la phrase du premier caractère (le j donc), du premier "je suis" rencontré.
Dans ta phrase "bon alors là je suis super fatigué", la fonction va donc te donner 14. Le "j" de "je suis" est le 14ème caractère.

Tu veux donc supprimer tout ce qu'il y a avant ce caractère, ou tu veux prendre tout ce qui vient après (ce qui revient au même) : Ton repère "je suis" fait 7 caractères
On récupère donc Tout ce qui "est à droite" de ton repère, repère inclus
Temp = Right(t1.text, Len(t1.text) - InStr(1, t1.text, "je suis") - 7)
La variable Temp contient donc à présent "super fatigué" (longueur de la phrase, 34 caractères, -14 qui est la position du premier caractère de ton repère, -7, qui est la longueur de ton repère.), c'est à dire, tout ce qui est à droite du 21ème caractère.

2ème partie : Sortir le premier mot suivant le remère
Effectivement, il te suffit de chercher le premier espace dans le texte d'où a été enlevé les 21 premiers caractères.
InStr(1, Temp, " ")
La fonction va te retourner 6, en effet, l'espace est le 6ème caractère dans "super fatigué".
Cette fois, on prend tout ce qui est à gauche de cet espace :
Mot = Left(Temp, InStr(1, Temp, " ") - 1)
Et voilà, ta variable Mot contient le mot super"

Alors, si on condense tout ça :
Temp = Right(t1.text, Len(t1.text) - InStr(1, t1.text, "je suis") - 7)
Mot = Left(Temp, InStr(1, Temp, " ") - 1)

Encore plus condensé même, mais moins lisible :
Mot = Left(Right(t1.text, Len(t1.text) - InStr(1, t1.text, "je suis") - 7)
, InStr(1, Right(t1.text, Len(t1.text) - InStr(1, t1.text, "je suis") - 7)
, " ") - 1)

Molenn
3
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
21 nov. 2006 à 15:17
ce soir je rentre chez moi et je mettrais le code pour trouver la suite de "je suis" si il est en début de phrase !!! ; à plus !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 nov. 2006 à 15:28
Utilisation simple de Instr (F1) et de split (F1 également, ... encore que l'on pourrait se passer de split)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 nov. 2006 à 15:29
Ah pardon !
Pas vu que c'était en VB.Net (ma réponse était valable pou VB6)
0

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

Posez votre question
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
21 nov. 2006 à 15:34
un truc genre
         t1.Text = "bon alors là je suis super fatigué"
         t1.Text = Mid( t1.Text, InStr( t1.Text, "je suis ") + Len("je suis "))
         t1.Text = Mid( t1.Text, 1, InStr( t1.Text, " "))

devrait marcher, il y a surement mieu et je ne sais pas si c'est ce que tu veux mais enfin voilà..
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
24 nov. 2006 à 09:36
merci pour toutes ces infos, ça marche du tonnerre et franchement, le résultat est bluffant (pour moi en tout cas,
hihihi)... hm si j'osais ; je demanderais même aussi l'inverse, genre
le mot d'avant... "il parait que bill est crevé" : dans le code on met
est crevé, et on ressort "bill" ... encore merciiiii !!
0
Rejoignez-nous