Extraire une chaine de caractères variable entre deux repères non uniques

Bonjour

je m'explique

J'ai besoin, ds un tableau Excel d'extraire la valeur de données (titre en rouge) encadrées généralement par des repères d'ouverture et de fermeture "[" et "]",

Mais ces repères sont utilisés pour encadrer également d'autres valeurs d'autres données dont je n'ai pas besoin.

Les longueurs des chaines sont variables

Je dois donc particulariser ces repères, ce qui ne peut se faire sur la recherche d'un seul caractère de début ou de fin mais ils peuvent devenir uniques si l'on prend en compte ce qui est avant et après.

Voici la cellule a faire parler:

Pour un article donné, regroupant ses caractéristiques différentes, toujours avec les mêmes séparateurs (ou presque = Allergènes):

Contenu de la cellule:

Conditionnement: T[Verrine]; Région: S[Aquitaine]; DLUO: T[36 m]; Code douane: T[21039090]; Composition: T[Mangue* (60 %), sucre de canne*, jus concentré de citron*, gélifiant : pectine de fruits. * Produits issus de l’Agriculture Biologique - Allergènes: - soja]; Marque: E[SAVEURS ATTITUDES]; Valeurs nutritionnelles: T[Energie (kCal/100g): 224 - Matière grasse/Acides gras (g/100g): 0,2/0,1 - Glucides/Sucres (g/100g): 55,2/54,5 - Protéïnes (g/100g): 0,5 - Sel (g/100g): 0,0036 - Fibres (g/100g): 1,1]; Poids: O[220]

Le contenu du Conditionnement ("verrine") m'intéresse, idem pour composition, etc.

Mais aussi La chaine derrière Allergènes qui ici, se réduit à ce qui est entre Biologique (occurence unique, ou même "gique") et -];M, qui est également une valeur unique, un repère.

J'ai besoin d'extraire de chacune de ces lignes de chaque cellule de mon fichier, une à une, les valeurs des caractéristiques en gras "Conditionnement", "Composition", "Allergènes", "Valeurs nutritionnelles", et "Poids" dt la longueur aussi n'est pas forcément constante (entre 1 et 4 caractères)

Ce mot démarre, derrière Conditionnement, toujours à "dernier caractère + 5 ou à +1 après Conditionnement: [

"Conditionnement: [ " + 1 est la position du premier caractère recherché.

MAIS je ne connais pas sa longueur; donc je dois repérer la fin de la zone ou il se trouve qui est forcément définie à 4 caractères DEVANT le R de Région (Région - 4 est la position du dernier caractère de mon mot que je cherche.

Enfin, je dois donc reconstituer le "texte" qui est défini entre ces deux positions.

Donc je dois chercher les repères de début et de fin des mots Conditionnement, Composition, Allergènes, Valeurs nutritionnelles et Poids, pour extraire les 4 valerurs correspondantes:

> le conditionnement

> la composition

> les allergènes (ici il n'y en a pas)

> les valeurs nutritionnelles,

> le Poids

Je n'arrive pas à l'écrire, qqn a une idée simple et rusée: Le pb est de ne pas pouvoir identifier des repères uniques d'un seul caractère; ces repères étant "[" et "]", sauf pour la donnée Allergènes

Toutes les séquences des données en gras sont les mêmes, ds le même ordre bien sûr.

Bonjour,

Un test par formule avec critère :

=STXT($A$1;CHERCHE(A2;$A$1);CHERCHE(A3;$A$1)-CHERCHE(A2;$A$1)-2)

Et pour le dernier :

=STXT($A$1;CHERCHE(A9;$A$1);NBCAR($A$1))

Cdlt,

49classeur1.xlsx (9.89 Ko)

Bonjour à toutes et tous !

Bonjour Ergotamine !

Une proposition avec Power Query qu'il conviendrait de valider avec plusieurs exemples.........

Bonsoir Ergotamine et merci

je n'ai pas trop compris ta structure, le but c'est d'extraire le contenu entre "[" et "]" plutôt..

Bonsoir,

Ci-contre la formule corrigée. Par contre je ne comprend pas, vous dites extraire le contenu entre [ et ], ce qu'un membre de ce forum vous à fait hier, hors allergène ne se trouve pas entre ces caractères, nous ne pouvons donc pas nous servir de cette règle car elle n'est pas uniforme. D'où la recherche à l'aide des critères textuels directement.

Cdlt,

Bonjour

oui j'en suis conscient et je vais modifier l'encadrement de mes critères pour celui-ci; allergènes.

Je peux aussi choisir de prendre deux références immuables, propres à cet encadrement et traiter le cas des allergènes indépendamment.

Un grand MERCI !

Question subsidiaire sur les fonctions CHERCHE et TROUVE:

si je cherche oui trouve pas un caractère mais un mot, c'est le premier ou le dernier caractère de la chaine du mot qui est pris en compte et dt la position est rapportée ?

Si je veux le premier par exemple, sinon, je fais comment ?

Bonjour,

Il faut enlever le nombre de caractères du mot d'en dessous qui sert à la recherche soit en B2 :

=STXT($A$1;CHERCHE(A2;$A$1);CHERCHE(A3;$A$1)-CHERCHE(A2;$A$1)-2)

Cdlt,

Bonsoir

ma question est plus précisément sur le fonctionnement de CHERCHE ou TROUVE.

J'ai réussi à al faire fonctionner en mettant un mot et pas un signe, et il renvoie la position du mot par la position de son premier caractère. Bon à savoir.

Merci de ton aide en tout cas, ça fonctionne

Bonjour,

CHERCHE ou TROUVE ne renvoie que la première occurrence du caractère sauf si elle est combinée à la fonction SUBSTITUE qui peut remplacer la première occurrence. Donc si nous faisons CHERCHE(SUBSTITUE(CHERCHE())) alors nous aurons la 2ème occurrence etc etc ...

En tout cas pour moi le sujet est répondu, n'hésites pas à le passer en résolu.

Cdlt,

Rechercher des sujets similaires à "extraire chaine caracteres variable entre deux reperes uniques"