Extraire champ chaîne de caractères excel

MATY31240 -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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!!

8 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  3. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. MATY31240
       
      Enorme merci Vaucluse !! sincèrement ça marche parfaitement et ça me rend un grand service. Merciiiii 1000 fois!!
      0
  4. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MATY31240
     
    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
  7. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Taper CNUM ( mettre toute la formule )
    0
    1. MATY31240
       
      Merci de votre aide PHILOU10120 même si mon manque de connaissance sur excel m'a bloqué dans l'utilisation de votre formule.
      0
  8. MATY31240
     
    Bon week-end à tous !
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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