Extraire champ chaîne de caractères excel

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. Contributeur
    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
    1. Contributeur
      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
      1. Contributeur
        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. Enorme merci Vaucluse !! sincèrement ça marche parfaitement et ça me rend un grand service. Merciiiii 1000 fois!!
          0
      2. 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
        1. 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
          1. Taper CNUM ( mettre toute la formule )
            0
            1. Merci de votre aide PHILOU10120 même si mon manque de connaissance sur excel m'a bloqué dans l'utilisation de votre formule.
              0
          2. Bon week-end à tous !
            0
            1. Contributeur
              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
          3. 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