Comparer 1 chaine de caractere d'une cellule par rapport plage [Résolu/Fermé]

Signaler
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016
-
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016
-
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

22 réponses

Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

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
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

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
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

je teste c'est peu etre ca
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
Re,

Comme cela ?

=SI(NB.SI(A2;"*"&E2&"*")=1;E2;"")
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

il ne faudrait pas seulement E2 mais genre une base de E2:E10
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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 ?
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

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"
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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

Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

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".
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

excellent tu as résumé simplement ce que je n'arrive pas à exprimer! :-)
je cherche et impossible de trouver sur des forums..
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

ok merci surtout que ma plage est d'une 60ène de lignes de références
c'est très sympa
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
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
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

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
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
Re,

Bon je regarde comment avec formule mais je pense qu'il faudra passer en VBA
Messages postés
23586
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 octobre 2020
6 421
Bonjour à tous,

une idée par formule : https://www.cjoint.com/?DCBnr2QO6v9

eric
Messages postés
14
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
14 janvier 2016

je teste ...