Si mot dans cellule et dans liste, alors donner le mot

Bonjour,

Je sollicite votre aide pour réussir à faire ressortir un mot qui serait dans une cellule et dans une liste.

J'explique : en A1 une phrase : "le soleil est jaune"

en colonne B une liste (ciel, terre, soleil).

Je voudrais avoir en C1 la formule permettant de faire ressortir le mot "soleil" qui est à la fois dans la cellule et dans la liste colonne B.

Et pouvoir copier la formule vers le bas car plusieurs phrases différentes à traiter ainsi qu'une liste d'une centaine de mots différents.

Je vous remercie par avance.

Arthur

Bonjour le forum,

=SI(NB.SI(A1;"*soleil*")=NB.SI($B$1:$B$100;"soleil");"soleil";"")

Bonjour,

Je vous remercie pour votre réponse.

Pour préciser ma demande, toutes les phrases sont différentes. J'aimerais pouvoir faire ressortir un mot s'il se trouve à la fois dans la cellule et dans ma liste.

En gros une formule comme ça : =SI(SOMMEPROD((NB.SI(A1;"*"&B1:B100&"*")));"*";"") mais que ça me sorte le mot à la place d'une *.

Merci beaucoup.

Arthur

Bonjour,

le mieux serait d'utiliser les regexp

peux-tu nous mettre un exemple dans un fichier ?

Bonjour,

J'ai fais un fichier type ci joint.

Merci beaucoup,

Arthur

5exemple.xlsx (39.59 Ko)

est-ce qu'il peut y avoir plusieurs mots dans une phrase

donc au cas où ...

7exemple.xlsm (15.25 Ko)

Merci beaucoup,

Pourriez-vous m'aider à réaliser cela où c'est assez compliqué ?

Le souci c'est que j'aurai besoin d'avoir le mot recherché dans une liste. Je dois en effet transformer ce mot en code avec une recherchev avant une intégration dans un logiciel.

Merci encore,

Arthur

Bonjour Arthur,

Pourriez-vous m'aider à réaliser cela où c'est assez compliqué ?

D'abord, tu ne m'as pas répondu : faut-il détecter tous les termes ou seulement le premier trouvé ?

Il faut créer cette fonction dans un module VBA (alt+F11, insérer module)

Function ChercheChaineDansListe(chaine, liste)
    ChercheChaineDansListe = ""
    Set obj = CreateObject("vbscript.regexp")
    obj.pattern = "[a-zA-Zéèêç]+"
    obj.Global = True
    Set a = obj.Execute(chaine)
    For i = 0 To a.Count - 1
        Set Trouve = liste.Find(what:=a(i), LookAt:=xlWhole)
        If Not Trouve Is Nothing Then
            ChercheChaineDansListe = a(i)
            Exit Function
        End If
    Next
End Function

mais s'il s'agit de remplacer le terme trouvé par un autre on peut aussi l'inclure dans la fonction ...

6exemple.xlsm (16.24 Ko)

La version avec le remplacement du mot (tous les mots trouvés appartenant à la liste)

Voir l'onglet liste

Function RemplaceMot(chaine, liste)
    RemplaceMot = chaine
    Set obj = CreateObject("vbscript.regexp")
    obj.pattern = "[a-zA-Zéèêç]+"
    obj.Global = True
    Set a = obj.Execute(chaine)
    For i = 0 To a.Count - 1
        Set Trouve = liste.Find(what:=a(i), LookAt:=xlWhole)
        If Not Trouve Is Nothing Then
            RemplaceMot = Replace(RemplaceMot, a(i), Trouve.Offset(0, 1))
        End If
    Next
End Function
6exemple.xlsm (16.70 Ko)

Merci Steelson pour la réponse,

faut-il détecter tous les termes ou seulement le premier trouvé ?

Plusieurs termes peuvent être dans la liste et il faudrait pouvoir les séparer effectivement.

Je vais essayer, merci beaucoup en tout cas !

Arthur

Plusieurs termes peuvent être dans la liste et il faudrait pouvoir les séparer effectivement.

prend alors la dernière proposition !

Dernière petite question :

Ai-je la possibilité de copier/coller ce code sur Google Slides ou le code change un peu ?

En tout cas merci pour cette seconde proposition, je vais tacher de savoir l'utiliser !

je ne sais pas du tout !

essaie ...

Rechercher des sujets similaires à "mot liste donner"