XL 2016 Comparer le texte contenu dans deux cellules

leGlauque

XLDnaute Nouveau
Bonjour à tous,

Je cherche une formule qui me permettrait de comparer le texte contenu dans deux cellules, afin de savoir si des éléments d’un l’une se retrouve dans l’autre, et vice-versa.
Le résultat renverrait un « 1 » dans le cas positif, et un « 0 » dans le cas négatif.

Mon projet est de savoir si deux planètes se trouvent sur la même route hyperspatiale (oui, je sais).

Par exemple :
Planètes
Routes hyperspatiales
Coruscant​
Corelienne​
Arkanis​
Triellus, Corelienne​

En détectant que ces deux planètes ont une route en commun, la formule me renverrait la réponse « 1 ».

La difficulté, c’est qu’il faut « entrer » dans la cellule pour détecter le texte, et qu’elles ne sont pas toujours identiques.
Les formules de type EXACT, CHERCHE et TROUVE ne sont donc pas adaptés.

Est-ce que cela vous semble possible ?

Je vous remercie par avance grandement pour vos lumières.

Belle journée,

l.G.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour LeGlauque,
Avec un seul exemple, c'est difficile d'apporter une réponse correcte.
En se limitant à votre exemple, on peut faire :
VB:
=NB.SI(B2;"*"&B3&"*")+NB.SI(B3;"*"&B2&"*")
Mais ce ne sera surement pas valable pour un autre ex. Dans cette formule il faut qu'une au moins des cellules ne comporte qu'un mot qu'on retrouve dans la seconde cellule.
 

Pièces jointes

  • Classeur3.xlsx
    8.5 KB · Affichages: 18

leGlauque

XLDnaute Nouveau
Merci beaucoup pour vos réponses,

Alors effectivement, je me rends bien compte que c'est compliqué...
Le souci avec vos deux propositions, c'est que dès que "Corelienne" n'est plus toute seule dans la 1ère case, la formule renvoie "Faux".

Je peux décliner l'exemple sur quelque chose de + trivial.
Par exemple : repérer entre deux cellule s'il y a un (ou plusieurs) ingrédient(s) identiques.
Potage | Poireaux, Patates, Carottes, Navet
Tartiflette | Patates, Reblochon, Lardons, Oignons
Ca match, car il y a Patates dans les deux cellules → résultat "Vrai" ou "1"

J'espère que c'est un peu + clair.

Encore merci,

l.G.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
sans connaitre la longueur des deux phrases ni le nombre d'éléments, je pense que par formules, cela va être difficile;
En PJ un essai avec une fonction perso :
VB:
Function ChercheP(V1, V2)
    Dim T, i%
    Application.Volatile
    V1 = LCase(V1): V2 = LCase(V2)
    V1 = Replace(V1, " ", ""): T = Split(V1, ",")
    For i = 0 To UBound(T)
        If V2 Like "*" & T(i) & "*" Then ChercheP = 1
    Next i
End Function
 

Pièces jointes

  • Classeur1 V2.xlsm
    15.4 KB · Affichages: 5
Dernière édition:

R@chid

XLDnaute Barbatruc
Supporter XLD
Bonjour @ tous,
sur le fichier du post #5 de l'ami Sylvanu que je salue au passage, une formule matricielle, en D2 :
VB:
=SI(MOD(LIGNES($2:2);2)=1;SIGNE(NB(CHERCHE(FILTRE.XML("<a><b>"&SUBSTITUE(B2;",";"</b><b>")&"</b></a>";"//b");TRANSPOSE(FILTRE.XML("<a><b>"&SUBSTITUE(B3;",";"</b><b>")&"</b></a>";"//b")))));"")
@ valider par Ctrl+Maj+Entrée
@ tirer vers le bas


Cordialement
 

leGlauque

XLDnaute Nouveau
Merci infiniment pour vos réponses !
Vous êtes des génies !

Je me suis permis d'ajouter un petit "SI" avant la formule au cas où les deux cellules sont vides (auquel cas cela renvoyait en toute logique un "1").

Encore 1000 mercis !

l.G.
 

leGlauque

XLDnaute Nouveau
Sur un autre forum, un utilisateur m'a proposé cette formule là :

Function Detecter(Liste_1, Liste_2) As Long
Dim i As Long, j As Long
Chaine_1 = "," & Replace(Liste_1, " ", "", 1) & ","
Chaine_2 = "," & Replace(Liste_2, " ", "", 1) & ","

Liste_1 = Split(Chaine_1, ",")
Liste_2 = Split(Chaine_2, ",")
For i = 1 To UBound(Liste_1)
If Liste_1(i) <> "" Then
For j = 1 To UBound(Liste_2)
If Liste_1(i) = Liste_2(j) Then Nb = Nb + 1
Next j
End If
Next i
Detecter = Nb
End Function

Qu'en pensez-vous ?

Belle journée,

l.G.
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 195
Membres
112 680
dernier inscrit
AKDS