OVH Cloud OVH Cloud

Comparaison de chaine de caractères

15 réponses
Avatar
Richard de Toulouse
Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autre, il y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recherchée)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chaine.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être possible de
résoudre ce problème avec d'autres combinaisons de fonction ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.

10 réponses

1 2
Avatar
Michel Gaboly
Bonjour,

Peux-tu préciser comment on détermine ce qui est à cherche r ?

Ici la chaine "xxx" se trouve dans "zzzzzxxxzzzz" et "yyyyxxxyyyy", mais que faire avec "zzaazxxxzzzz"; "yyyyxxxyaay",
où 2 chaines se trouvent en commun : "xxx" et "aa" ?

S'agit-il seulement de repérer quand 2 chaines de caractères co mportent toutes 2 au moins une suite de 2 caractères
communs ?


Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autre, i l y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recherchà ©e)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chaine.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être possibl e de
résoudre ce problème avec d'autres combinaisons de fonction ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Richard de Toulouse
Michel,

Effectivement, je précise :
Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (début, fin ou
milieu)

En fait, je pourrais aussi résoudre mon besoin si la fonction inverse de
CHERCHE existait du genre INV_CHERCHE ( "yyyyxxxyyyy"; "xxx"; )




Bonjour,

Peux-tu préciser comment on détermine ce qui est à chercher ?

Ici la chaine "xxx" se trouve dans "zzzzzxxxzzzz" et "yyyyxxxyyyy", mais que faire avec "zzaazxxxzzzz"; "yyyyxxxyaay",
où 2 chaines se trouvent en commun : "xxx" et "aa" ?

S'agit-il seulement de repérer quand 2 chaines de caractères comportent toutes 2 au moins une suite de 2 caractères
communs ?


Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autre, il y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recherchée)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chaine.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être possible de
résoudre ce problème avec d'autres combinaisons de fonction ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.




--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Michel Gaboly
Désolé, mais je ne comprends toujours pas :

Dans ton premier post :

"Mais cette fonction implique que mon 1er argument (la chaine recherchà ©e) soit exactement déterminé."

J'avais cru que le problème consistait à passer de "zzzzzxxxzzz z" à "xxx" ç-à-d à déterminer la chaine à r echercher.

Dans le second,

"Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (débu t, fin ou milieu)"

Si ce qu'on cherche est connu, où est le problème ? CHERCHE() o u TROUVE(), qui est sensible à la casse, sont directement
utilisables.





Michel,

Effectivement, je précise :
Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (déb ut, fin ou
milieu)

En fait, je pourrais aussi résoudre mon besoin si la fonction inve rse de
CHERCHE existait du genre INV_CHERCHE ( "yyyyxxxyyyy"; "xxx"; )




Bonjour,

Peux-tu préciser comment on détermine ce qui est à cher cher ?

Ici la chaine "xxx" se trouve dans "zzzzzxxxzzzz" et "yyyyxxxyyyy", ma is que faire avec "zzaazxxxzzzz"; "yyyyxxxyaay",
où 2 chaines se trouvent en commun : "xxx" et "aa" ?

S'agit-il seulement de repérer quand 2 chaines de caractères comportent toutes 2 au moins une suite de 2 caractères
communs ?


Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autre, il y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recherch ée)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chaine.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être possi ble de
résoudre ce problème avec d'autres combinaisons de fonction ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.



--
Cordialement,

Michel Gaboly
www.gaboly.com





--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
Richard de Toulouse
Désolé de ne pas être clair.

J'essaie autrement :

La fonction CHERCHE, cherche la chaine "arg1" dans la chaine "arg2" (et
donne la position de arg1 dans arg2) soit "xxx" dans "yyyyxxxyyy" = 5

Moi je veux savoir si dans le chaine arg1, il y a arg2 soit "yyyyxxxyyy"
contient "xxx" = true

On pourrait penser qu'il suffit d'inverser mes arguments de la fct CHERCHE
mais ce n'est pas le cas.





Désolé, mais je ne comprends toujours pas :

Dans ton premier post :

"Mais cette fonction implique que mon 1er argument (la chaine recherchée) soit exactement déterminé."

J'avais cru que le problème consistait à passer de "zzzzzxxxzzzz" à "xxx" ç-à-d à déterminer la chaine à rechercher.

Dans le second,

"Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (début, fin ou milieu)"

Si ce qu'on cherche est connu, où est le problème ? CHERCHE() ou TROUVE(), qui est sensible à la casse, sont directement
utilisables.





Michel,

Effectivement, je précise :
Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (début, fin ou
milieu)

En fait, je pourrais aussi résoudre mon besoin si la fonction inverse de
CHERCHE existait du genre INV_CHERCHE ( "yyyyxxxyyyy"; "xxx"; )




Bonjour,

