Recherche V multiple

Bonjour, tout d'abord désolé si je ne post pas dans la bonne catégorie.

Après de très longues recherches, j'ai trouvé plusieurs éléments de réponse mais que je n'ai jamais réussi à adapter pour mon problème.

Je suis autodidacte sur Excel depuis quelques moins et me voilà confronté à un problème.

Je vais essayer de faire simple et concis:

Je travail sur la redirection d'URL d'un site en refonte

Grace à la fonction =RECHERCHEV("*"&B3&"*";Col_A;1;FAUX), je réussis à ressortir de la colonne A une URL qui comprend les termes présent en B3 (entouré ou non d'autres termes).

Mon soucis est que cette fonction ne retourne que la première URL qui répond à cette condition, hors il se peut que d'autres URLs suivent cette condition, et j'aimerai les trouver pour ensuite les trier à la mains. (Aillant plusieurs centaines d'URLs à vérifier, je ne peux pas me permettre de faire cette action à la main, c'est pourquoi je recherche une solution par une fonction).

Un exemple:

Je recherche dans mes nouvelles URLs les URLs comprennant: "*"&lapin_nourriture&"*"

Ma fonction rechercheV m'affichera donc une adresse correspondante à la condition comme par exemple: lapin_nourriture_carotte

Mais il existe une autre URL plus loin dans ma liste: lapin_nourriture_salade qui elle ne remontera pas avec ma fonction RechercheV. Je cherche donc un moyen d'afficher ces 2 URLs correspondantes et non la première de la liste.

En espérant avoir été assez clair, je vous remercie par avance pour toute vos réponses.

Cordialement

Bonjour,

Il suffit d'utiliser la fonction personnalisée : RECHERCHEVM ci-dessous que j'ai développée.

1- l'insérer dans un module via l'éditeur VBA

2- utiliser une formule matricielle sur la plage de restitution

3- sans formule matricielle, seule la première valeur trouvée est restituée.

Elle s'utilise comme la fonction : RECHERCHEV sans le paramètre "FAUX" du fait qu'elle recherche une correspondance exacte.

Function RECHERCHEVM(argument As Variant, table As Range, indice As Integer)

    Dim i As Integer, i_tab As Integer
    Dim matching()
    ReDim matching(Range(Application.Caller.Address).Count)

    'initialisation
    RECHERCHEVM = CVErr(xlErrNA)

    'contrôle indice
    If indice > table.Columns.Count Then Exit Function

    'recherche correspondance exacte
    i = 0
    With table
        For i_tab = 1 To .Rows(.Row + .Rows.Count - 1).End(xlUp).Row
            If .Columns(1).Rows(i_tab) Like argument Then
                matching(i) = .Columns(indice).Rows(i_tab)
                i = i + 1
                If i > UBound(matching) Then Exit For
            End If
        Next i_tab
    End With
    If i > 0 Then RECHERCHEVM = matching

End Function

Merci pour ta réponse !

Est-ce que je peux avoir quelques détails sur ta fonction pour savoir comment l'utiliser et l'adapter pour mon cas s'il te plait ?

Permet elle de rechercher la présence d'une suite de caractère (type "*"&B2&"*") ou seulement une suite de caractère exacte et stricte ?

En te remerciant.

Lyfrac a écrit :

Est-ce que je peux avoir quelques détails sur ta fonction pour savoir comment l'utiliser et l'adapter pour mon cas s'il te plait ?

Pouvez-vous me dire ce que je dois détailler dans cette procédure:

1- insérer la fonction RECHERCHEVM dans un module via l'éditeur VBA

2- utiliser une formule matricielle sur la plage de restitution

je vous joins un exemple : formule matricielle appliquée sur la plage B7:E7.

Lyfrac a écrit :

Permet elle de rechercher la présence d'une suite de caractère (type "*"&B2&"*")

Oui., du fait de l'utilisation de l'opérateur "like" dans la fonction.

15exemple.xlsm (18.99 Ko)
thev a écrit :

Pouvez-vous me dire ce que je dois détailler dans cette procédure:

1- insérer la fonction RECHERCHEVM dans un module via l'éditeur VBA

2- utiliser une formule matricielle sur la plage de restitution

je vous joins un exemple : formule matricielle appliquée sur la plage B7:E7.

Je suis vraiment débutant en matière de formule matricielle et éditeur VBA. Désolé pour mon amateurisme (j'attaque le sujet avec un problème sûrement un peu trop relevé pour moi).

Votre exemple m'aide vraiment beaucoup à comprendre la formule, une dernière question (je l'espère) persiste, comment dérouler la formule matricielle en B7 de votre exemple pour que l'ensemble des résultats trouvés apparaisse sur C7, D7, E7 etc... ?

En vous remerciant encore une fois !

Pour entrer une formule matricielle :

1- sélectionner la plage, par exemple : B7:E7

2- appuyer sur Ctrl + Shift + Entrée

NB : La fonction doit être appliquée en natif sur une plage d'une ligne (B7:E7). Pour l'appliquer sur la plage d'une colonne, il faut alors utiliser la fonction "transpose". Voir plage B9:B15 dans l'exemple 2.

12exemple2.xlsm (19.32 Ko)

Merci pour votre réactivité !

J'ai réussi a obtenir tous les résultats que je souhaitais et donc à me débloquer sur ce travail !

Votre formule est vraiment très puissante et devrait m'être utile encore plusieurs fois plus tard !

Je vous remercie pour votre temps, votre patience et vos exemples qui m'ont permis de vraiment bien comprendre le fonctionnement de tout ça.

Bonne continuation et encore merci beaucoup !

Rechercher des sujets similaires à "recherche multiple"