Extraire des caractères dans une chaine.

Bonjour,

J'ai un réél soucis, et je galère...j'ai une chaine de caractère SU/P/S0013/C/042 où le nb de caractères entre / / varie mais le nombre de / est toujour le même.
J'ai besoin d'extraire la seconde chaine soit "P" et après l'autre soit le "S013". Je cherche la formule qui permet d'extraire les caractère entre le premier/ et le 2nd/ et entre le 2nd / et le 3eme/.

Merci par avance pour votre aide.
Eurisis
Configuration: Windows XP / Internet Explorer 6.0

11 réponses

  1. En effet, galère ! Peux tu me dire s'il y a tout de même un nb de caractère fixe quelque part (n'importe lesquels) ?
    0
    1. Salut,

      Pour extraire la première chaine exemple le P dans ton exemple

      =GAUCHE(DROITE(A1;NBCAR(A1)-CHERCHE("/";A1));TROUVE("/";DROITE(A1;NBCAR(A1)-CHERCHE("/";A1)))-1)

      pour la deuxième chaine

      =GAUCHE(DROITE(DROITE(A1;NBCAR(A1)-CHERCHE("/";A1));NBCAR(DROITE(A1;NBCAR(A1)-CHERCHE("/";A1)))-CHERCHE("/";DROITE(A1;NBCAR(A1)-CHERCHE("/";A1))));TROUVE("/";DROITE(DROITE(A1;NBCAR(A1)-CHERCHE("/";A1));NBCAR(DROITE(A1;NBCAR(A1)-CHERCHE("/";A1)))-CHERCHE("/";DROITE(A1;NBCAR(A1)-CHERCHE("/";A1)))))-1)

      Je pense qu'il y a plus court je regarde et reviens sur la discussion. Parfois les formules longues se parasitent, si c'était le cas, je t'enverrais un fichier exemple
      0
      1. En effet, on peut facilement extraire à partir de x caractères de droite ou de gauche, mais si tout le monde bouge je saiche...
        0
        1. Contributeur
          Bonsoir,

          chaine1: =STXT(A1;CHERCHE("/";A1)+1;CHERCHE("/";A1;CHERCHE("/";A1)+1)-CHERCHE("/";A1)-1)
          chaine2: =STXT(A1;CHERCHE("/";A1;CHERCHE("/";A1)+1)+1;CHERCHE("/";A1;CHERCHE("/";A1;CHERCHE("/";A1)+1)+1)-CHERCHE("/";A1;CHERCHE("/";A1)+1)-1)

          eric
          0
          1. Contributeur
            Excellent !
            La même formule, en remplaçant CHERCHE par TROUVE, marche également.
            Et je n'ai pas trouvé plus court (sauf à insérer des colonnes pour calculs intermédiaires).
            0
        2. Contributeur
          merci raymond,
          on pourrait raccourcir s'il y avait une partie fixe, par exemple toujours 2 car. pour la 1ère partie ou 1 car. pour la seconde. Si le demandeur pouvait donner des précisions parce que c'est vrai que ça reste lourd comme formule...
          0
          1. Contributeur
            message annulé
            excusez moi
            0
            1. Contributeur
              Re,

              chapeau à Eric et Mike pour leurs formules

              mais peut-^tre avec une petite fonction...

              Function entreslash(cellule As Range, debut As Byte) As String
              tablo = Split(cellule, "/")
              entreslash = tablo(debut)
              End Function


              debut=0 avant le premier slash
              debut=1 entre le 1° et 2° slash
              etc.
              0
              1. Contributeur
                Salut michel,

                Elle n'était pas bonne ta formule ? J'avoue ne pas avoir eu le temps tester et paraissait interessante...

                eric

                EDIT : Et tant que tu y es pourquoi pas ne pas rendre plus générale ta fonction en ajoutant les paramètres 'séparateur' (voire même une chaine de séparateurs) et le rang de la valeur à retourner ? ;-)
                0
                1. Contributeur
                  Bonjour Eric,
                  Elle n'était pas bonne ta formule ?
                  heu, en fait c'était la 1° et pratiquement la m^me que Mike!
                  j'avais aussi essayé avec une matricielle style ligne(indirect(.... mais c'était l'usine à gaz et evidemment, ca ne marchait pas :-(

                  pour la fonction, on peut la généraliser bien sûr; ici, je me suis borné à répondre à la question... je ne comprend pas ce que tu veux dire par "le rang de la valeur à retourner")
                  Cordialement
                  Michel.
                  0
                  1. Contributeur
                    J'ai cherché un peu aussi coté matriciel mais rien trouvé...
                    Comme quoi une question simple donne une reponse soit à rallonge, soit compliquée dès qu'on aborde les chaines. Il y a des manques de ce coté dans excel.
                    Pour la fonction je pensais à une syntaxe de ce style : =découpe(A1,"/",3) qui ramène le 3ème élément (après le 2nd "/" donc) et puis pour la valeur 0 qui ramenerait le nombre d'éléments en cas de besoin.
                    eric
                    0
                    1. Salut tout le monde,

                      Que de belles propositions, pendant que je privilégie le ski.

                      Manuellement il est possible de sélectionner la plage à traiter et Données/Convertir/Délimité/cocher Autre et saisir / Suivant/cocher standard et Terminer
                      0