Microsoft 365 RechercheV avec clé partielle

julien91080

XLDnaute Occasionnel
Bonjour,

je cherche à récupérer des valeurs à la manière d'un recherchev sauf que je veux que la clé de recherche serait comprise dans une chaine de caractère qui peut varier.

Tableau1

clé​
valeur​
to​
1​
ta​
2​
mo​
3​


je veux donc que le code cherche les valeurs de la 1ere colonne (clé) peut importe où elle se situe dans la chaine pour renvoyer la valeur.
Par exemple:
les toilettes​
=1​
la tante​
=2​
Etoiles​
=1​
des motards​
=3​


Le rechercheV avec l'indicateur "VRAI" ne marche pas, je ne trouve pas de solution.

je précise que la liste des clé peut varier et être beaucoup plus importante que ces 3 exemples.

Merci pour votre aide.

Cordialement,

julien
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour julien91080, Hasco, JHA,

Voyez le fichier joint et cette fonction VBA :
VB:
Option Compare Text 'la casse est ignorée

Function RechercheCle(R As Range, txt$)
Dim tablo, mini%, i&, pos%
tablo = R.Resize(, 2) 'matrice, plus rapide
mini = 32767
For i = 1 To UBound(tablo)
    pos = InStr(txt, tablo(i, 1))
    If pos > 0 And pos < mini Then
        mini = pos
        RechercheCle = tablo(i, 2) '1ère occurrence dans le texte
    End If
Next
End Function
Le code doit être placé impérativement dans un module standard.

Formule en G2 =RechercheCle(Tableau1;F2)

Tableau1 est un tableau structuré, le nombre des clés n'est pas limité.

A+
 

Pièces jointes

  • RechercheCle(1).xlsm
    17.4 KB · Affichages: 7

julien91080

XLDnaute Occasionnel
Bonjour et merci pour vos retours que je vais tester.

veuillez trouver un fichier qui reprends mon idée:

- Onglet base: reprends différentes lignes avec des descriptifs d'anomalies. En colonne G, je veux récupérer le "typage" de l'anomalie dans mon autre onglet
- Onglet transco : reprends une partie du descriptif de l'onglet base mais sans les signes distinctifs (matricules, dates, chiffres...) avec le typage de chaque anomalie.


La formule en colonne G doit être capable de trouver dans l'onglet transco à partir d'une partie du texte le bon typage:


Onglet Base:
Descriptifcatégorie
Aucune entrée trouvée dans la table DEPAR pour le critère : code = '91'
Onglet transco:
DescriptifCatégorie anomalie
Aucune entrée trouvée dans la table DEPAR pour le critère : code =Code table
n'existe pas dans la table DEPAR.Code table
La date "Date fin deuxième période essai" doit être supérieure ou égale à la date "Fin Période essai".Période d'essai
Onglet Base:
Descriptifcatégorie
Aucune entrée trouvée dans la table DEPAR pour le critère : code = '91'Code table


J'espère avoir été plus clair.

Merci pour votre aide.

Cordialement,

Julien
 

Pièces jointes

  • Fichier ANO_test.xlsx
    35.9 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour julien91080,

A priori il suffit d'utiliser la fonction VBA de mon post #7.

Voyez le fichier .xlsm joint et la formule en G2 =RechercheCle(Tableau1;F2)

Tableau1 étant le nom du tableau structuré de la feuille "transco".

A+
 

Pièces jointes

  • Fichier ANO_test.xlsm
    50.3 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Une proposition par power query après avoir transformé vos tableau en tableaux structurés.

Dans le tableau résultat j'ai laissé toutes les colonnes, mais vous pouvez ne sélectionner que les une ou deux dernières dans la requête.

La requête est sensible à la casse "La casse"<>"la casse", on peut changer ce comportement.

Si vous pouviez donner des exemples "propres" (lignes en double dans transco, espaces en début de cellule) ce serai mieux

A vous la vérification des 654 lignes.

cordialement
 

Pièces jointes

  • Fichier ANO_test.xlsx
    71.7 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Voici les différances entre les résultats des posts #11 et #12.

En cellules G163 et G167 le post #12 utilise dans la feuille "transco" la ligne 20 alors que le post #11 utilise la ligne 35 : en A35 il y a un espace devant le texte alors qu'il n'y en a pas en A20. Si l'on supprime cet espace les résultats sont les mêmes.

Plage G171:G654 du post #11, pour enlever les valeurs zéro déclarer la fonction As String :
VB:
Function RechercheCle(R As Range, txt$) As String
 

Discussions similaires

Réponses
10
Affichages
417

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander