XL pour MAC Fonction recherche V avec contient

foxden2

XLDnaute Junior
Bonjour,

J'aimerais pouvoir renvoyer une valeur "colonne taux" d'un tableau (tableau 1) si une cellule (tableau 2) contient un terme présent dans le tableau de référence.
Je cherche la formule qui me permet en fonction de la présence d'une chaine de caractère d'aller chercher une valeur dans un tableau de référence.

Fichier excel en PJ

Tableau 1 de référenceTaux
Ananas
20%​
Poire
20%​
Pomme
10%​
Fraise
0%​
Myrtille
10%​
Tableau 2Taux cible
Je veux un ananas -> valeur a afficher par formule 20%
J'ai une poire blanche-> 20%
Un panier de fraise rouge-> 0%

Fichier plus parlant en PJ
 

Pièces jointes

  • Exemple.xlsx
    9 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Foxden,
En PJ un essai avec la fonction perso :
VB:
Function PourCent(Phrase$, Tableau As Range, Valeur As Range)
    Dim T, Tablo, Val, i%, j%
    T = Split(Phrase, " ")
    Tablo = Tableau
    Val = Valeur
    For i = 0 To UBound(T)
        For j = 1 To UBound(Tablo)
            If LCase(T(i)) = LCase(Tablo(j, 1)) Then
                PourCent = Val(j, 1)
                Exit Function
            End If
        Next j
    Next i
    PourCent = ""
End Function
La syntaxe est :
Code:
=PourCent(Phrase;Liste fruits;Liste taux)
 

Pièces jointes

  • Exemple (1).xlsm
    14.5 KB · Affichages: 10

foxden2

XLDnaute Junior
Bonjour Foxden,
En PJ un essai avec la fonction perso :
VB:
Function PourCent(Phrase$, Tableau As Range, Valeur As Range)
    Dim T, Tablo, Val, i%, j%
    T = Split(Phrase, " ")
    Tablo = Tableau
    Val = Valeur
    For i = 0 To UBound(T)
        For j = 1 To UBound(Tablo)
            If LCase(T(i)) = LCase(Tablo(j, 1)) Then
                PourCent = Val(j, 1)
                Exit Function
            End If
        Next j
    Next i
    PourCent = ""
End Function
La syntaxe est :
Code:
=PourCent(Phrase;Liste fruits;Liste taux)
Merci beaucoup !
Vous avez une idée juste en version formule sans VBA ce que ca pourrait donner ?
 

Cyril55

XLDnaute Nouveau
Salut sylvanu !

Je me suis permis de piquer ton exemple c'est magnifique ! Merci beaucoup !

je souhaites m'en servir sur la compta afin d'affecter au bon compte selon le libellé .

Seulement cela ne fonctionne pas sur 2 mots pouvez m'aider svp?

je vous joint l'exemple ,il pourrais y avoir plus de 300 valeurs a affecter...

Bonne journée !
 

Pièces jointes

  • Exemple (1) (2).xlsm
    15.6 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cyril,
Je me suis permis de piquer ton exemple
C'est fait pour ça : Partager. :)
Le contexte est différent, aussi en PJ j'ai ré écrit la fonction :
VB:
Function PourCent(Phrase$, Tableau As Range, Valeur As Range)
    Dim T, Tablo, Val, i%
    Tablo = Tableau: T = Valeur
    For i = 1 To UBound(Tablo)
        If InStr(1, LCase(Phrase), LCase(Tablo(i, 1))) > 0 Then
            PourCent = T(i, 1)
            Exit Function
        End If
    Next i
    PourCent = ""
End Function
Même syntaxe que précédemment.
 

Pièces jointes

  • Exemple (1) (2).xlsm
    14.4 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour foxden2, sylvanu, Cyril55,

Formule matricielle en B11 pour chacun des 2 fichiers de ce fil :
Code:
=SIERREUR(INDEX(B$1:B$7;PETITE.VALEUR(SI(ESTNUM(CHERCHE(A$3:A$7;A11));LIGNE(A$3:A$7));1));"")
à valider par Ctrl+Maj+Entrée et tirer vers le bas.

A+
 

Pièces jointes

  • Exemple(2).xlsx
    10.4 KB · Affichages: 1
  • Exemple(1).xlsx
    10.3 KB · Affichages: 1

Discussions similaires

Réponses
16
Affichages
448
Réponses
13
Affichages
479