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
Salut @Tontontonio,

En suivant les conseils de Jacques Bois Gontier et en utilisant les jokers dans la recherche, je suis parvenu à une solution avec la formule suivante placée dans ta colonne C :
Code:
=INDEX(Tableau1[Colonne2];EQUIV(1;EQUIV("*"&Tableau1[Colonne1]&"*";[@Nom];0);1))
Pour cela il a fallu mettre un peu forme ton tableau, et j'ai remplacé les "%" par des "-", c'est plus lisible.
Tu noteras des erreurs, mais elles sont normales compte tenu des intitulés recherchés qui sont parfois absents (Un petit esterreur() les fera disparaitre) ou écrits sans tiret dans ta feuille "liste" (à rectifier dans la feuille "Liste ou dans la feuille "BIBLI").

Je ne sais pas à quoi sert ta formule en colonne E.

A suivre.
Le cas échéant, marque la discussion comme résolue
 

Pièces jointes

  • Tontontonio.xlsx
    51.5 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Tontontonio,
Vous ne pourrez pas trouver "Bague moderne goutte Citrine facettée" dans la Bibliothèque car il n'existe pas.
Il faut isoler le mot Citrine pour la recherche. Mais pour cela il faut identifier la pierre dans la description.

Donc en PJ je vous propose :
- supprimer tous les % dans les descriptions
- identifier la pierre utilisée, avec par ex des ". Citrine remplacée par "Citrine"
- extraire Citrine de la description
- rechercher Citrine dans la bibliothèque avec :
VB:
=SIERREUR(RECHERCHEV(STXT(STXT(A1;1+TROUVE("""";A1);1000);1;TROUVE("""";STXT(A1;1+TROUVE("""";A1);1000))-1);BIBLI!A:B;2);"Non trouvé.")
Code:
Extraction de la pierre :
STXT(STXT(A1;1+TROUVE("""";A1);1000);1;TROUVE("""";STXT(A1;1+TROUVE("""";A1);1000))-1)
par recherche des deux " "
SIERREUR permet d'identifier les pierres non trouvées dans la bibli.

NB: Je n'ai fait les modifs que sur les 15 premières cellules de Liste.
 

Pièces jointes

  • ESSAIS (1).xlsx
    48.5 KB · Affichages: 2

Tontontonio

XLDnaute Nouveau
Salut @Tontontonio,

En suivant les conseils de Jacques Bois Gontier et en utilisant les jokers dans la recherche, je suis parvenu à une solution avec la formule suivante placée dans ta colonne C :
Code:
=INDEX(Tableau1[Colonne2];EQUIV(1;EQUIV("*"&Tableau1[Colonne1]&"*";[@Nom];0);1))
Pour cela il a fallu mettre un peu forme ton tableau, et j'ai remplacé les "%" par des "-", c'est plus lisible.
Tu noteras des erreurs, mais elles sont normales compte tenu des intitulés recherchés qui sont parfois absents (Un petit esterreur() les fera disparaitre) ou écrits sans tiret dans ta feuille "liste" (à rectifier dans la feuille "Liste ou dans la feuille "BIBLI").

Je ne sais pas à quoi sert ta formule en colonne E.

A suivre.
Le cas échéant, marque la discussion comme résolue
une fois qu'on le voit écrit ça paraît tout bête.
c'est exactement ce que je cherchais, je crois que je vais me mettre à la mise en forme, ça a tout de suite une autre allure!
merci à toi,
je te souhaite une bonne année 2021.
Tonio.
 

Tontontonio

XLDnaute Nouveau
Bonjour Tontontonio,
Vous ne pourrez pas trouver "Bague moderne goutte Citrine facettée" dans la Bibliothèque car il n'existe pas.
Il faut isoler le mot Citrine pour la recherche. Mais pour cela il faut identifier la pierre dans la description.

Donc en PJ je vous propose :
- supprimer tous les % dans les descriptions
- identifier la pierre utilisée, avec par ex des ". Citrine remplacée par "Citrine"
- extraire Citrine de la description
- rechercher Citrine dans la bibliothèque avec :
VB:
=SIERREUR(RECHERCHEV(STXT(STXT(A1;1+TROUVE("""";A1);1000);1;TROUVE("""";STXT(A1;1+TROUVE("""";A1);1000))-1);BIBLI!A:B;2);"Non trouvé.")
Code:
Extraction de la pierre :
STXT(STXT(A1;1+TROUVE("""";A1);1000);1;TROUVE("""";STXT(A1;1+TROUVE("""";A1);1000))-1)
par recherche des deux " "
SIERREUR permet d'identifier les pierres non trouvées dans la bibli.

NB: Je n'ai fait les modifs que sur les 15 premières cellules de Liste.
bonjour sylvanu,
et merci pour votre réponse.
la solution de Exl-Noob est parfaite, je n'irai pas plus loin.
merci encore et bonne année 2021 à vous.
Tonio.
 

Tontontonio

XLDnaute Nouveau
une fois qu'on le voit écrit ça paraît tout bête.
c'est exactement ce que je cherchais, je crois que je vais me mettre à la mise en forme, ça a tout de suite une autre allure!
merci à toi,
je te souhaite une bonne année 2021.
Tonio.
je me suis précipité,
en fait ça fonctionne sur certaine références mais pas sur les autres,
ça fait bien la différence entre Citrine et Citrine-cognac mais pas entre Jaspe-impérial et Jaspe-rouge.
je suis en train d'essayer la solution de Sylvanu,
je te tiens au courant.
 

Tontontonio

XLDnaute Nouveau
bonjour sylvanu,
et merci pour votre réponse.
la solution de Exl-Noob est parfaite, je n'irai pas plus loin.
merci encore et bonne année 2021 à vous.
Tonio.
en fait la solution de Exl-Noob ne fonctionne pas, je me suis fié aux résultats des premières lignes, mais ça ne fonctionne pas pour toutes les pierres.
dans votre proposition, je ne comprends pas "identifier la pierre utilisée, avec par ex des ". Citrine remplacée par "Citrine"", est-ce que cela suppose de rajouter des points manuellement devant chaque pierre de la liste?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour identifier les pierres j'utilise le guillemet;
Donc remplacer Citrine par "Citrine"
Ainsi je supprime ce qu'il y a avant le premier guillemet et après le second guillemet, et supprimer les %.
Comme je l'ai fait sur les 15 premières lignes :
VB:
Bague moderne ronde Quartz%fumé facettée
Remplacé par :
Bague moderne ronde "Quartz fumé" facettée
 

Tontontonio

XLDnaute Nouveau
en fait la solution de Exl-Noob ne fonctionne pas, je me suis fié aux résultats des premières lignes, mais ça ne fonctionne pas pour toutes les pierres.
dans votre proposition, je ne comprends pas "identifier la pierre utilisée, avec par ex des ". Citrine remplacée par "Citrine"", est-ce que cela suppose de rajouter des points manuellement devant chaque pierre de la liste?

OK j'ai compris.
mais cela veut bien dire qu'il faut manuellement mettre des guillemets à toutes les pierres?
j'ai une liste d'environ 1000 lignes...
je cherche un moyen de reconnaitre dans les cellules le nom des pierres qui sont dans la liste et de lui affecter le numéro correspondant.
la formule:=INDEX('BIBLI'!$B$1:$B$72;EQUIV(FAUX; ESTERREUR( CHERCHE('BIBLI'!$A$1:$A$72;A1)); 0))
fonctionne, mais elle ne fait pas la différence entre Jaspe-rouge et Jaspe-impérial, par exemple.
 

Tontontonio

XLDnaute Nouveau
Pour identifier les pierres j'utilise le guillemet;
Donc remplacer Citrine par "Citrine"
Ainsi je supprime ce qu'il y a avant le premier guillemet et après le second guillemet, et supprimer les %.
Comme je l'ai fait sur les 15 premières lignes :
VB:
Bague moderne ronde Quartz%fumé facettée
Remplacé par :
Bague moderne ronde "Quartz fumé" facettée
donc il faut faire une recherche/remplacer pour chaque pierre?
est-ce bien cela?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oui, au même titre que vous avez mis les %.
J'ai cherché un autre moyen, mais je n'ai pas trouvé.
Une piste : que la pierre soit le dernier mot de la phrase. Le problème c'est que le premier ex ne s'applique pas : Bague moderne goutte Citrine facettée. Or Citrine facettée n'est pas dans la Bibli. Seulement Citrine.
 

Tontontonio

XLDnaute Nouveau
Oui, au même titre que vous avez mis les %.
J'ai cherché un autre moyen, mais je n'ai pas trouvé.
Une piste : que la pierre soit le dernier mot de la phrase. Le problème c'est que le premier ex ne s'applique pas : Bague moderne goutte Citrine facettée. Or Citrine facettée n'est pas dans la Bibli. Seulement Citrine.
pour les % j'ai rechercher/remplacé les tirets d'origine, car j'ai pensé que cela pouvait induire XL en erreur.
les tirets ont été inscrits au fur et à mesure de la saisie.
je pensais pouvoir trouver une syntaxe du type: "texteX"%"texteY" à remplacer par :
"texteX texteY"
mais je ne trouve pas.
 

Discussions similaires

Statistiques des forums

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