Peux-tu préciser comment on détermine ce qui est à chercher ?

Ici la chaine "xxx" se trouve dans "zzzzzxxxzzzz" et "yyyyxxxyyyy", mais que faire avec "zzaazxxxzzzz"; "yyyyxxxyaay",
où 2 chaines se trouvent en commun : "xxx" et "aa" ?

S'agit-il seulement de repérer quand 2 chaines de caractères comportent toutes 2 au moins une suite de 2 caractères
communs ?


Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autre, il y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recherchée)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chaine.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être possible de
résoudre ce problème avec d'autres combinaisons de fonction ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.



--
Cordialement,

Michel Gaboly
www.gaboly.com





--
Cordialement,

Michel Gaboly
www.gaboly.com






Avatar
Jacky
Bonjour,

Et ceci ???
Avec le texte en a1 (yyyyyxxxyyyy) et celui recherché en b1(xxx)

=SI(ESTERREUR(TROUVE(B1;A1;1));"Non, "&B1&" ne se trouve pas dans
"&A1;SI(B1<>"";"Oui, "&B1&" se trouve dans "&A1;""))

Salutations
JJ

"Richard de Toulouse" <Richard de a
écrit dans le message de
news:
Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autre, il y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recherchée)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chaine.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être possible de
résoudre ce problème avec d'autres combinaisons de fonction ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.



Avatar
Michel Gaboly
Re,

Toujours pas compris en quoi CHERCHE5° n'est pas utilisable :

=CHERCHE("xxx";"yyyyxxxyyy") renvoie VRAI
=CHERCHE("xyx";"yyyyxxxyyy") renvoie #VALEUR!

Un classique test de détectoin d'erreur suffit à savoir si la c haîne cherchée est présente :

=NON(ESTERR(CHERCHE("xxx";"yyyyxxxyyy"))) renvoie VRAI
=NON(ESTERR(CHERCHE("xyx";"yyyyxxxyyy"))) renvoie FAUX

Que faut-il de plus ?


Désolé de ne pas être clair.

J'essaie autrement :

La fonction CHERCHE, cherche la chaine "arg1" dans la chaine "arg2" (et
donne la position de arg1 dans arg2) soit "xxx" dans "yyyyxxxyyy" = 5

Moi je veux savoir si dans le chaine arg1, il y a arg2 soit "yyyyxxxyyy "
contient "xxx" = true

On pourrait penser qu'il suffit d'inverser mes arguments de la fct CHER CHE
mais ce n'est pas le cas.





Désolé, mais je ne comprends toujours pas :

Dans ton premier post :

"Mais cette fonction implique que mon 1er argument (la chaine recherch ée) soit exactement déterminé."

J'avais cru que le problème consistait à passer de "zzzzzxxx zzzz" à "xxx" ç-à-d à déterminer la chaine à rechercher.

Dans le second,

"Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (dé but, fin ou milieu)"

Si ce qu'on cherche est connu, où est le problème ? CHERCHE( ) ou TROUVE(), qui est sensible à la casse, sont directement
utilisables.





Michel,

Effectivement, je précise :
Je cherche la chaine "xxx" qqsoit l'endroit ou elle se trouve (dé but, fin ou
milieu)

En fait, je pourrais aussi résoudre mon besoin si la fonction in verse de
CHERCHE existait du genre INV_CHERCHE ( "yyyyxxxyyyy"; "xxx"; )




Bonjour,

Peux-tu préciser comment on détermine ce qui est à ch ercher ?

Ici la chaine "xxx" se trouve dans "zzzzzxxxzzzz" et "yyyyxxxyyyy", mais que faire avec "zzaazxxxzzzz"; "yyyyxxxyaay",
où 2 chaines se trouvent en commun : "xxx" et "aa" ?

S'agit-il seulement de repérer quand 2 chaines de caractèr es comportent toutes 2 au moins une suite de 2 caractères
communs ?


Bonjour à tous,

Si je veux détecter une chaine de caractère dans une autr e, il y a la
fonction CHERCHE.
Mais cette fonction implique que mon 1er argument (la chaine recher chée)
soit exactement déterminé.
Exemple RECHERCHE ( "xxx"; "yyyyxxxyyyy";)

Hors (dans mon cas) la chaine "xxx" se trouve au milieu d'une chain e.
Il me faudrait donc une fonction du type :
CHERCHE ( "zzzzzxxxzzzz"; "yyyyxxxyyyy";)

A priori cette fonction n'existe pas mais il est peut-être pos sible de
résoudre ce problème avec d'autres combinaisons de foncti on ?

A noter que je ne souhaite pas écrire du VB.

Merci d'avance.

--

Cordialement,

Michel Gaboly
www.gaboly.com




--
Cordialement,

Michel Gaboly
www.gaboly.com





--
Cordialement,

