Extraire champ chaîne de caractères excel

Fermé
MATY31240 - 10 mai 2012 à 13:14
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 10 mai 2012 à 18:14
Bonjour,

Je cherche à extraire un champ situé au milieu d'une chaîne de caractères.
Les champs sont toujours séparés par des underscores mais le nombre de caractères à l'intérieur de chaque champs peut varier.

Exemple:

10000001_01_SCT_MAG_58_test.pdf
1000000001_003_SPB4_MAGPC_8_test.pdf

Le nombre de champs séparés par les underscores est toujours le même (6 champs au total) et je souhaiterai extraire le 5ème champ dans la colonne B, c'est à dire "58" pour le premier exemple et 8 pour le second.

Merci d'avance!!

A voir également:

8 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
10 mai 2012 à 14:46
Bonjour

et si vous avez de l'aspirine comme dit Michel, pour le fun:
=GAUCHE(STXT(A1;TROUVE("/";SUBSTITUE(A1;"_";"/";4);1)+1;20);TROUVE("_";STXT(A1;TROUVE("/";SUBSTITUE(A1;"_";"/";4);1)+1;20);1)-1)

crdlmnt
2
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 mai 2012 à 14:05
Bonjour,

On peut le faire avec des formules -doliprane ou par une fonction personnalisée

la fonction
Function extraire_chainon(texto As String, position As Byte) As String
      extraire_chainon = Split(texto, "_")(position - 1)
End Function


position est le 5° terme (58)
texto est le texte à étudier par ex "10000001_01_SCT_MAG_58_test.pdf "en cellule A1
extraire_chaino(A1;5) te retourne le texte 58
tu dis si tu veux 58 en nimbre


1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 10/05/2012 à 15:52
Re
oui bien sur, puisque vous utilisez STXT le résultat est du texte
mettez toute la formule entre parenthèses derrière le signe égal et terminez par *1

soit donc pour être clair:

=(GAUCHE(STXT(A1;TROUVE("/";SUBSTITUE(A1;"_";"/";4);1)+1;20);TROUVE("_";STXT(A1;TROUVE("/";SUBSTITUE(A1;"_";"/";4);1)+1;20);1)-1))*1

ceci repassera vos valeurs en numérique

crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
1
Enorme merci Vaucluse !! sincèrement ça marche parfaitement et ça me rend un grand service. Merciiiii 1000 fois!!
0
PHILOU10120 Messages postés 6368 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 22 avril 2024 796
10 mai 2012 à 14:33
une solution

=STXT(A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;1)+1)+1)+1)+1;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;1)+1)+1)+1)+1)-1-CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;CHERCHE(CAR(95);A18;1)+1)+1)+1))

A18 est la cellule ou se trouve le texte à traiter
0

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

Posez votre question
Merci pour vos réponses!!

michel_m, je n'ai pas su utiliser cette fonction.

PHILOU10120 et Vaucluse, j'ai testé vos 2 formules avec succès!!

Par contre, se pose un autre problème:
J'ai bien le résultat qui apparait dans la colonne mais si je veux utiliser la formule =SOMME(B8:B501) pour calculer le total de tout ce qui est extrait, cette formule ne marche plus (elle fonctionne lorsqu'on inscrit des nombres).

une idée ?

Cordialement
0
PHILOU10120 Messages postés 6368 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 22 avril 2024 796
10 mai 2012 à 16:01
Taper CNUM ( mettre toute la formule )
0
Merci de votre aide PHILOU10120 même si mon manque de connaissance sur excel m'a bloqué dans l'utilisation de votre formule.
0
Bon week-end à tous !
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 10/05/2012 à 17:35
Merci MATY
pour info la solution de Philou:
=CNUM(formule)
peut s'appliquer à n'importe quelle formule pour transformer le texte en num. Il suffit comme pour *1 de mettre la formule complète entre parenthèses derrière CNUM;
bonne route
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
10 mai 2012 à 18:14
Salut le fil,

J'arrive après la bataille, peut être un peu plus court avec cette formule

=STXT(A1;TROUVE("µ";SUBSTITUE(A1;"_";"µ";4))+1;TROUVE("µ";SUBSTITUE(A1;"_";"µ";5))-TROUVE("µ";SUBSTITUE(A1;"_";"µ";4))-1)*1

pour extraire une partie de chaine texte supprimer simplement *1 en fin de formule
0