Comparer une cellule Désignation en se basant sur deux cellules

Fermé
Netlimit Messages postés 21 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 avril 2014 - 24 avril 2014 à 20:37
Raymond PENTIER Messages postés 58768 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 décembre 2024 - 25 avril 2014 à 15:40
Bonjour,

Ça fait trois jours que je suis entrain de me casser la tête sans résultat... Cela me rend furieux j'avoue.

Je vous explique un peu mon problème peut-être que quelqu'un saura m'aider, qui sait.

J'ai un classeur Excel 2007 qui contient une Feuille 1 : Code Prd, Désignation, Code à Barre, PRIX

On m'a demandé de comparer si on a les mêmes codes à barre (Sur une base de données SQL Server) avec les CAB de la Feuille 1.

Le problème qui se pose c'est que le champ Désignation sur les deux feuilles ne sont pas identiques à 100% : Exemple

Feuille 1-Désignation : DOLIPRANE 1G CPS EFFER Feuille 2-Désignation : DOLIPRANE 1000 MG COMP EFFER.

Je voudrais savoir si c'est possible d'utiliser un macro ou bien une formule magique afin de résoudre mon problème.

Merci par avance.



5 réponses

Raymond PENTIER Messages postés 58768 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 décembre 2024 17 258
25 avril 2014 à 01:51
Combien de lignes dans chaque feuille ?
Il y a t-il des doublons dans les colonnes de chaque feuille prise séparément ?
Un extrait de ton fichier Excel avec quelques dizaines de lignes serait le bienvenu.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
25 avril 2014 à 07:52
Bonjour
à tout hasard, (mais ça reste vague, et soumis aux types de textes de vos listes) basé sur votre exemple, pour retrouver

DOLIPRANE d'un tableau à l'autre et renvoyer la valeur correspondante:

feuil1
liste de base avec en A la valeur cherchée et en B la désignation,

Feuil2
liste avec en A le code et en B la valeur qui va servir de base à la recherche

pour reporter en feuil2 les valeurs "correspondantes" de feuill1

on commence en C1:


=INDEX(Feuil1!B:B;EQUIV("*"&GAUCHE(B1;8)&"*";Feuil1!B:B;0))

vous renverra la première désignation trouvée en feuil1! qui contient les 8 premières lettres du texte en feuil2!A1 (ceci n'importe où dans le texte)
Vous pouvez bien sur ajuster le nombre de caractères dans le code GAUCHE (). Vous pouvez même affiner avec:

=INDEX(Feuil1!B:B;EQUIV("*"&GAUCHE(B1;TROUVE(" ";B1)-1))&"*";Feuil1!B:B;0))

qui cherchera le texte comportant le premier mot complet de la cellule de base

Partant de ce résultat vous pouvez éditer en suite les valeurs des autres colonnes de feuil1, par exemple en D1:

=INDEX(Feuil1!A:A;EQUIV(C1;Feuil1!B:B;0))

et tout retrouver sur un seul tableau

crdlmnt

0
Netlimit Messages postés 21 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 avril 2014
25 avril 2014 à 12:14
Bonjour Raymond,

Merci d'avoir répondu à mon post. En fait c'est une liste de produits pharmaceutiques elle contient des milliers de lignes.

La feuille 1 contient la liste des produits avec les CAB justes :

Désignation C.A.B
DOLIPRANE 1G B8 EFFER. 6118000040361
DOLIPRANE 1G COMP B10 6118000040972
DOLIPRANE 500 COMP B20 6118000040347
DOLIPRANE 500 EFFERVESCENT B16 6118000040354
DOLIPRANE GELULES B16 6118000040378
DOLIPRANE ORO DISP.500 B12 6118000040958
DOLIPRANE SACHET 150 B12 6118000040255
DOLIPRANE SACHET 200 B12 6118000040262
DOLIPRANE SACHET 300 B12 6118000040279
DOLIPRANE SACHET 500 AD 6118000040330
DOLIPRANE SUPP 100 B10 6118000040286
DOLIPRANE SUPP 150 B10 6118000040293
DOLIPRANE SUPP 1G AD 6118000040323
DOLIPRANE SUPP 200 B10 6118000040309
DOLIPRANE SUPP 300 B10 6118000040316

La feuille 2 (Ma feuille) :

Désignation C.A.B
DOLIPRANE CPS EFV 1000 MG 6118000040361
DOLIPRANE CPS SECAB 1000 MG 6118000040972
DOLIPRANE CPS SPL 500 MG 6118000040347
DOLIPRANE CPS EFV 500 MG 6118000040354
DOLIPRANE GELULE 500 MG 6118000040378
DOLIPRANE ORO DISP 500 MG 6118000040958
DOLIPRANE SACHET 150 MG 6118000040255
DOLIPRANE SACHET 200 MG 6118000040262
DOLIPRANE SACHET 300 MG 6118000040279
DOLIPRANE SACHET 500 MG 6118000040330
DOLIPRANE SUPPOS 100 MG 6118000040286
DOLIPRANE SUPPOS 150 MG 6118000040293
DOLIPRANE SUPPOSIT 1 G 6118000040323
DOLIPRANE SUPPOS 200 MG 6118000040309
DOLIPRANE SUPPOS 300 MG 6118000040316

