chercher une référence dans une chaine de caractères (suites)
16 réponses
Orsu
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais avoir
eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se
révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne
contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette
colonne , j'ai besoin de tester si une partie du contenu de la cellule a une
correspondance avec une liste de noms de référence et, dans l'affirmative,
de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence
trouvé.
La solution proposée par LSteph était la suivante :
=index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE("
";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du
même point de la chaine de caractère concernée (c'était le cas dans le
classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le
nom de référence cherché peut se trouver positionné différemment dans la
chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses
plus claires............
Pour illustrer la question ci-joint un classeur : http://cjoint.com/?jswsEKagZE
"Orsu" a écrit :
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais avoir eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette colonne , j'ai besoin de tester si une partie du contenu de la cellule a une correspondance avec une liste de noms de référence et, dans l'affirmative, de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence trouvé.
La solution proposée par LSteph était la suivante : =index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE(" ";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du même point de la chaine de caractère concernée (c'était le cas dans le classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le nom de référence cherché peut se trouver positionné différemment dans la chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses plus claires............
Merci d'avance aux pros des soluces !
Pour illustrer la question ci-joint un classeur :
http://cjoint.com/?jswsEKagZE
"Orsu" a écrit :
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais avoir
eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se
révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne
contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette
colonne , j'ai besoin de tester si une partie du contenu de la cellule a une
correspondance avec une liste de noms de référence et, dans l'affirmative,
de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence
trouvé.
La solution proposée par LSteph était la suivante :
=index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE("
";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du
même point de la chaine de caractère concernée (c'était le cas dans le
classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le
nom de référence cherché peut se trouver positionné différemment dans la
chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses
plus claires............
Pour illustrer la question ci-joint un classeur : http://cjoint.com/?jswsEKagZE
"Orsu" a écrit :
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais avoir eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette colonne , j'ai besoin de tester si une partie du contenu de la cellule a une correspondance avec une liste de noms de référence et, dans l'affirmative, de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence trouvé.
La solution proposée par LSteph était la suivante : =index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE(" ";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du même point de la chaine de caractère concernée (c'était le cas dans le classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le nom de référence cherché peut se trouver positionné différemment dans la chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses plus claires............
Merci d'avance aux pros des soluces !
Jacky
Bonsoir, Une petite fonction perso et la plage des noms nommée "RefNom" '-------------- Function ChercheNom(Adresse As Range) As String For Each c In [RefNom] If Adresse Like "*" & c & "*" Then ChercheNom = c Exit Function End If Next End Function '---------------- En retour ton exemple modifié http://cjoint.com/?jswRe8iHsZ
-- Salutations JJ
"Orsu" a écrit dans le message de news:
Pour illustrer la question ci-joint un classeur : http://cjoint.com/?jswsEKagZE
"Orsu" a écrit :
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais avoir eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette colonne , j'ai besoin de tester si une partie du contenu de la cellule a une correspondance avec une liste de noms de référence et, dans l'affirmative, de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence trouvé.
La solution proposée par LSteph était la suivante : =index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE(" ";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du même point de la chaine de caractère concernée (c'était le cas dans le classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le nom de référence cherché peut se trouver positionné différemment dans la chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses plus claires............
Merci d'avance aux pros des soluces !
Bonsoir,
Une petite fonction perso et la plage des noms nommée "RefNom"
'--------------
Function ChercheNom(Adresse As Range) As String
For Each c In [RefNom]
If Adresse Like "*" & c & "*" Then
ChercheNom = c
Exit Function
End If
Next
End Function
'----------------
En retour ton exemple modifié
http://cjoint.com/?jswRe8iHsZ
--
Salutations
JJ
"Orsu" <Orsu@discussions.microsoft.com> a écrit dans le message de news:
B0BF8B34-A1BF-4C3E-B3A1-90DC079784AC@microsoft.com...
Pour illustrer la question ci-joint un classeur :
http://cjoint.com/?jswsEKagZE
"Orsu" a écrit :
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais
avoir
eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se
révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne
contenant des valeurs (chaines de caractères) ; pour chaque cellule de
cette
colonne , j'ai besoin de tester si une partie du contenu de la cellule a
une
correspondance avec une liste de noms de référence et, dans
l'affirmative,
de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence
trouvé.
La solution proposée par LSteph était la suivante :
=index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE("
";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir
du
même point de la chaine de caractère concernée (c'était le cas dans le
classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le
nom de référence cherché peut se trouver positionné différemment dans la
chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les
choses
plus claires............
Bonsoir, Une petite fonction perso et la plage des noms nommée "RefNom" '-------------- Function ChercheNom(Adresse As Range) As String For Each c In [RefNom] If Adresse Like "*" & c & "*" Then ChercheNom = c Exit Function End If Next End Function '---------------- En retour ton exemple modifié http://cjoint.com/?jswRe8iHsZ
-- Salutations JJ
"Orsu" a écrit dans le message de news:
Pour illustrer la question ci-joint un classeur : http://cjoint.com/?jswsEKagZE
"Orsu" a écrit :
Bonsoir le forum
Je reviens sur une question précédemment posée à laquelle je pensais avoir eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette colonne , j'ai besoin de tester si une partie du contenu de la cellule a une correspondance avec une liste de noms de référence et, dans l'affirmative, de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence trouvé.
La solution proposée par LSteph était la suivante : =index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE(" ";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du même point de la chaine de caractère concernée (c'était le cas dans le classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le nom de référence cherché peut se trouver positionné différemment dans la chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses plus claires............
Je reviens sur une question précédemment posée à laquelle je pensais avoir eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette colonne , j'ai besoin de tester si une partie du contenu de la cellule a une correspondance avec une liste de noms de référence et, dans l'affirmative, de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence trouvé.
La solution proposée par LSteph était la suivante : =index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE(" ";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du même point de la chaine de caractère concernée (c'était le cas dans le classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le nom de référence cherché peut se trouver positionné différemment dans la chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses plus claires............
Je reviens sur une question précédemment posée à laquelle je pensais avoir
eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se
révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne
contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette
colonne , j'ai besoin de tester si une partie du contenu de la cellule a une
correspondance avec une liste de noms de référence et, dans l'affirmative,
de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence
trouvé.
La solution proposée par LSteph était la suivante :
=index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE("
";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du
même point de la chaine de caractère concernée (c'était le cas dans le
classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le
nom de référence cherché peut se trouver positionné différemment dans la
chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses
plus claires............
Je reviens sur une question précédemment posée à laquelle je pensais avoir eu une réponse (merci à Lsteph en particulier) ...mais qui à l'usage se révèle en partie inadaptée.
Je rappelle rapidement le sujet : dans un tableau, j'ai une colonne contenant des valeurs (chaines de caractères) ; pour chaque cellule de cette colonne , j'ai besoin de tester si une partie du contenu de la cellule a une correspondance avec une liste de noms de référence et, dans l'affirmative, de renvoyer dans une (nouvelle) cellule du tableau, le nom de référence trouvé.
La solution proposée par LSteph était la suivante : =index(Références!$A$2:$A$30;EQUIV(GAUCHE(B2;CHERCHE(" ";B2;1)-1);Références!$A$2:$A$30;0))
Elle marche.... sous réserve que la recherche se fasse toujours à partir du même point de la chaine de caractère concernée (c'était le cas dans le classeur que j'avais mis sur cjoint pour illustrer la question) .
Dans la "vraie vie", ce n'est pas le cas : selon la cellule concernée, le nom de référence cherché peut se trouver positionné différemment dans la chaîne de caractère.
Bon, j'arrête car je ne suis pas sur que plus de détails rendront les choses plus claires............
Merci d'avance aux pros des soluces !
Jacky
Bonsoir Stéphane
Tu as quelque chose contre "Valentine" :-(( Ligne 33 ref ligne 29 ;o))) -- Salutations JJ
Valentin a bien une correspondance dans la chaine Valentine
C'est ce que pose la question
mais je suis d'accord avec ta remarque
Il faudrait mieux préciser le but et on va probablement envisager une autre solution si cela peut se traiter, car pour l'instant on peut se demander la finalité même s'il ne fait nul doute qu'il y en ait une.
Comment arrive laliste des prénoms en feuile2 et même question pour le tableau en feuille 1 objectif du rapprochement?
Cordialement.
-- lSteph
Jacky a écrit :
Bonsoir Stéphane
Tu as quelque chose contre "Valentine" :-(( Ligne 33 ref ligne 29 ;o)))
Bonsoir Jacky
c'est Valentin et je l'obtiens bien!?
Valentin a bien une correspondance dans la chaine Valentine
C'est ce que pose la question
mais je suis d'accord avec ta remarque
Il faudrait mieux préciser le but et on va probablement envisager une
autre solution si cela peut se traiter, car pour l'instant on peut se
demander la finalité même s'il ne fait nul doute qu'il y en ait une.
Comment arrive laliste des prénoms en feuile2 et même question pour le
tableau en feuille 1
objectif du rapprochement?
Cordialement.
--
lSteph
Jacky a écrit :
Bonsoir Stéphane
Tu as quelque chose contre "Valentine" :-((
Ligne 33 ref ligne 29
;o)))
Valentin a bien une correspondance dans la chaine Valentine
C'est ce que pose la question
mais je suis d'accord avec ta remarque
Il faudrait mieux préciser le but et on va probablement envisager une autre solution si cela peut se traiter, car pour l'instant on peut se demander la finalité même s'il ne fait nul doute qu'il y en ait une.
Comment arrive laliste des prénoms en feuile2 et même question pour le tableau en feuille 1 objectif du rapprochement?
Cordialement.
-- lSteph
Jacky a écrit :
Bonsoir Stéphane
Tu as quelque chose contre "Valentine" :-(( Ligne 33 ref ligne 29 ;o)))
LSteph
Bonjour Jacky,
Oui!forcément avec VBA , c'est facile de contourner le pb, au départ mon idée était de répondre par une formule, selon le premier fil.
Amitiés.
-- lSteph
Jacky a écrit :
Bonsoir, Une petite fonction perso et la plage des noms nommée "RefNom" '-------------- Function ChercheNom(Adresse As Range) As String For Each c In [RefNom] If Adresse Like "*" & c & "*" Then ChercheNom = c Exit Function End If Next End Function '---------------- En retour ton exemple modifié http://cjoint.com/?jswRe8iHsZ
Bonjour Jacky,
Oui!forcément avec VBA , c'est facile de contourner le pb,
au départ mon idée était de répondre par une formule,
selon le premier fil.
Amitiés.
--
lSteph
Jacky a écrit :
Bonsoir,
Une petite fonction perso et la plage des noms nommée "RefNom"
'--------------
Function ChercheNom(Adresse As Range) As String
For Each c In [RefNom]
If Adresse Like "*" & c & "*" Then
ChercheNom = c
Exit Function
End If
Next
End Function
'----------------
En retour ton exemple modifié
http://cjoint.com/?jswRe8iHsZ
Oui!forcément avec VBA , c'est facile de contourner le pb, au départ mon idée était de répondre par une formule, selon le premier fil.
Amitiés.
-- lSteph
Jacky a écrit :
Bonsoir, Une petite fonction perso et la plage des noms nommée "RefNom" '-------------- Function ChercheNom(Adresse As Range) As String For Each c In [RefNom] If Adresse Like "*" & c & "*" Then ChercheNom = c Exit Function End If Next End Function '---------------- En retour ton exemple modifié http://cjoint.com/?jswRe8iHsZ
AV
Pour répondre à ta question "...je cherchais ici une formule me permettant de tester si il existe dans chaque cellule de la colonne B une chaine de caractère ayant une équivalence dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence La difficulté est que cette chaine de caractères n'est pas toujours positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" : En G2 et recopie --> G34 Matricielle (valider par ctrl+maj+entrée :)
Pour répondre à ta question
"...je cherchais ici une formule me permettant de tester si il existe dans
chaque cellule de la colonne B une chaine de caractère ayant une équivalence
dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence
La difficulté est que cette chaine de caractères n'est pas toujours positionnée
au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" :
En G2 et recopie --> G34
Matricielle (valider par ctrl+maj+entrée :)
Pour répondre à ta question "...je cherchais ici une formule me permettant de tester si il existe dans chaque cellule de la colonne B une chaine de caractère ayant une équivalence dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence La difficulté est que cette chaine de caractères n'est pas toujours positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" : En G2 et recopie --> G34 Matricielle (valider par ctrl+maj+entrée :)
Je me disais bien que c'était possible avec une formule!
Salutations.
-- lSteph
AV a écrit :
Pour répondre à ta question "...je cherchais ici une formule me permettant de tester si il existe dans chaque cellule de la colonne B une chaine de caractère ayant une équivalence dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence La difficulté est que cette chaine de caractères n'est pas toujours positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" : En G2 et recopie --> G34 Matricielle (valider par ctrl+maj+entrée :)
Je me disais bien que c'était possible avec une formule!
Salutations.
--
lSteph
AV a écrit :
Pour répondre à ta question
"...je cherchais ici une formule me permettant de tester si il existe dans
chaque cellule de la colonne B une chaine de caractère ayant une équivalence
dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence
La difficulté est que cette chaine de caractères n'est pas toujours positionnée
au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" :
En G2 et recopie --> G34
Matricielle (valider par ctrl+maj+entrée :)
Je me disais bien que c'était possible avec une formule!
Salutations.
-- lSteph
AV a écrit :
Pour répondre à ta question "...je cherchais ici une formule me permettant de tester si il existe dans chaque cellule de la colonne B une chaine de caractère ayant une équivalence dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence La difficulté est que cette chaine de caractères n'est pas toujours positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" : En G2 et recopie --> G34 Matricielle (valider par ctrl+maj+entrée :)
à y revenir après deux cafés c'était le contraire,
Valentine n'a pas de correspondance dans Valentin
Amicales salutations.
-- lSteph
Valentin a bien une correspondance dans la chaine Valentine
Jacky
Re Lsteph ,AV Quand je disais qu'il faut qu'il revienne, hein !
Tu vois que tu manques Alain, pourquoi tu nous boudes ?
-- Salutations JJ
"AV" a écrit dans le message de news:
Pour répondre à ta question "...je cherchais ici une formule me permettant de tester si il existe dans chaque cellule de la colonne B une chaine de caractère ayant une équivalence dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence La difficulté est que cette chaine de caractères n'est pas toujours positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" : En G2 et recopie --> G34 Matricielle (valider par ctrl+maj+entrée :)
Re Lsteph ,AV
Quand je disais qu'il faut qu'il revienne, hein !
Tu vois que tu manques Alain, pourquoi tu nous boudes ?
--
Salutations
JJ
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
OrlUBPiGJHA.3576@TK2MSFTNGP05.phx.gbl...
Pour répondre à ta question
"...je cherchais ici une formule me permettant de tester si il existe dans
chaque cellule de la colonne B une chaine de caractère ayant une
équivalence dans le tableau "Références" et, dans l'affirmative, de
renvoyer cette référence
La difficulté est que cette chaine de caractères n'est pas toujours
positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" :
En G2 et recopie --> G34
Matricielle (valider par ctrl+maj+entrée :)
Re Lsteph ,AV Quand je disais qu'il faut qu'il revienne, hein !
Tu vois que tu manques Alain, pourquoi tu nous boudes ?
-- Salutations JJ
"AV" a écrit dans le message de news:
Pour répondre à ta question "...je cherchais ici une formule me permettant de tester si il existe dans chaque cellule de la colonne B une chaine de caractère ayant une équivalence dans le tableau "Références" et, dans l'affirmative, de renvoyer cette référence La difficulté est que cette chaine de caractères n'est pas toujours positionnée au même endroit dans la chaine de caractères.........."
Avec ton classeur et la plage de référence nommée "Liste" : En G2 et recopie --> G34 Matricielle (valider par ctrl+maj+entrée :)