Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraires une sous-chaine entre deux caractères

38 réponses
Avatar
Jose SISA
Bonjour,
je cherche =E0 extraire
une "sous-chaine" entre le 3i=E8me "/" et le 4i=E8me .

Trouve me dit =E0 quel endroit se trouve le "/"
mais, j'en ai plusieurs , comment lui dire
que je ne veux que entre le 3i=E8me "/" et le 4i=E8me "/".

Merci pour votre
Aide
Jos=E9

10 réponses

1 2 3 4
Avatar
Jacquouille
Bonjour
En fait, ma proposition ne se préoccupe pas des "/".
Je prends la fonction STXT qui permet d'extraire un certain nombre de
caractères, à partir d'un certain chiffre. Un peu comme gauche ou droite
mais qui elles, ne commencent à extraire qu'à partir du bord (début ou fin )
de la chaine.
Je lui demande donc d'extraire 5 caractères à partir du début de la série
des "b".
pour cela, je lui demande la position du premier "b" trouvé, via la fonction
Médor (allez, cherche...ou trouve).

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jose SISA" a écrit dans le message de groupe de discussion :


Bonjour et merci pour vos suggestions et exemples.

j'ai bien peur que cela ne soit pas suffisant, car
le 2ème et le 3ème "/" ne sont pas formément au meme endroit
ni séparé par un même nombre de caractères.

il faudrait arriver à trouver la position A du 1ier "/" puis la
position B du 2ème "/"

oui extraire la chaine entre A et le nb de caractères B-A ...
le tout en évitant les macro, notre systeme est un tit peu
"vérouillé" ...
j'en reste baba ...

Merci pour votre aide.
José




On 5 avr, 20:42, "Jacquouille" wrote:
Bonsoir
A condition que ta chaine aie chaque fois la même configuration....et
qu'elle soit en A1
=STXT(A1;TROUVE("b";A1);5)

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jose SISA" a écrit dans le message de groupe de discussion :


Bonjour,
merci pour vos réponses.

je dois avoir la tete dans le "biiip" ...

ma chaine est par exemple :

aaa//aaaaaaa/bbbbb/cccccc/dddddd/

j'aimerai bbbbb , j'aimerai
utiliser les fonctions STXT ou GAUCHE ou DROITE
mais je n'arrive pas à les "emboiter" correctement.

Merci
José

On 5 avr, 13:46, "MichD" wrote:







> Bonjour,

> Dans un module standard du fichier où se déroule l'action, copie
> la fonction personnalisée suivante :

> '------------------------------------------------------------------------
> Function LeSplit(Expression As String, _
> Séparateur As String, _
> Élément As Integer)
> LeSplit = Split(Expression, Séparateur)(Élément - 1)
> End Function
> '------------------------------------------------------------------------

> Dans ta cellule, pour extraire l'élément de la chaîne désirée en
> supposant
> qu'elle se retrouve en A1, tu inscris la formule suivante :

> =Lesplit(A1;"/";3)

> A1 : où se retrouve la chaîne de caractères
> "/" : le séparateur d'éléments "/" mais tu pourrais utiliser la
> fonction
> avec d'autres séparateurs le cas échéant.
> 3 : c'est le numéro de la section que tu veux obtenir dans ta chaîne
> de
> caractères.

> MichD
> ------------------------------------------
Avatar
Gloops
Jacquouille a écrit, le 05/04/2012 20:42 :
Bonsoir
A condition que ta chaine aie chaque fois la même configuration....et
qu'elle soit en A1
=STXT(A1;TROUVE("b";A1);5)




Eh oui : c'est pour ça que ça ne marche pas, parce que le nombre de b
est variable.

A la rigueur, on peut dire

=STXT(A1;TROUVE("b";A1);TROUVE("/";A1;TROUVE("b";A1))-TROUVE("b";A1))

Avec l'inconvénient par rapport à la fonction split que c'est moins l isible.
Le deuxième argument dit où commencer, ça ça va.
Le troisième, pour donner la longueur, cherche la barre oblique, en
démarrant au b [TROUVE("/";A1;TROUVE("b";A1))], puis retire la position
du b [TROUVE("b";A1)].

Mais ... ça ressemble furieusement à la deuxième proposition de Mic hD,
dont rien n'a été retenu ...
Il est vrai que c'est plus facile de prendre la position du b, comme
point de repère, du fait qu'il n'y en a qu'un. Si maintenant le b éta it
un exemple, et qu'on a des textes variables, là bien sûr, ça ne mar che
plus, il faut en revenir au split qui est fait exprès pour.

A moins de constater que le b se trouve deux caractères après la
première barre oblique, donc à TROUVE("/";A1) + 2, qu'on mettrait à la
place de TROUVE("b";A1).
Avatar
Jose SISA
Booonnjouuuuuurrrr ....

je m'a trompa ...

enfin, presque, disont que, dans mes exemples
je parle de "bbbbbb" de "qqqqqq" de "aaaaaaa" .....

et donc, vous avez (cesar?) utilisé la matière que je donne
pour m'aider.

méaaaculpette !

