Excel : séparer une chaine de caractere à partir d'un N caracter

Résolu/Fermé
Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015 - 1 juin 2015 à 16:55
Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015 - 2 juin 2015 à 14:27
Bonjour,

Je souhaiterais afficher dans une cellule Excel la chaine de caractère à partir du 4e underscore (soit ici BASF) :

Thermoplastique-PA _ ULTRAMID A3WG6 K00564 _ _ PA66-GF30 _ BASF

j'ai utilisé la forme =STXT(G2;1;TROUVE("_";G2;1)-1) pour extraire la première chaine de caractère mais je n'arrive pas à adapter cette formule pour le 4e Underscore.

Merci de me donner une formule pour le faire.

Cordialement

4 réponses

Vaucluse Messages postés 26495 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 8 avril 2022 6 274
1 juin 2015 à 17:10
Bonjour
et bonjour aux polyamide.... ça me rappelle des souvenirs!

essayez pour un texte en A1:
=SUPPRESPACE(STXT(A1;TROUVE("/";SUBSTITUE(A1;"_";"/";4);1)+1;10))

(SUPPRESPACE est là pour éliminer un espace éventuel devant le mot à extraire

Fonctionne à condition qu'il y ait toujours 4 underscore dans vos textes, si ce n'est pas le cas, revenez, c'est juste un peu plus compliqué, car il faut compter combien il y en a pour trouver le dernier

crdlmnt
1
Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015
1 juin 2015 à 17:16
Merci, ça marche parfaitement, par contre je ne comprends pas pourquoi il faut mettre des slash dans la fonction trouve
0
Vaucluse Messages postés 26495 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 8 avril 2022 6 274 > Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015
Modifié par Vaucluse le 1/06/2015 à 19:00
Simplement parce que pour identifier le 4° underscore, le code SUBSTITUE le remplace par un slash.
C'est le but de SUBSTITUE(A1;"_";"/";4)
qui se traduit par: remplacer le 4° undescore par un slash.

... on remplace le 4° underscore par un slash et ensuite, TROUVE va chercher sa position
(Un slash ou autre chose qui n'existe pas dans le texte, et ça fonctionne)
Crdlmnt
0
Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015
2 juin 2015 à 11:44
Merci de votre réponse.

Je voudrais maintenant savoir comment extraire la chaine contenu entre le 1er "_" et le 2e

Thermoplastique-PA _ ULTRAMID A3WG6 K00564 _ _ PA66-GF30 _ BASF

Extraire le "ULTRAMID A3WG6 K00564".

L'espace semble poser probleme...

Merci de votre réponse.
0
Vaucluse Messages postés 26495 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 8 avril 2022 6 274
Modifié par Vaucluse le 2/06/2015 à 12:45
Ca se complique!

avez vous essayez d'utiliser l'outil convertir d'Excel

__sélectionnez le champ à traiter
__Ruban / Données / Convertir
__"délimité" / Suivant / autre et entrez underscore dans la case
__et OK

et pour fignoler, sélectionnez les résultats et
__touche ctrl + touche h
__remplacer case en haut: underscore
__par en bas: rien
__et "remplacer tout"

sinon vous trouverez une solution par formule en A3 dans ce modèle, mais bon courage:
https://www.cjoint.com/c/EFckDjf6zwL

... ou alors passer par VBA, mais là, ce n'est plus dans mon domaine!

crdlmnt
0
tontong Messages postés 2525 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 24 août 2022 1 037
2 juin 2015 à 12:18
Bonjour,
On peut aussi faire la recherche avec " _ " au lieu de "_".
=STXT(GAUCHE(A1;CHERCHE("§";SUBSTITUE(A1;" _ ";"§";2)));CHERCHE(" _ ";A1)+3;99)
Le plus on met de caractères le moins on a d'erreurs fortuites.
0
Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015
2 juin 2015 à 12:49
Merci, ça fonctionne bien.

Cependant j'ai des difficultés à récupérer cette partie PA66-GF30 de la chaine "Thermoplastique-PA _ ULTRAMID A3WG6 K00564 _ _ PA66-GF30 _ BASF" qui est placé au 4e §.

J'essaye avec la fonction droite mais ça me retourne une chaine coupé.

Pouvez vous m'éclairer ? Merci
0
tontong Messages postés 2525 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 24 août 2022 1 037
2 juin 2015 à 13:55
=STXT(GAUCHE(A1;CHERCHE("§";SUBSTITUE(A1;" _ ";"§";4)));CHERCHE("§";SUBSTITUE(A1;" _ ";"§";3))+3;99)
Si vous aviez demandé l' extraction de chaque item depuis le début il vous aurait été conseillé d'utiliser Données Convertir Délimité Séparateur Autre _
Mais c'est un autre éclairage.
0
Vaucluse Messages postés 26495 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 8 avril 2022 6 274
2 juin 2015 à 14:04
Salut tontong
voir ici, message 6,à priori, ça n'a pas impressionné!
https://forums.commentcamarche.net/forum/affich-32052838-excel-separer-une-chaine-de-caractere-a-partir-d-un-n-caracter#6
Bien amicalement
0
tontong Messages postés 2525 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 24 août 2022 1 037 > Vaucluse Messages postés 26495 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 8 avril 2022
2 juin 2015 à 14:19
Salut Vaucluse,
C'est vrai que je n'avais pas tout lu depuis hier!
À force de répéter sous toutes les formes l'étincelle va jaillir.
0
Limlight Messages postés 9 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 11 juin 2015
2 juin 2015 à 14:27
Merci de votre réponse, ça marche parfaitement, je vais regarder également votre solution pour optimiser mon code.
0