[Résolu] Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Eddy.vh

XLDnaute Nouveau
Bonjour.

Mon problème n'est pas facile et habituellement, lorsque je bute, je trouve rapidement réponse en recherchant sur les divers sites et forum mais là, je coince vraiment.

Je dois fournir des listes de création de fiches produits (jouets) avec des attributs obligatoires et je cherche à automatiser la chose à l'aide d'une formule que je n'arrive pas à mettre en place. J'ai bien des bouts de formules qui donnent des résultats mais en imbriquant, je reste bredouille.

Le problème (que j'essaye de définir le mieux possible) :

  • Dans une feuille "Fiche produits", j'ai des références d'articles dans la colonne A et leur courte description dans la colonne B.
  • Dans une feuille "BDD" (pour base de données), j'ai deux colonnes, l'une avec le texte qui pourrait être une portion de texte de la feuille "Fiche produit" colonne B et l'autre avec leurs correspondances.

Dans la colonne C de "Fiche produits", j'aimerais renvoyer la correspondance en "BDD" Colonne B de la valeur "BDD" Colonne A si cette dernière est une portion de texte de "Fiche produits" Colonne B.

Tout cela devrait être dynamique et en recopiant la formule sur la colonne C de "Fiche produits", s'adapter à la situation.

Je joins un exemple très simplifié. Dans la cellule C2 de "Fiche produit, j'ai placé un commentaire qui devrait aider un peu à bien comprendre.

Je vous serai reconnaissant de toute information concernant les possibilités d'écrire une telle formule.
 

Pièces jointes

  • TestCategorisation.xlsx
    12.4 KB · Affichages: 30
  • TestCategorisation.xlsx
    12.4 KB · Affichages: 35
Dernière modification par un modérateur:

Modeste

XLDnaute Barbatruc
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Bonjour Eddy.vh et bienvenue,

S'il s'agit toujours d'extraire le texte avant le tiret et de chercher sa correspondance dans la feuille BDD, peut-être
Code:
=RECHERCHEV(SUPPRESPACE(GAUCHE(B2;CHERCHE("-";B2)-1));BDD!A:B;2;FAUX)

Salut Éric :)
 
Dernière édition:

Eddy.vh

XLDnaute Nouveau
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Bonjour et merci pour vos interventions.
Le fait est que le tiret est une coïncidence dans mon fichier exemple, il n'y en a pas toujours un malheureusement, seulement parfois.

Les fichiers de données que je reçois ne sont malheureusement pas toujours formatés au mieux par leur créateur.
 
Dernière modification par un modérateur:

eastwick

XLDnaute Impliqué
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Bonjour, voici un fichier mais il faut éviter les espaces dans les dénominations.
 

Pièces jointes

  • TestCategorisation.xlsx
    13.5 KB · Affichages: 25
  • TestCategorisation.xlsx
    13.5 KB · Affichages: 28

Eddy.vh

XLDnaute Nouveau
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Merci Eastwick cependant, comme je le disais ci-dessus, si les fichiers que je reçois étaient homogènes, alors tout irait bien dans le meilleur des mondes.

Le fichier à traiter est sans base de données, je me constituerai cette dernière au fur et à mesure, avec diverses marques et l'utiliserai en accompagnement avec les fichiers reçus…
 

Modeste

XLDnaute Barbatruc
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Re,

Il y a peut-être une solution par formule matricielle ... MAIS
- rien ne dit qu'à terme elle fonctionnera pour toutes les situations
- ce type de formule risque d'augmenter sensiblement (voire plus :rolleyes:) le temps de calcul

Tester, en C2
Code:
=INDEX(BDD!$B$1:$B$20;EQUIV(VRAI;ESTNUM(CHERCHE(BDD!$A$1:$A$20;B2));0))
à valider à l'aide de la combinaison Ctrl+Shift+Enter, puis recopier vers le bas
 

eastwick

XLDnaute Impliqué
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

En ce cas, pour être sûr de régler le problème, il faudrait remplacer les espaces des marques par _ avec la formule (si l'intitulé est en A1) : = substitue(A1;" ";"_"); à l'instant t je ne vois que cette solution fiable à 100%.
Bon courage et bon week-end !
 

Eddy.vh

XLDnaute Nouveau
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Merci Modeste, ça semble fonctionner sur ce fichier exemple.
Je garde la formule sous le coude afin de la réutiliser le moment venu…

Qu'est-ce qui influencera le temps de calcul ? La taille de la base de donnée ? Le nombre d'occurrences à traiter ? Les deux ?

Quel effet de placer la formule entre {} par Ctrl+Shift+Enter ?


Merci eastwick.
Le but est quand même d'accélérer le traitement, sans le ralentir d'un autre côté.
Mais sympas de te pencher sur le problème et tenter de trouver la solution, j'apprécie. ;)

Bon W-E à tous également.
 
Dernière modification par un modérateur:

Modeste geedee

XLDnaute Barbatruc
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Bonsour®
autres propositions en C2 :

=INDEX(BDD!$B$1:$B$19;EQUIV(GAUCHE('Fiche produit'!$B2;TROUVE(" -";'Fiche produit'!$B2)-1);BDD!$A$1:$A$19;0))

ou encore :
=GAUCHE(A2;TROUVE(" ";A2)-1)&" "&GAUCHE(B2;TROUVE(" -";B2)-1)
:rolleyes:
 

Pièces jointes

  • TestCategorisation (1).xlsx
    21.1 KB · Affichages: 26
Dernière édition:

Eddy.vh

XLDnaute Nouveau
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Modeste geedee, le tiret n'est aps systématiquement dans les descriptions (indiqué plus haut) mais merci quand-même.
eastwick, je vois ça dès que possible. Merci.


EDIT :

eastwick. Dès que je retire un tiret, la formule ne retourne pas le résultat escompté mais une erreur, normal puisque tu te bas dessus pour la recherche.

La formule de Modeste fonctionne qu'il y ait un tiret ou non dans la description.

Je dirai que pour le moment le problème semble résolu, je rouvrirai si tel n'était pas le cas.

Merci à tous pour votre aide précieuse. Il me reste à comprendre la totalité de la formule… ;)
 
Dernière modification par un modérateur:

eastwick

XLDnaute Impliqué
Re : Renvoyer une valeur selon un texte d'une cellule trouvé dans une autre.

Ah zut, une fonction nickel mais qui ne fonctionne qu'avec la présence du tiret...
 

Pièces jointes

  • TestCategorisation.xlsx
    14 KB · Affichages: 30
  • TestCategorisation.xlsx
    14 KB · Affichages: 26

Discussions similaires

Réponses
4
Affichages
193
Réponses
9
Affichages
154

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16