La feuille 3 doit afficher les CAB de la feuille 1 dans B1 et dans la cellule C1 elle doit chercher le CAB équivalent dans la feuille 2 et l'afficher avec sa désignation :

Désignation C.A.B C.A.B Désignation
DOLIPRANE 1G B8 EFFER. 6118000040361 6118000040361 DOLIPRANE CPS EFV 1000 MG
DOLIPRANE 1G COMP B10 6118000040972 6118000040972 DOLIPRANE CPS SECAB 1000 MG
DOLIPRANE 500 COMP B20 6118000040347 6118000040347 DOLIPRANE CPS SPL 500 MG
DOLIPRANE 500 EFFERVESCENT B16 6118000040354 6118000040354 DOLIPRANE CPS EFV 500 MG
DOLIPRANE GELULES B16 6118000040378 6118000040378 DOLIPRANE GELULE 500 MG
DOLIPRANE ORO DISP.500 B12 6118000040958 6118000040958 DOLIPRANE ORO DISP 500 MG
DOLIPRANE SACHET 150 B12 6118000040255 6118000040255 DOLIPRANE SACHET 150 MG
DOLIPRANE SACHET 200 B12 6118000040262 6118000040262 DOLIPRANE SACHET 200 MG
DOLIPRANE SACHET 300 B12 6118000040279 6118000040279 DOLIPRANE SACHET 300 MG
DOLIPRANE SACHET 500 AD 6118000040330 6118000040330 DOLIPRANE SACHET 500 MG
DOLIPRANE SUPP 100 B10 6118000040286 6118000040286 DOLIPRANE SUPPOS 100 MG
DOLIPRANE SUPP 150 B10 6118000040293 6118000040293 DOLIPRANE SUPPOS 150 MG
DOLIPRANE SUPP 1G AD 6118000040323 6118000040323 DOLIPRANE SUPPOSIT 1 G
DOLIPRANE SUPP 200 B10 6118000040309 6118000040309 DOLIPRANE SUPPOS 200 MG
DOLIPRANE SUPP 300 B10 6118000040316 6118000040316 DOLIPRANE SUPPOS 300 MG


N.B : Les champs Désignation de la feuille 1 et la feuille 2 ne sont pas identiques à 100%.

Merci
0
Raymond PENTIER Messages postés 58768 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 décembre 2024 17 258
Modifié par Raymond PENTIER le 25/04/2014 à 14:38
Aïe !
Quand je t'ai suggéré "Un extrait de ton fichier Excel avec quelques dizaines de lignes serait le bienvenu" je pensais à un fichier Excel, pas forcément ton fichier entier, mais pas des listes comme celles que tu as faites, et qui ne sont pas faciles à exploiter :
* En feuille 1, tes désignations sont donc en colonne B et tes CAB en colonne C ? Et dans tes listes-exemples ton CAB est le grand nombre commençant par 611... ?
* En feuille 2 c'est pareil,, désignation en B et CAB en 3 ?
* En feuille 3, le résultat que tu écris est réparti sur 4 colonnes ou concaténé dans une seule colonne ?

Pour envoyer un fichier, va dans https://www.cjoint.com/ pour créer le lien, que tu reviens coller ici. Tu fais d'abord une copie de ton vrai fichier, tu effaces les données confidentielles, comme les prix et éventuellement les coordonnées commerciales, tu supprimes quelques milliers de lignes pour n'en garder qu'une cinquantaine ; c'est ce fichier réduit que tu nous envoies.

C'est bien, la retraite ! Surtout aux Antilles ... :-)
☻ Raymond ♂
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58768 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 décembre 2024 17 258
Modifié par Raymond PENTIER le 25/04/2014 à 15:41
Comme je m'y perds un peu dans les combinaisons avec INDEX et EQUIV, je triche en recopiant, dans la feuille 2, la colonne B en colonne F, afin de définir la plage "matr2" qui désigne les colonnes C à F ; car j'ai besoin des CAB en première colonne de cette plage afin d'utiliser la fonction RECHERCHEV que je connais beaucoup mieux ...
Dans la feuille 3 j'aurai donc les formules :
* en A2 -> =Feuil1!B2
* en B2 -> =Feuil1!C2
* en C2 -> =RECHERCHEV(B2;matr2;1;0)
* en D2 -> =RECHERCHEV(B2;matr2;4;0)
à recopier vers le bas ...
Lorsqu'un CAB de Feuil1 ne figure pas en Feuil2, un message d'erreur #N/A s'affiche.
Lorsqu'un CAB de Feuil2 ne figure pas en Feuil11, il n'apparait pas en Feuil3.
https://www.cjoint.com/?DDzpOwTZ1o5

Cordialement.
C'est bien, la retraite ! Surtout aux Antilles ... :-)
☻ Raymond ♂
0