Exctraction d'une chaîne de caractère

Résolu/Fermé
Saween - Modifié par Saween le 25/10/2016 à 14:52
 Saween - 26 oct. 2016 à 15:37
Bonjour à toutes et à tous,

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.


A voir également:

2 réponses

Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
Modifié par Fahora le 25/10/2016 à 15:15
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
0
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.
0
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
25 oct. 2016 à 15:25
Donc ma solution est la bonne :)
0
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
Modifié par Fahora le 25/10/2016 à 15:28
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)
"
0
Cela me dis "Vous avez tapé un nombre insuffisant d'arguments pour cette fonction".
0
Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
25 oct. 2016 à 15:34
=SIERREUR(STXT(Feuil1!A2;TROUVE(">";Feuil1!A2)+1;TROUVE("<";Feuil1!A2;TROUVE(">";Feuil1!A2))-(TROUVE(">";Feuil1!A2)+1));"")

C'est de ma faute , j'ai oublié de rajouter la fin... Désolé :) , voila qui devrait fonctionner.
0
Sauf que toutes mes balises contiennent des "<"Cause">" Cela ne vas pas les différencier.
0