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
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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 FunctionMerci 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.
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Pouvez-vous me dire ce que je dois détailler dans cette procédure: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 ?
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.
Oui., du fait de l'utilisation de l'opérateur "like" dans la fonction.Lyfrac a écrit :Permet elle de rechercher la présence d'une suite de caractère (type "*"&B2&"*")
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 !
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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.
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 !