Extraire la fin d'une chaine de caractère

Résolu/Fermé
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014 - Modifié par mr.denver le 24/03/2014 à 16:02
PHILOU10120 Messages postés 6367 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 2 avril 2024 - 25 mars 2014 à 09:31
je cherche à extraire d'une cellule la chaine de caractères qui précède le dernier tiret de de toute la chaine de caractère, et pouvoir répéter cette fonction sur plusieurs cellules dont la chaine de caractère n'est pas toujours de même longueur.

ex:extraire seulement "T1TRANSFO" de la chaine : "PMFR-MTA-C-5758-ELEHT-T1TRANSFO"


PMFR-MTA-C-5758-ELEHT-T1TRANSFO
PMFR-MTA-C-5758-FROID-CLIM
PMFR-MTA-C-5758-INCEN-DETINC
PMFR-MTA-C-5758-INCEN-POSTSPK
PMFR-MTA-C-5758-INCEN-STOCKSPK
PMFR-MTA-C-5758-INGAZ-DETGAZ
PMFR-MTA-C-5758-LEVAG-MONTECG
PMFR-MTA-C-5758-PORBA-PORTRAPID

je vous remercie par avance
A voir également:

7 réponses

PHILOU10120 Messages postés 6367 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 2 avril 2024 795
24 mars 2014 à 16:17
Bonjour

Le texte est en A5

Il faut toujours 5 tirets voici une formule

=DROITE($A5;NBCAR($A5)-TROUVE("-";$A5;(TROUVE("-";$A5;TROUVE("-";$A5;(TROUVE("-";$A5;(TROUVE("-";$A5;1)+1))+1))+1)+1)))
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 24/03/2014 à 16:22
Bonjour à tous,

Comme tu as toujours 5 tirets et le 5ème toujours en même position :
=STXT(A2;CHERCHE("-";A2;21)+1;50)

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
24 mars 2014 à 16:44
merci bcp pour les réponces rapide ça marche tres bien, entre temps moi aussi j'ai trouvé une solution:

=DROITE(A390;NBCAR(A390)-TROUVE("-";A390)-17)

mais au faite j'ai oublier de mentionner que parfois j'ai des chaine qui ne comporte pas 5 tiret et la par contre je ne voudrais rien extraire, en gros je voudrais extraire que les caractaitre qui précède le 5ème tiret sinon une cellule vide...une difficulté de plus


ex:
PMFR-MTA-B-LC27-PALET-RBT07
PMFR-MTA-C
PMFR-MTA-C-0147
PMFR-MTA-C-0147-EAUCH
PMFR-MTA-C-0147-EAUCH-SSTATION
PMFR-MTA-C-0147-ECLAI
PMFR-MTA-C-0147-ECLAI-BAES

je vous remerci par avance
0
PHILOU10120 Messages postés 6367 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 2 avril 2024 795
24 mars 2014 à 17:18
Bonjour

La formule est un peu longue mais elle fonctionne sans imposer une position à 21 ou un -17 ou autre caractère
S'il n'y a pas cinq tirets rien n'est affiché

=SI(ESTERREUR(DROITE($A6;NBCAR($A6)-TROUVE("-";$A6;(TROUVE("-";$A6;TROUVE("-";$A6;(TROUVE("-";$A6;(TROUVE("-";$A6;1)+1))+1))+1)+1))));"";DROITE($A6;NBCAR($A6)-TROUVE("-";$A6;(TROUVE("-";$A6;TROUVE("-";$A6;(TROUVE("-";$A6;(TROUVE("-";$A6;1)+1))+1))+1)+1))))
0
PHILOU10120 Messages postés 6367 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 2 avril 2024 795
24 mars 2014 à 18:24
Avec la proposition de teste pour les 5 tirets d'Eriiic cela donne

=SI(NBCAR(A5)-NBCAR(SUBSTITUE(A5;"-";""))=5;DROITE($A5;NBCAR($A5)-CHERCHE("-";$A5;(CHERCHE("-";$A5;CHERCHE("-";$A5;(CHERCHE("-";$A5;(CHERCHE("-";$A5;1)+1))+1))+1))+1));"")
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
24 mars 2014 à 18:33
A quoi ça sert de proposer plus long que la dernière proposition ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
24 mars 2014 à 17:55
Re,

en plus court :
=SI(NBCAR(A2)-NBCAR(SUBSTITUE(A2;"-";""))=5;STXT(A2;CHERCHE("-";A2;21)+1;50);"")

eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
24 mars 2014 à 18:32
Bonsoir
ou alors:
=STXT(A1;TROUVE("/";SUBSTITUE(A1;"-";"/";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"-";""))))+1;25)
qui fonctionne quelque soit le nombre de tirets
crdlmnt
0
PHILOU10120 Messages postés 6367 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 2 avril 2024 795
24 mars 2014 à 18:45
Voila à vous deux Eriiic et Vaucluse
Vous m'avez permis d'apprendre comment simplifier ma formule
Je préfère celle de Vaucluse qui impose juste un mot de 25 caractères maximum en extraction
Alors que celle d'Eriiic impose un tiret après le 21 caractère
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
24 mars 2014 à 18:56
Alors que celle d'Eriiic impose un tiret après le 21 caractère
Pas compris là...
Ca retourne ce que tu as demandé :
j'ai des chaine qui ne comporte pas 5 tiret et la par contre je ne voudrais rien extraire

eric
0
PHILOU10120 Messages postés 6367 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 2 avril 2024 795
25 mars 2014 à 09:31
Bonjour Eriiic

Je me suis mal exprimé, dans votre formule vous chercher le tiret à partir du 21 caractères et pour moi cela impose que toutes les chaînes analysées comportant 5 tirets soient composées d'un minimum de 21 caractères. Je préfère une formule sans contrainte. C'est uniquement pour mon information.

Merci Eriiic et Vaucluse pour vos réponses
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
24 mars 2014 à 22:49
je vous remercie Vaucluse, eriiic, PHILOU10120 ça marche tres bien!!
0