Extraire des caractères dans une chaine.
eurisis
-
Mike-31 Messages postés 19572 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Extraire des caractères dans une chaine.
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Caractères spéciaux - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caracteres speciaux - Guide
11 réponses
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) ?
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
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
En effet, on peut facilement extraire à partir de x caractères de droite ou de gauche, mais si tout le monde bouge je saiche...
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...
Re,
chapeau à Eric et Mike pour leurs formules
mais peut-^tre avec une petite fonction...
debut=0 avant le premier slash
debut=1 entre le 1° et 2° slash
etc.
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.
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 ? ;-)
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 ? ;-)
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.
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.
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
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