Extraire des caractères dans une chaine.

eurisis -  
Mike-31 Messages postés 19572 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
A voir également:

11 réponses

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
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
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
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
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
Raymond PENTIER Messages postés 71871 Date d'inscription   Statut Contributeur Dernière intervention   17 402
 
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

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

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
message annulé
excusez moi
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
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