Rechercher 1 élément de liste dans 1 cellule

Bsr,

Je sais chercher 1 élément de liste dans une cellule :

=SIERREUR(TROUVE("ABCD";L3;1);0)

Je peux donc reproduire cette recherche avec tous les éléments d'une liste :

=SIERREUR(TROUVE("EFG";L3;1);0)
=SIERREUR(TROUVE("HI";L3;1);0)
=SIERREUR(TROUVE("JKL";L3;1);0)

etc...

Je voudrais simplifier le tout par une recherche qui réponde VRAI si l'un de ces éléments est présent dans la cellule L3.

Donc créer une liste (ou un tableau ou autre) ("ABCD";"EFG";"HI";"JKL") et faire une recherche d'un des éléments de cette liste dans la cellule cible pour simplifier ma macro par simple ajout d'un élément dans la liste plutôt que d'ajouter une ligne entière de code.

Merci de votre aide

En farfouillant un peu partout, j'ai trouvé une solution qui correspond bien à ma demande :

Sub RechercheMultiple()
    Dim Cible As String

    Cible = "engrenage,reducteur,courroie"

    If InStr(Cible, Range("A1")) = 0 Then
        MsgBox "Non"
    Else
        MsgBox "Oui"
    End If
End Sub    

Merci de m'avoir lu.

Grrr,

ça ne marche que si la cellule cible ne contient que l'élément recherché.

Ce n'est apparemment pas la fonction

InStr ...

qu'il faut utiliser...

J'en reviens donc à ma première question :

Comment rechercher 1 l'élément d'une liste dans la chaîne de la cellule cible ?

Bonsoir,

une proposition via une fonction personnalisée.

appel de la fonction

=recherchemultiple(r,cible)

r est la cellule dans laquelle on recherche la cible

cible est une liste de chaines de caractères (séparées par une virgule) à rechercher dans r

exemple

=recherchemultiple(A1,"ABCD,EF,GH,IJK")

Function recherchemultiple(r, cible)
    Dim t
    t = Split(cible, ",")
    For Each s In t
        If r Like "*" & s & "*" Then recherchemultiple = True: Exit Function
    Next
    recherchemultiple = False
End Function

Bon,

Je crois que cette fois-ci est la bonne.

Sub RechercheMultiple_2()
    T1 = ""
    T2 = ""
    Range("L" & N).Select
    T1 = ActiveCell.Value
    Range("V" & N).Select
    T2 = ActiveCell.Value

    Texte = T1 & T2

    If Texte Like "*ABC*" Or Texte Like "*DEF*" Or Texte Like "*GHI*" Or Texte Like "*JKL*" Or Texte Like "*MNO*" Then
        MsgBox "Vrai"
    Else
        MsgBox "Faux"
    End If
End Sub
h2so4 a écrit :

Bonsoir,

une proposition via une fonction personnalisée.

appel de la fonction

=recherchemultiple(r,cible)

r est la cellule dans laquelle on recherche la cible

cible est une liste de chaines de caractères (séparées par une virgule) à rechercher dans r

exemple

=recherchemultiple(A1,"ABCD,EF,GH,IJK")

Function recherchemultiple(r, cible)
    Dim t
    t = Split(cible, ",")
    For Each s In t
        If r Like "*" & s & "*" Then recherchemultiple = True: Exit Function
    Next
    recherchemultiple = False
End Function

Bjr,

Merci pour cette fonction à laquelle je n'avais pas pensé et qui correspond tout à fait à ma recherche.

Cependant, je n'arrive pas à la faire fonctionner.

Si je code avec une VIRGULE, j'ai un message d'erreur de codage.

=recherchemultiple(L2,"ABCD,EF,GH,IJK")

Si je code avec un POINT-VIRGULE,

=recherchemultiple(L2;"ABCD,EF,GH,IJK")

elle me renvoie

#NOM?

Désolé pour le bruit,

Je n'avais pas récupéré le résultat dans une variable.

ça fonctionne parfaitement.

Merci

Rechercher des sujets similaires à "rechercher element liste"