Exctraction d'une chaîne de caractère
RésoluSaween -
J'essaie de faire une extraction de chaîne de caractère d'une feuille à l'autre.
Voici ma fonction: =SIERREUR(STXT(Feuil1!A2;TROUVE("Balise1";Feuil1!A2;1)+8;TROUVE("Finbalise1";Feuil1!A2;1)-(TROUVE("Finbalise1";Feuil1!A2;1)-7));"")
Dans mes cellules j'ai inséré des balises afin de récupérer ce qu'elles contiennent.
Le souci de ma fonction est que je suis obligé de lui donner une indication sur le nombre de caractère à extraire (+8 / -7), alors que je voudrais que ma fonction extrait ce qu'il y a entre les balises peut importe le nombre de caractère qu'il a été renseigné.
Merci d'avance.
2 réponses
Extraction dynamique du contenu entre balises dans des cellules Excel sans longueur fixe, afin de récupérer uniquement ce qui se situe entre les balises d’ouverture et de fermeture.
Plusieurs intervenants recommandent d’utiliser la fonction STXT avec TROUVE pour repérer le premier '>' puis le premier '<' qui suit, afin de déterminer dynamiquement la longueur à extraire.
La solution préconisée consiste à calculer STXT en partant après le premier '>' et en utilisant la différence entre les positions du premier '>' et du prochain '<', avec gestion d’erreurs.
En cas de balises multiples dans une même cellule, certains échanges soulignent qu’il faut adapter la formule pour cibler chaque paire et prévoir des messages d’erreur lorsque des balises manquent.
-
Bonjour ,
A quoi ressemble tes balises ?
Du type <...> </...> :
=SIERREUR(STXT(Feuil1!A2;TROUVE(">";Feuil1!A2)+1;TROUVE("<";Feuil1!A2;TROUVE(">";Feuil1!A2))-(TROUVE(">";Feuil1!A2)+1)))
Cordialement,
Nos seules limites sont celles que nous nous imposons nous-même.
La politesse et un merci ne tuent pas. Il existe un bouton pour "Résolu" pour confirmer que votre problème n'en est plus un. Fahora -
J'ai exactement plusieurs balises dans une même cellule correspondant à
<Cause></Cause>
<Pblm></pblm>
Etc..
Environ 10.
Moi je veux récupérer uniquement ce qu'il y a entre ces balises.
Sauf qu'il n'y a pas toujours le même nombre de caractère.-
-
Je l'explique :
=SIERREUR(STXT(Feuil1!A2;TROUVE(">";Feuil1!A2)+1;TROUVE("<";Feuil1!A2;TROUVE(">";Feuil1!A2))-(TROUVE(">";Feuil1!A2)+1)))
TROUVE(">";Feuil1!A2)+1: trouve le 1er ">" et prend la position d'après.
TROUVE("<";Feuil1!A2;TROUVE(">";Feuil1!A2)):
trouve le 1er "<" qui suit le 1er ">"
Il suffit alors de STXT en partant du 1er ">" , et de prendre le nombre de caractère qu'il y a entre les 2 d'où le "-(TROUVE(">";Feuil1!A2)+1)" -
-
-
-