Fonction FILTRE - valeur cherchée = mot d'une chaîne de caractères

Bonjour,

Je souhaiterai créer un ficher avec une cellule dans laquelle je rentre un mot.

Ce mot est alors cherché dans une colonne d'un autre fichier. Pour chaque ligne de cette colonne qui contient ce mot dans sa chaine de caractère, je souhaiterai rechercher la valeur de la cellule de la colonne précédente (sur cette même ligne). J'aimerais alors afficher tous les résultats différents / uniques trouvés.

La fonction FILTRE dynamique matricielle répond parfaitement à ce besoin sauf qu'elle ne fonctionne que si le mot entré = la chaîne de caractères de la cellule. Si le mot entré n'est qu'une partie de la chaîne de caractère, cela ne fonctionne plus.

(J'ai essayé de mettre "*"&macellulerecherchée&"*". J'ai ausis essayé index/equiv/décaler. J'ai essayé RechercheV. J'ai essayé de trouver les numéros des lignes des résultats de nb.si ... : je n'ai pas réussi).

Fichier exemple joint. J'ai mis des commentaires sur les cellules colorées du premier onglet.

Merci à vous.

463exemple.xlsx (21.29 Ko)

Bonjour,

Après avoir mis les données sous forme de tableau :

=FILTRE(Table1[Nom validé/retenu];ESTNUM(CHERCHE(Feuil1!B1;Table1[Noms vernaculaires FR concaténés])))

Cdlt.

Bonjour le fil, bonjour le forum,

Une proposition VBA avec l'événementielle Change a placer dans le composant onglet Feuil1(Feuil1) :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim T As Integer 'déclare la variable T (Total)

If Target.Address <> "$B$1" Then Exit Sub 'si le changement a lieu ailleurs que dans B1, sort de la procédure
Range("A3").CurrentRegion.Offset(0, 1).ClearContents 'efface les anciennes données
Set O = Worksheets("Feuil3") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    If InStr(1, TV(I, 2), Target.Value, vbTextCompare) > 0 Then 'si le texte de B1 est contenu dans la donnée ligne I colonne 2 de TV
        'définit la cellule de destination DEST
        Set DEST = IIf(Range("B3").Value = "", Range("B3"), Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0))
        T = T + 1 'incrémente le total T
        DEST.Value = TV(I, 1) 'renvoie la donnée ligne I colonne 1 de TV dans DEST
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Range("C3").Value = T 'renvoie le total T dans C3
End Sub

Ca marche du tonnerre ! Merci. Pour la formule excel, j'ai du rajouter UNIQUE() =D

Rechercher des sujets similaires à "fonction filtre valeur cherchee mot chaine caracteres"