XL 2016 recherchev rétif

Tontontonio

XLDnaute Nouveau
Bonjour à toutes et à tous,

je cherche à construire des réferences à partir des données de la feuille "liste" et de leur correspondance dans la feuille "BIBLI". avec la formule suivante:
=INDEX('BIBLI POUR REF'!$E$1:$E$14;EQUIV(FAUX; ESTERREUR( CHERCHE('BIBLI POUR REF'!$D$1:$D$14;A1)); 0)) ça fonctionne sur les colonnes B et D de la feuille "REF".
mais pas la colonne C dans laquelle je souhaiterai voir apparaître le numéro correspondant à la pierre.
la formule me renvoie la valeur de "citrine" lorsque j'attend celle de "citrine-cognac". j'ai donc tenté de remplacer les tirets par des %. mais rien à faire .
j'ai essayé REHERCHEV, et même punition.
les formats de cellule sont les mêmes, j'ai testé format texte et format standard, idem.
je ne sais plus quoi faire.
quelqu'un aurait-il une solution?
bonne journée,
Tonio.
 

Pièces jointes

  • ESSAIS.xlsx
    47.1 KB · Affichages: 41
Solution
Bonjour à tous,

Un essai avec une fonction personnalisée en VBA:
=CherchePierre(Bijou ; ListePierreCode )
  • avec bijou le nom du bijou (exemple A1)
  • avec ListePierre la plage des pierres et codes (exemple BIBLI!A$1:B$71)
Le code est dans module1 :
VB:
Function CherchePierre(ByVal Bijou As String, ListePierreCode As Range)
Dim t, i&, tail&, idx&
   t = ListePierreCode
   For i = 1 To UBound(t)
      If InStr(1, Bijou, t(i, 1), vbTextCompare) Then
         If Len(t(i, 1)) > tail Then tail = Len(t(i, 1)): idx = t(i, 2)
      End If
   Next i
   If idx > 0 Then CherchePierre = idx Else CherchePierre = CVErr(xlErrNA)
End Function

Il semblerait que les "jaspe" soient OK.
attention aux accents présents sur une...
E

Exl-Noob

Guest
Il y a une solution très simple en fait.
Modifie la formule pour chercher les correspondances exactes :
{=INDEX(Tableau1[Colonne2];EQUIV(1;EQUIV("*"&Tableau1[Colonne1]&"*";[@Nom];0);0))}

Et en ajoutant un espace après les mots utilisés dans une forme composé on les isole dans la recherche avec joker.
Transforme "Jaspe" en "Jaspe " dans ta feuille BIBLI et tu n'auras plus d'erreur.
Il ne doit pas y en avoir tellement que cela...
 

Pièces jointes

  • Tontontonio v2.xlsx
    53.4 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Un essai avec une fonction personnalisée en VBA:
=CherchePierre(Bijou ; ListePierreCode )
  • avec bijou le nom du bijou (exemple A1)
  • avec ListePierre la plage des pierres et codes (exemple BIBLI!A$1:B$71)
Le code est dans module1 :
VB:
Function CherchePierre(ByVal Bijou As String, ListePierreCode As Range)
Dim t, i&, tail&, idx&
   t = ListePierreCode
   For i = 1 To UBound(t)
      If InStr(1, Bijou, t(i, 1), vbTextCompare) Then
         If Len(t(i, 1)) > tail Then tail = Len(t(i, 1)): idx = t(i, 2)
      End If
   Next i
   If idx > 0 Then CherchePierre = idx Else CherchePierre = CVErr(xlErrNA)
End Function

Il semblerait que les "jaspe" soient OK.
attention aux accents présents sur une feuille et pas dans l'autre (Péridot et Peridot)
 

Pièces jointes

  • Tontontonio- Recherche- v1.xlsm
    46.3 KB · Affichages: 6
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

De toute manière quand un bijou est composé de deux pierres dont seul chaque terme individuel figure dans Bibli, il n'est pas possible de trancher :

exemple : Pendentif ovale moderne Chrysocolle-Malachite
c'est Chrysocolle (code 111) ou Malachite (code 131) ou les deux ou aucun ?
 

Tontontonio

XLDnaute Nouveau
Si car après avoir enlevé les % il faut remplacer Pierre de Lune par "Pierre de lune".
Ensuite on recherche Pierre de Lune dans la bibliothèque en recherchant la chaine entre guillemets.
Je ne vois pas où est le problème.
c'est entendu, mais cela suppose de se fader pour chaque pierre un recherche/remplacer. c'est ce que je cherchais à éviter.
Bonjour le Forum,
Bonjour Tontontonio, exl-Noob, Sylvanu :)

Bonne année a tout le monde

Aller un essai en enlevant juste les espaces inutiles de la feuille liste

Cordialement

Bonjour le Forum,
Bonjour Tontontonio, exl-Noob, Sylvanu :)

Bonne année a tout le monde

Aller un essai en enlevant juste les espaces inutiles de la feuille liste

Cordialement
bonsoir Jocelyn,
merci pour cette contribution.
cette solution fonctionne aussi partiellement,
ça fait la différence entre Citrine et Citrine-cognac, mais pas entre Jaspe-rouge et Jaspe-Picasso.
Cordialement,
Tonio.
 

Tontontonio

XLDnaute Nouveau
Re,

De toute manière quand un bijou est composé de deux pierres dont seul chaque terme individuel figure dans Bibli, il n'est pas possible de trancher :

exemple : Pendentif ovale moderne Chrysocolle-Malachite
c'est Chrysocolle (code 111) ou Malachite (code 131) ou les deux ou aucun ?
bonsoir mapomme,
merci pour la proposition.
idéalement il faudrait que XL reconnaisse Chrysocolle-Malachite car ce n'est pas la même chose que chrysocolle. mais c'est ce qui pose problème apparemment. j'ai rajouté Chrysocolle-Malachite à la liste et il renvoie Malachite...
je vais essayer le code que vous avez posté, je vous tiens informé.
 

Tontontonio

XLDnaute Nouveau
pas toutes !

voir entre autre le cas de Pendentif ovale moderne Chrysocolle-Malachite
et Peridot (à cause d'un accent manquant)
j'ai corrigé l'accent et j'ai rajouté Chrysocolle-Malachite, qui était effectivement manquante, et ça marche.
une dernière chose, serait-il possible de renvoyer une valeur identique à la place d'une erreur lorsqu'il n'y a pas de pierre dans la description?
 

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi