OVH Cloud OVH Cloud

Formule texte

15 réponses
Avatar
Nico
Bonsoir,

J'ai un soucis de formule :

Je recherche dans une chaine de caractere aléatoire ce qu'il y a entre
parenthese.
exemple :
Si dans A1 il ya : T125 45 3666 9777PIU (TOTOPOF) je devrai extraire :
TOTOPOF

j'y arrive en faisant :
=STXT(A1;CHERCHE("(";A1)+1;NBCAR(A1)-CHERCHE("(";A1)-1)

le soucis est que parfois il peut y avoir plusieurs parenthese dans la
chaine de caractere.
exemple :
P5 45 (MILOU)3 999 PIU (LULU)

et là je cale, car je doit tjrs trouvé ce qu'il y a dans les dernieres
parentheses.

A noter comme repére, que la chaine de caractere se termine toujours par la
parenthese fermé et que je souihaite extraire ce qu'il y a dedans.

Pas facile du tout.

Nico

10 réponses

1 2
Avatar
bourby
Nico wrote:
Bonsoir,
bonjour,


si tu aimes VBA, tu peux facilement programmer une fonction
personnalisée (boucle sur INSTR; ou parcourir la chaîne à l'envers pour
trouver la 1ère parenthèse ouvrante).

sinon tu peux insérer quelques colonnes; mettons 3;
- dans la 1ère, tu inscris la position de la 1ère parenthèse ouvrante;
- dans la 2è, la position de la 2è parenthèse ouvrante [avec cherche, à
partir de la position précédente + 1; et une condition du genre
si(non(esterreur(....)
- etc...
Sur chaque ligne, tu fais ton STXT à partir de MAX(tes 3 colonnes).


Cordialement

Bourby




J'ai un soucis de formule :

Je recherche dans une chaine de caractere aléatoire ce qu'il y a entre
parenthese.
exemple :
Si dans A1 il ya : T125 45 3666 9777PIU (TOTOPOF) je devrai extraire :
TOTOPOF

j'y arrive en faisant :
=STXT(A1;CHERCHE("(";A1)+1;NBCAR(A1)-CHERCHE("(";A1)-1)

le soucis est que parfois il peut y avoir plusieurs parenthese dans la
chaine de caractere.
exemple :
P5 45 (MILOU)3 999 PIU (LULU)

et là je cale, car je doit tjrs trouvé ce qu'il y a dans les dernieres
parentheses.

A noter comme repére, que la chaine de caractere se termine toujours par la
parenthese fermé et que je souihaite extraire ce qu'il y a dedans.

Pas facile du tout.

Nico




Avatar
Nico
Bonne idée pour la formule, je vais fouiller, mais pour le sport j'aurais
préféré trouver dans une seule cellule.

Merci

"bourby" a écrit dans le message de news:

Nico wrote:
Bonsoir,
bonjour,


si tu aimes VBA, tu peux facilement programmer une fonction
personnalisée (boucle sur INSTR; ou parcourir la chaîne à l'envers pour
trouver la 1ère parenthèse ouvrante).

sinon tu peux insérer quelques colonnes; mettons 3;
- dans la 1ère, tu inscris la position de la 1ère parenthèse ouvrante;
- dans la 2è, la position de la 2è parenthèse ouvrante [avec cherche, à
partir de la position précédente + 1; et une condition du genre
si(non(esterreur(....)
- etc...
Sur chaque ligne, tu fais ton STXT à partir de MAX(tes 3 colonnes).


Cordialement

Bourby




J'ai un soucis de formule :

Je recherche dans une chaine de caractere aléatoire ce qu'il y a entre
parenthese.
exemple :
Si dans A1 il ya : T125 45 3666 9777PIU (TOTOPOF) je devrai extraire :
TOTOPOF

j'y arrive en faisant :
=STXT(A1;CHERCHE("(";A1)+1;NBCAR(A1)-CHERCHE("(";A1)-1)

le soucis est que parfois il peut y avoir plusieurs parenthese dans la
chaine de caractere.
exemple :
P5 45 (MILOU)3 999 PIU (LULU)

et là je cale, car je doit tjrs trouvé ce qu'il y a dans les dernieres
parentheses.

A noter comme repére, que la chaine de caractere se termine toujours par
la


parenthese fermé et que je souihaite extraire ce qu'il y a dedans.

Pas facile du tout.

Nico






Avatar
JpPradier
Vraiment pour le sport alors ;-)
A valider sur une seule ligne et en matriciel par Ctrl+Maj+Entree :

=STXT(A1;1+MAX((STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="(")*(LIGNE(INDIRECT("1:"&NBCAR
(A1)))));NBCAR(A1)-1-MAX((STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="(")*(LIGNE(INDIRECT(
"1:"&NBCAR(A1))))))


j-p
Avatar
isabelle
bonjour Nico,

une fonction perso,

Function DernierParanthese(cellule As Range)
For i = Len(cellule) - 1 To 1 Step -1
x = Mid(cellule, i, 1)
If x = "(" Then
Exit For
Else
DernierParanthese = Mid(cellule, i, 1) & DernierParanthese
End If
Next
End Function

isabelle


Bonsoir,

J'ai un soucis de formule :

Je recherche dans une chaine de caractere aléatoire ce qu'il y a entre
parenthese.
exemple :
Si dans A1 il ya : T125 45 3666 9777PIU (TOTOPOF) je devrai extraire :
TOTOPOF

j'y arrive en faisant :
=STXT(A1;CHERCHE("(";A1)+1;NBCAR(A1)-CHERCHE("(";A1)-1)

le soucis est que parfois il peut y avoir plusieurs parenthese dans la
chaine de caractere.
exemple :
P5 45 (MILOU)3 999 PIU (LULU)

et là je cale, car je doit tjrs trouvé ce qu'il y a dans les dernieres
parentheses.

A noter comme repére, que la chaine de caractere se termine toujours par la
parenthese fermé et que je souihaite extraire ce qu'il y a dedans.

Pas facile du tout.

Nico




Avatar
Alain CROS
Bonjour,

Si µ n'est pas utilisé :

=DROITE(GAUCHE(A1;NBCAR(A1)-1);NBCAR(A1)-TROUVE("µ";SUBSTITUE(A1;"(";"µ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"(";""))))-1)

Alain CROS

"Nico" a écrit dans le message de news:
| Bonsoir,
|
| J'ai un soucis de formule :
|
| Je recherche dans une chaine de caractere aléatoire ce qu'il y a entre
| parenthese.
| exemple :
| Si dans A1 il ya : T125 45 3666 9777PIU (TOTOPOF) je devrai extraire :
| TOTOPOF
|
| j'y arrive en faisant :
| =STXT(A1;CHERCHE("(";A1)+1;NBCAR(A1)-CHERCHE("(";A1)-1)
|
| le soucis est que parfois il peut y avoir plusieurs parenthese dans la
| chaine de caractere.
| exemple :
| P5 45 (MILOU)3 999 PIU (LULU)
|
| et là je cale, car je doit tjrs trouvé ce qu'il y a dans les dernieres
| parentheses.
|
| A noter comme repére, que la chaine de caractere se termine toujours par la
| parenthese fermé et que je souihaite extraire ce qu'il y a dedans.
|
| Pas facile du tout.
|
| Nico
|
|
Avatar
Nico
Merci à tous,

Elles fonctionnent toutes impec. maintenant il va falloir que je les
dechiffre.

Bonne journée

Nico

"Alain CROS" a écrit dans le message de news:
ezq#
Bonjour,

Si µ n'est pas utilisé :


=DROITE(GAUCHE(A1;NBCAR(A1)-1);NBCAR(A1)-TROUVE("µ";SUBSTITUE(A1;"(";"µ";NBC

AR(A1)-NBCAR(SUBSTITUE(A1;"(";""))))-1)

Alain CROS

"Nico" a écrit dans le message de news:


| Bonsoir,
|
| J'ai un soucis de formule :
|
| Je recherche dans une chaine de caractere aléatoire ce qu'il y a entre
| parenthese.
| exemple :
| Si dans A1 il ya : T125 45 3666 9777PIU (TOTOPOF) je devrai extraire :
| TOTOPOF
|
| j'y arrive en faisant :
| =STXT(A1;CHERCHE("(";A1)+1;NBCAR(A1)-CHERCHE("(";A1)-1)
|
| le soucis est que parfois il peut y avoir plusieurs parenthese dans la
| chaine de caractere.
| exemple :
| P5 45 (MILOU)3 999 PIU (LULU)
|
| et là je cale, car je doit tjrs trouvé ce qu'il y a dans les dernieres
| parentheses.
|
| A noter comme repére, que la chaine de caractere se termine toujours par
la

| parenthese fermé et que je souihaite extraire ce qu'il y a dedans.
|
| Pas facile du tout.
|
| Nico
|
|




Avatar
AV
| A noter comme repére, que la chaine de caractere se termine toujours par la
| parenthese fermé et que je souihaite extraire ce qu'il y a dedans.

Dans la rubrique "Des fois que" et "Qui peut le plus..."
Même si la chaîne ne se termine pas par la parenthèse fermante

Ex en A1 :
"P5 45 (MILOU)3 999 PIU (LULU) et riri"

=STXT(STXT(A1;TROUVE("ÿ";SUBSTITUE(A1;"(";"ÿ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"(";""))))+1;9^9);1;TROUVE(")";STXT(A1;TROUVE("ÿ";SUBSTITUE(A1;"(";"ÿ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"(";""))))+1;9^9))-1)

AV
Avatar
AV
Un poil plus courte.... mais matricielle :

=STXT(STXT(A1;EQUIV(2;1/(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="("))+1;9^9);1;TROUVE(")";STXT(A1;EQUIV(2;1/(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="("))+1;9^9))-1)

AV
Avatar
Nico
Nous sommes entourés de sportif !!!!!
Bravo

"AV" a écrit dans le message de news:

Un poil plus courte.... mais matricielle :


=STXT(STXT(A1;EQUIV(2;1/(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)="("))+1;

9^9);1;TROUVE(")";STXT(A1;EQUIV(2;1/(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)))
;1)="("))+1;9^9))-1)

AV




Avatar
JpPradier
Bonjour Alain

Une question à 2 centimes d'euros : Pourquoi tu mets 2 dans le Equiv(2.... Ca n'irais
pas avec 1 ?

j-p
1 2