il est vrai que l'exemple, me semble-t-il à enduit tout le monde
d'erreur ! mais, il se trouve que je ne recherque que les caractères
qui se trouve entre le Xième "/" et le Yième "/"

parceque des fois j'ai "bbbbbbb", mais d'autre fois j'ai
"lkjhlkjhljkh"
et d'autres fois encore des "tyutuyru"

donc, mes seuls repères sont les "/".

En fait, c'est un peu comme avec split, décomposer cette
chaine de caractères en un tableau indicé et chercher les "/", repére r
le Xième, et Yième (dans mon cas le 3ième et 4ième) puis, filer tou t
çà à la fonction STXT pour récuperer ce que je souhaite ...

rappel : je ne peux pas faire de vba
bananasplit !
gasp ...
José



On 6 avr, 15:18, Gloops wrote:
Jacquouille a écrit, le 05/04/2012 20:42 :

> Bonsoir
> A condition que ta chaine aie chaque fois la même configuration....et
> qu'elle soit en A1
> =STXT(A1;TROUVE("b";A1);5)

Eh oui : c'est pour ça que ça ne marche pas, parce que le nombre de b
est variable.

A la rigueur, on peut dire

=STXT(A1;TROUVE("b";A1);TROUVE("/";A1;TROUVE("b";A1))-TROUVE("b";A1))

Avec l'inconvénient par rapport à la fonction split que c'est moins l isible.
Le deuxième argument dit où commencer, ça ça va.
Le troisième, pour donner la longueur, cherche la barre oblique, en
démarrant au b [TROUVE("/";A1;TROUVE("b";A1))], puis retire la position
du b [TROUVE("b";A1)].

Mais ... ça ressemble furieusement à la deuxième proposition de Mic hD,
dont rien n'a été retenu ...
Il est vrai que c'est plus facile de prendre la position du b, comme
point de repère, du fait qu'il n'y en a qu'un. Si maintenant le b éta it
un exemple, et qu'on a des textes variables, là bien sûr, ça ne mar che
plus, il faut en revenir au split qui est fait exprès pour.

A moins de constater que le b se trouve deux caractères après la
première barre oblique, donc à TROUVE("/";A1) + 2, qu'on mettrait à la
place de TROUVE("b";A1).
Avatar
Gloops
Jose SISA a écrit, le 06/04/2012 16:05 :
parceque des fois j'ai "bbbbbbb", mais d'autre fois j'ai
"lkjhlkjhljkh"
et d'autres fois encore des "tyutuyru"

donc, mes seuls repères sont les "/".



Si tu pouvais relire mon avant-dernier paragraphe ...
Avatar
Gloops
Gloops a écrit, le 06/04/2012 16:39 :
Jose SISA a écrit, le 06/04/2012 16:05 :
parceque des fois j'ai "bbbbbbb", mais d'autre fois j'ai
"lkjhlkjhljkh"
et d'autres fois encore des "tyutuyru"

donc, mes seuls repères sont les "/".



Si tu pouvais relire mon avant-dernier paragraphe ...




Ah oui, et ... le dernier aussi.
Avatar
isabelle
la position du premier "/" est:
=CHERCHE("/";$A$1)

la 2ème position,
=CHERCHE("/";$A$1;CHERCHE("/";$A$1)+1)

la 3ème position,
=CHERCHE("/";$A$1;CHERCHE("/";$A$1;CHERCHE("/";$A$1)+2))

--
isabelle


Le 2012-04-06 04:19, Jose SISA a écrit :

il faudrait arriver à trouver la position A du 1ier "/" puis la
position B du 2ème "/"
Avatar
isabelle
correction pour la 3ème position,

=CHERCHE("/";$A$1;CHERCHE("/";$A$1;CHERCHE("/";$A$1)+1)+1)

--
isabelle



Le 2012-04-06 10:49, isabelle a écrit :
la position du premier "/" est:
=CHERCHE("/";$A$1)

la 2ème position,
=CHERCHE("/";$A$1;CHERCHE("/";$A$1)+1)

la 3ème position,
=CHERCHE("/";$A$1;CHERCHE("/";$A$1;CHERCHE("/";$A$1)+2))

Avatar
MichD
Pas encore trouvé?


Voir exemple de formules dans le fichier joint : http://cjoint.com/?BDgxCU12Ej9



MichD
------------------------------------------
Avatar
MichD
Une petite mise à jour du fichier exemple pour la formule :

http://cjoint.com/?BDhm6BOBM1h

MichD
------------------------------------------
Avatar
Fredo P.
Bonjour Jose
avec la chaine en B7,
=CHERCHE("§";SUBSTITUE(B7;"/";"§";3)) ' te donne la position du 3ème "/"
.=CHERCHE("§";SUBSTITUE(B7;"/";"§";4))' te donne la position du 4ème "/"
Avec cela, je suppose que tu as la solution!
"Jose SISA" a écrit dans le message de news:

Bonjour,
je cherche à extraire
une "sous-chaine" entre le 3ième "/" et le 4ième .

Trouve me dit à quel endroit se trouve le "/"
mais, j'en ai plusieurs , comment lui dire
que je ne veux que entre le 3ième "/" et le 4ième "/".

Merci pour votre
Aide
José
1 2 3 4