Extraire des caractères dans une chaine.

eurisis -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Migou76
     
    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
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  3. Migou76
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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. Raymond PENTIER Messages postés 58209 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    message annulé
    excusez moi
    0
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  10. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  11. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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