Michel Gaboly
www.gaboly.com





Avatar
Richard de Toulouse
Il me semble qu'elle n'est pas utilisable dans mon cas, car c'est "xxx" qui
est l'élément variable.

Je concrétise mon cas par un exemple :

A1 = yyyyyxxxyyyyy
A2 = yyaaayyyyy
A3 = yyyyyyybbbxxx
ect

X1 = xxx
X2 = aaa
X3 = bbb
etc..

En B1 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A1.
En B2 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A2.
En B3 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A3.

Je pourrais toujours imbriquer les SI mais je dépasse la limite des 7 niveaux.

Merci pour ta patience.


Re,

Toujours pas compris en quoi CHERCHE5° n'est pas utilisable :

=CHERCHE("xxx";"yyyyxxxyyy") renvoie VRAI
=CHERCHE("xyx";"yyyyxxxyyy") renvoie #VALEUR!

Un classique test de détectoin d'erreur suffit à savoir si la chaîne cherchée est présente :

=NON(ESTERR(CHERCHE("xxx";"yyyyxxxyyy"))) renvoie VRAI
=NON(ESTERR(CHERCHE("xyx";"yyyyxxxyyy"))) renvoie FAUX

Que faut-il de plus ?




Avatar
Richard de Toulouse
A la place de B1,B2,B3 lire X1,X2,X2 (désolé)


Il me semble qu'elle n'est pas utilisable dans mon cas, car c'est "xxx" qui
est l'élément variable.

Je concrétise mon cas par un exemple :

A1 = yyyyyxxxyyyyy
A2 = yyaaayyyyy
A3 = yyyyyyybbbxxx
ect

X1 = xxx
X2 = aaa
X3 = bbb
etc..

En B1 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A1.
En B2 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A2.
En B3 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A3.

Je pourrais toujours imbriquer les SI mais je dépasse la limite des 7 niveaux.

Merci pour ta patience.


Re,

Toujours pas compris en quoi CHERCHE5° n'est pas utilisable :

=CHERCHE("xxx";"yyyyxxxyyy") renvoie VRAI
=CHERCHE("xyx";"yyyyxxxyyy") renvoie #VALEUR!

Un classique test de détectoin d'erreur suffit à savoir si la chaîne cherchée est présente :

=NON(ESTERR(CHERCHE("xxx";"yyyyxxxyyy"))) renvoie VRAI
=NON(ESTERR(CHERCHE("xyx";"yyyyxxxyyy"))) renvoie FAUX

Que faut-il de plus ?






Avatar
Michel Gaboly
Re,

Encore 2 questions :

1 - Combien d'éléments différents à chercher peut-il y avoir ?

2 - Est-il possible que plusieurs des chaines X1, X2, ... soient pré sentes dans une même cellule ? Par exemple
"xxxAAAxyBBBzx" en A1, "AAA" en X1 et "BBB" en X2 ?

A la place de B1,B2,B3 lire X1,X2,X2 (désolé)


Il me semble qu'elle n'est pas utilisable dans mon cas, car c'est "xxx " qui
est l'élément variable.

Je concrétise mon cas par un exemple :

A1 = yyyyyxxxyyyyy
A2 = yyaaayyyyy
A3 = yyyyyyybbbxxx
ect

X1 = xxx
X2 = aaa
X3 = bbb
etc..

En B1 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A1.
En B2 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A2.
En B3 je veux indiquer qu'elle valeur (B1,B2,B3,...) j'ai trouvé dans A3.

Je pourrais toujours imbriquer les SI mais je dépasse la limite d es 7 niveaux.

Merci pour ta patience.


Re,

Toujours pas compris en quoi CHERCHE5° n'est pas utilisable :

=CHERCHE("xxx";"yyyyxxxyyy") renvoie VRAI
=CHERCHE("xyx";"yyyyxxxyyy") renvoie #VALEUR!

Un classique test de détectoin d'erreur suffit à savoir si la chaîne cherchée est présente :

=NON(ESTERR(CHERCHE("xxx";"yyyyxxxyyy"))) renvoie VRAI
=NON(ESTERR(CHERCHE("xyx";"yyyyxxxyyy"))) renvoie FAUX

Que faut-il de plus ?







--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
Richard de Toulouse
La liste des A est très longue (> 2000)
La liste des X comportera au moins 50 éléments

A priori, le cas "xxxAAAxyBBBzx" devrait être très rare et n'est pas à gérer.

Je sens que je commence à être compris ;-)




Re,

Encore 2 questions :

1 - Combien d'éléments différents à chercher peut-il y avoir ?

2 - Est-il possible que plusieurs des chaines X1, X2, ... soient présentes dans une même cellule ? Par exemple
"xxxAAAxyBBBzx" en A1, "AAA" en X1 et "BBB" en X2 ?



1 2