Comparer 1 chaine de caractere d'une cellule par rapport plage
Résolu
joaline62
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
joaline62 Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
joaline62 Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais comparer une chaine de caractere trouvé dans une cellule (B1)par rapport à une plage (A1:A10) et renvoyer la valeur dans la cellule (C1) si ce mot est retrouvé
Exemple:
COLONNEA | COLONNEB | COLONNEC
1 ARDITI | Me truc | <CASE VIDE>
2 GIRARDOT | mme dere |<CASE VIDE>
3 FUNES | Mme bardot |<CASE VIDE>
4 POLO | Mr DArditi | ARDITI
5 JACQUES | anne arditi | ARDITI
6 <CASE VIDE>| sophie bardot |<CASE VIDE>
7<CASE VIDE>| Melle chapeau |<CASE VIDE>
8<CASE VIDE>| Mrs GIRARDOT | GIRARDOT
9<CASE VIDE>| truc |<CASE VIDE>
10<CASE VIDE>| Girardot | GIRARDOT
11<CASE VIDE>| Me trac |<CASE VIDE>
12<CASE VIDE>| Louis de Funes | FUNES
13<CASE VIDE>| Jacques chancel | JACQUES
14<CASE VIDE>| Girardot jacques | JACQUES
15<CASE VIDE>| sophie jacques | JACQUES
J'ai ca
=(SOMME(ESTNUM(CHERCHE(SI($A$1:$A$10<>"";$A$1:$A$10);B1))*LIGNE($A$1:$A$10))>0)*1
ca marche mais ca me renvoie un 1 ou un 0 en colonne c actuellement.
je voudrais plutot la "valeur" en colonne c. et si possible plutôt une formule que un code vba.
merci d'avance
Auriez vous une idée
je voudrais comparer une chaine de caractere trouvé dans une cellule (B1)par rapport à une plage (A1:A10) et renvoyer la valeur dans la cellule (C1) si ce mot est retrouvé
Exemple:
COLONNEA | COLONNEB | COLONNEC
1 ARDITI | Me truc | <CASE VIDE>
2 GIRARDOT | mme dere |<CASE VIDE>
3 FUNES | Mme bardot |<CASE VIDE>
4 POLO | Mr DArditi | ARDITI
5 JACQUES | anne arditi | ARDITI
6 <CASE VIDE>| sophie bardot |<CASE VIDE>
7<CASE VIDE>| Melle chapeau |<CASE VIDE>
8<CASE VIDE>| Mrs GIRARDOT | GIRARDOT
9<CASE VIDE>| truc |<CASE VIDE>
10<CASE VIDE>| Girardot | GIRARDOT
11<CASE VIDE>| Me trac |<CASE VIDE>
12<CASE VIDE>| Louis de Funes | FUNES
13<CASE VIDE>| Jacques chancel | JACQUES
14<CASE VIDE>| Girardot jacques | JACQUES
15<CASE VIDE>| sophie jacques | JACQUES
J'ai ca
=(SOMME(ESTNUM(CHERCHE(SI($A$1:$A$10<>"";$A$1:$A$10);B1))*LIGNE($A$1:$A$10))>0)*1
ca marche mais ca me renvoie un 1 ou un 0 en colonne c actuellement.
je voudrais plutot la "valeur" en colonne c. et si possible plutôt une formule que un code vba.
merci d'avance
Auriez vous une idée
A voir également:
- Excel comparaison chaine de caractère
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Liste déroulante excel - Guide
- Caractere speciaux - Guide
- Word et excel gratuit - Guide
22 réponses
Bonjour,
Cette formule ne convient pas, et c'est normal qu'elle te retourne 0 ou 1, oublie la et explique exactement ce que tu veux faire
Cette formule ne convient pas, et c'est normal qu'elle te retourne 0 ou 1, oublie la et explique exactement ce que tu veux faire
en fait c'est la fonction recherchev ni plus ni moins ou la "valeur_recherchée" serait une chaine de caractere contenu dans une cellule et pas la cellule elle meme
Exple:je veux trouver "Art 512" dans une cellule qui contient
"Article:R.4226-5-R.4226-7 Norme:C 15-100 Art 512-522"
le texte recherché n'etant pas toujours placé au meme endroit
la fonction recherchev ferait le reste ensuite
Exple:je veux trouver "Art 512" dans une cellule qui contient
"Article:R.4226-5-R.4226-7 Norme:C 15-100 Art 512-522"
le texte recherché n'etant pas toujours placé au meme endroit
la fonction recherchev ferait le reste ensuite
Re,
toujours pas très clair, mais d'après ce que je comprends, cette formule recherche dans la chaine en A2 la valeur Art 512 qui peut être directement saisie dans la formule à la place "&E2&" comme cela "*Art 512*" ou placée dans une cellule exemple en E2
=SI(NB.SI(A2;"*"&E2&"*")=1;A2;"")
cette formule renvoie la chaine si la valeur est trouvée dans la chaine
pour l'exploiter avec une RECHERCHEV comme je crois comprendre
reste à savoir si la recherche doit se faire à partir de la chaine ou à partir de la valeur trouvée dans la chaine
toujours pas très clair, mais d'après ce que je comprends, cette formule recherche dans la chaine en A2 la valeur Art 512 qui peut être directement saisie dans la formule à la place "&E2&" comme cela "*Art 512*" ou placée dans une cellule exemple en E2
=SI(NB.SI(A2;"*"&E2&"*")=1;A2;"")
cette formule renvoie la chaine si la valeur est trouvée dans la chaine
pour l'exploiter avec une RECHERCHEV comme je crois comprendre
reste à savoir si la recherche doit se faire à partir de la chaine ou à partir de la valeur trouvée dans la chaine
il ne me faudrait plutot la valeur de E2 retrouvée dans la chaine et pas la chaine elle meme
mais pour le reste c'est ca
mais pour le reste c'est ca
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
que veux tu dire par "pas seulement E2 mais genre une base de E2:E10"
tu veux l'adresse de la ou des cellules qui contient la valeur cible, c'est cela ?
que veux tu dire par "pas seulement E2 mais genre une base de E2:E10"
tu veux l'adresse de la ou des cellules qui contient la valeur cible, c'est cela ?
Pour essayer de faire simple dans l'explication:
1-Ma chaine de caractère en "A2":
"Article:R.4226-5-R.4226-7 Norme:C 15-100 Art 512-522"
2-Une matrice en E2:E10 contenant des "mots clés" par ex:
E2: Art 501
E3: Art501
E4: ELE13/
E5: Art 512
E6: etc
3-Si la formule trouve en "A2" et en "E2:E10" (ici en "E5") la même valeur
("Art 512" ici), la formule renvoi la valeur "Art 512"
1-Ma chaine de caractère en "A2":
"Article:R.4226-5-R.4226-7 Norme:C 15-100 Art 512-522"
2-Une matrice en E2:E10 contenant des "mots clés" par ex:
E2: Art 501
E3: Art501
E4: ELE13/
E5: Art 512
E6: etc
3-Si la formule trouve en "A2" et en "E2:E10" (ici en "E5") la même valeur
("Art 512" ici), la formule renvoi la valeur "Art 512"
Re,
Ce n'est pas possible ou tu as fait une erreur dans tes explications, si en A2 tu as Article:R.4226-5-R.4226-7 Norme:C 15-100 Art 512-522, il est impossible d'avoir ta formule dans la même cellule A2 qui te renvoie Art 512
Ce n'est pas possible ou tu as fait une erreur dans tes explications, si en A2 tu as Article:R.4226-5-R.4226-7 Norme:C 15-100 Art 512-522, il est impossible d'avoir ta formule dans la même cellule A2 qui te renvoie Art 512
Oui je me suis mal exprimé: ma formule serait en "B2" par exple:
Ce que je veux dire c'est dans la chaine situé en "A2".
Ce que je veux dire c'est dans la chaine situé en "A2".
Re,
alors je crois commencer à comprendre, tu as en E2:E10 une liste de références et colonne A tes chaines qui peuvent contenir une des référence définie dans ta plage E2:E10, et en colonne B tu veux extraire la référence cible rencontrée.
C'est cela
alors je crois commencer à comprendre, tu as en E2:E10 une liste de références et colonne A tes chaines qui peuvent contenir une des référence définie dans ta plage E2:E10, et en colonne B tu veux extraire la référence cible rencontrée.
C'est cela
excellent tu as résumé simplement ce que je n'arrive pas à exprimer! :-)
je cherche et impossible de trouver sur des forums..
je cherche et impossible de trouver sur des forums..
Re,
alors imbrication de formule basique =SI(NB.SI(A2;"*"&E2&"*")=1;E2;"") ce qui donne une imbrication quelque peu usine à gaz du genre
=SI(NB.SI(A2;"*"&$E$2&"*")=1;$E$2;SI(NB.SI(A2;"*"&$E$3&"*")=1;$E$3;SI(NB.SI(A2;"*"&$E$4&"*")=1;$E$4;SI(NB.SI(A2;"*"&$E$5&"*")=1;$E$5;SI(NB.SI(A2;"*"&$E$6&"*")=1;$E$6;"")))))
tu peux imbriquer jusqu'à 7 conditionnelles et tu relances une cascade avec &
si tu as 10 références équilibre la formule avec 5 conditionnelles et tu relances
=SI(NB.SI(A2;"*"&$E$2&"*")=1;$E$2;SI(NB.SI(A2;"*"&$E$3&"*")=1;$E$3;SI(NB.SI(A2;"*"&$E$4&"*")=1;$E$4;SI(NB.SI(A2;"*"&$E$5&"*")=1;$E$5;SI(NB.SI(A2;"*"&$E$6&"*")=1;$E$6;"")))))&SI(NB.SI(A2;"*"&$E$7&"*")=1;$E$7;SI(NB.SI(A2;"*"&$E$8&"*")=1;$E$8;SI(NB.SI(A2;"*"&$E$9&"*")=1;$E$9;SI(NB.SI(A2;"*"&$E$10&"*")=1;$E$10;SI(NB.SI(A2;"*"&$E$11&"*")=1;$E$11;"")))))
je regarde s'il est possible de faire plus court
alors imbrication de formule basique =SI(NB.SI(A2;"*"&E2&"*")=1;E2;"") ce qui donne une imbrication quelque peu usine à gaz du genre
=SI(NB.SI(A2;"*"&$E$2&"*")=1;$E$2;SI(NB.SI(A2;"*"&$E$3&"*")=1;$E$3;SI(NB.SI(A2;"*"&$E$4&"*")=1;$E$4;SI(NB.SI(A2;"*"&$E$5&"*")=1;$E$5;SI(NB.SI(A2;"*"&$E$6&"*")=1;$E$6;"")))))
tu peux imbriquer jusqu'à 7 conditionnelles et tu relances une cascade avec &
si tu as 10 références équilibre la formule avec 5 conditionnelles et tu relances
=SI(NB.SI(A2;"*"&$E$2&"*")=1;$E$2;SI(NB.SI(A2;"*"&$E$3&"*")=1;$E$3;SI(NB.SI(A2;"*"&$E$4&"*")=1;$E$4;SI(NB.SI(A2;"*"&$E$5&"*")=1;$E$5;SI(NB.SI(A2;"*"&$E$6&"*")=1;$E$6;"")))))&SI(NB.SI(A2;"*"&$E$7&"*")=1;$E$7;SI(NB.SI(A2;"*"&$E$8&"*")=1;$E$8;SI(NB.SI(A2;"*"&$E$9&"*")=1;$E$9;SI(NB.SI(A2;"*"&$E$10&"*")=1;$E$10;SI(NB.SI(A2;"*"&$E$11&"*")=1;$E$11;"")))))
je regarde s'il est possible de faire plus court
Re,
60 références ça va être chaud sans VBA, je regarde mais en attendant teste ma formule sur 10 références en E2:E11
60 références ça va être chaud sans VBA, je regarde mais en attendant teste ma formule sur 10 références en E2:E11
ca marche impec
c'est exactement ca
je voulais être sur qu'on ne puisse le faire
cependant mes 60 références je pourrai peut être regrouper plusieurs dans une meme cellule séparée par un ";" par exemple. Pour moi ca ne serait pas génant.
mais ton truc marche en effet
c'est exactement ca
je voulais être sur qu'on ne puisse le faire
cependant mes 60 références je pourrai peut être regrouper plusieurs dans une meme cellule séparée par un ";" par exemple. Pour moi ca ne serait pas génant.
mais ton truc marche en effet