Recherche un mot dans une chaine , VBA

sabrina -  
redonky Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
si j'ai cette chaine de caractères :

"coco;cocotte;toto;titi;FIN"

Je souhaite renvoyer le nième nom de cette chaine , comment faire svp ?

merci
A voir également:

3 réponses

Redonky
 
"coco;cocotte;toto;titi;FIN"

Je souhaite renvoyer le nième nom de cette chaine , comment faire svp ?
alors je vais utiliser les fonctions right et left, qui permettent de lire à droite ou à gauche après si tu souhaite un détail de mon prog demande je le ferrais:D

n étant le nième mot que l'on recherche

Sub nomdelamacro()
Dim p As Integer, n As Integer, m As Integer, c As Integer
c = 2
p = 0
m = 0
chaine = InputBox("entrer votre chaine de mot (du type ...;...;...)") & ";f"
n = InputBox("quel est la position du mot que vous cherchez? (n)")

Do Until p = n
Do Until Right(Left(chaine, m), 1) = ";"
m = m + 1
Loop
p = p + 1
m = m + 1
Loop

Do Until Left(Right(Left(chaine, m - 2), c), 1) = ";"
c = c + 1
Loop
MsgBox (Right(Left(chaine, m - 2), c - 1))

End Sub

et voilà
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

Tu as aussi la fonction split() qui te découpe la chaine dans un tableau avec un séparateur choisi.
Tu n'as plus qu'à récupérer le nième élément du tableau.
eric
0
redonky Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   23
 
Ouai c'est peut être mieu, ou sinon il faudrais améliorer ma macro, car je n'est pas fait le test, mais je pense quelle echoue pour n=1, que je changerais donc par

Sub nomdelamacro()
Dim p As Integer, n As Integer, m As Integer, c As Integer
c = 2
p = 0
m = 0
chaine = InputBox("entrer votre chaine de mot (du type ...;...;...)") & ";f"
n = InputBox("quel est la position du mot que vous cherchez? (n)")

Do Until p = n
Do Until Right(Left(chaine, m), 1) = ";"
m = m + 1
Loop
p = p + 1
m = m + 1
Loop

if n=1 then
msgbox("le mot est " & Left(chaine, m - 2))
Else


Do Until Left(Right(Left(chaine, m - 2), c), 1) = ";"
c = c + 1
Loop
MsgBox ("le mot est " & Right(Left(chaine, m - 2), c - 1))
End if
End Sub
0