Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

récupérer dans une msgbox une chaine de caractères entre 2 indicateurs?

5 réponses
Avatar
Fg
Bonjour,
J'aimerais récupérer dans une msgbox une chaine de caractères dont je
connais le début et la fin de la chaine.
Exemple : je voudrais extraire la chaine d' un code source html
"<TD class=textdata....TD>" et dans cette même chaine extraire l'info que je
veux...attention entre les 2 indicateurs de début et de fin, la chaine peut
être différente?
Merci

5 réponses

Avatar
tiah
=STXT(A1;TROUVE("<TD";A1)+3;(NBCAR(A1)-TROUVE("TD>";A1))+TROUVE("<TD";A1))

La fonction STXT extraie un certain nombre de caractères
TROUVE va trouver tes indicateurs
NBCAR détermine la longueur de la chaîne

le +3 est le nombre de caractères cherché dans le premier TROUVE

essaie ca ! :)
Avatar
Fg
Ok mais comment je l'introduis dans la macro...pour ensuite le faire
apparaitre avec la Msgbox???
Merci tout de même!

"tiah" a écrit dans le message de news:

=STXT(A1;TROUVE("<TD";A1)+3;(NBCAR(A1)-TROUVE("TD>";A1))+TROUVE("<TD";A1))

La fonction STXT extraie un certain nombre de caractères
TROUVE va trouver tes indicateurs
NBCAR détermine la longueur de la chaîne

le +3 est le nombre de caractères cherché dans le premier TROUVE

essaie ca ! :)
Avatar
michdenis
Bonjour Fg,

la fonction split requiert excel 2000 ou plus récent .

'---------------------------
Sub test()

Dim V As String, R As String

V = "<TD class=textdata....TD>"

R = Trim(Split(V, "TD")(1))
MsgBox R

End Sub
'---------------------------


Salutations!



"Fg" a écrit dans le message de news: 434d5c7d$0$18076$
Ok mais comment je l'introduis dans la macro...pour ensuite le faire
apparaitre avec la Msgbox???
Merci tout de même!

"tiah" a écrit dans le message de news:

=STXT(A1;TROUVE("<TD";A1)+3;(NBCAR(A1)-TROUVE("TD>";A1))+TROUVE("<TD";A1))

La fonction STXT extraie un certain nombre de caractères
TROUVE va trouver tes indicateurs
NBCAR détermine la longueur de la chaîne

le +3 est le nombre de caractères cherché dans le premier TROUVE

essaie ca ! :)
Avatar
tiah
wouah ! j'ai manqué le msgbox ! j'avais pas vu ça ! :) désolée !

Je ne connais pas la fonction split mentionnée, mais l'équivalent de
ma formule en vba est la suivante :

texte="<TD jfsdhfjksd TD>"

Sortie =
mid(texte,instr("<TD",texte)+3,(len(texte)-instr("TD>,texte))+instr("<TD";t exte))

msgbox Sortie
Avatar
Fg
J'ai testé les 2 solutions...mais le souci est que dans l'hypothèse de
départ si je connais bien les balises je ne connais pas complètement la
chaine (car elle varie!!)
exemple :
Dans un premier temps je dois faire un "find" des balises
<TD class=txtdata et l'autre balise </TD>
et entre ces balises j'ai :
<TD class=txtdata>28 résultats</B></TD>
et en fait j'aimerais que la msgbox affiche "28 résultats"
Mais le nombre de résultat varie en fonction des requêtes
tiah j'ai corrigé ta ligne Sortie
Sortie = Mid(texte, InStr("<TD", texte) + 3, (Len(texte) - InStr("TD>",
texte)) + InStr("<TD", texte))
Mais le problème reste le même...texte est variable!!!


"tiah" a écrit dans le message de news:

wouah ! j'ai manqué le msgbox ! j'avais pas vu ça ! :) désolée !

Je ne connais pas la fonction split mentionnée, mais l'équivalent de
ma formule en vba est la suivante :

texte="<TD jfsdhfjksd TD>"

Sortie mid(texte,instr("<TD",texte)+3,(len(texte)-instr("TD>,texte))+instr("<TD";texte))

msgbox Sortie