Casse tête : Index+Equiv+doublons [Résolu/Fermé]

-
Bonjour à tous,

Je suis sous Excel 2007.
J'ai un classeurA dont la cellule D2 de la feuille 1 se remplit automatiquement avec une valeur correspondante dans la colonne C du classeurB. Ce remplissage se fait à condition que :
- la cellule B2 de la feuille1 du classeurA corresponde à la colonne B de la feuille2 du même classeur traduction [classeurA]feuill1!B2 = [classeurB]feuill2!B:B
- la cellule C correspondante dans la feuille2 du classeurA correponde à la colonne A du classeurB
- la cellule C2 de la feuille1 du classeurA corresponde à la colonne B du classeurB
traduction [classeurA]feuil1!C2 = [classeurB]feuil1!B:B

Pour tout cela j'ai utilisé la formule:
{=SIERREUR(INDEX([classeurB]feuill1!C:C;EQUIV(INDEX(feuil2!C:C;EQUIV(feuil1!B2;feuil2!B:B;0))&C2;[ClasseurB]feuil1!D:D;0))&"";"")} 
Cette formule marche très bien sauf dans le cas où j'ai un doublon dans la colonne [classeurA]feuil1!B:B , j'ai toutes les lignes qui ont la même valeur qui se remplissent aussi sans tenir compte de la colonne [classeurA]feuil1!C:C et je ne peux plus modifier cette valeur.

Pourquoi?! Comment faire?!

Je sais que le problème n'est pas évident vu de l'extérieur donc je vous envoies une structure de mes classeurs qui mets en évidence mon problème.
Classeur A : http://cjoint.com/?ADCpKpXQdp5
Classeur B : http://cjoint.com/?ADCpLdhOnSo

Merci beaucoup à ceux qui auront le courage de s'y attarder.

Afficher la suite 

5 réponses

Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3696
0
Merci
bonjour


Lorsque tu utilises EQUIV pour chercher une valeur dans une colonne, c'est nécessairement la première valeur correspondante qui est toujours trouvée.

Si tu as des doublons, et que tu veuilles trouver la valeur suivante il faut alors utiliser la fonction DECALER pour te positionner mais cela va compliquer ta formule.
Il te faut peut-être avoir une autre colonne pour gérer cela ou fonctionner avec l'index de la colonne A s'il est utilisable.
Messages postés
24585
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 octobre 2019
4830
0
Merci
Bonjour tous
pour complèter l'info de Gb (bonjour ), un petit exemple, ici de ce qui est possible... je vous laisse adapter si vous le souhaitez à la complexité de vos fichiers.
Vous pouvez bien sur inclure ce complément de code (colonne D de la liste) à celui que vous avez déjà mis en place pour traiter la concaténation

Attention à la position des blocages de champ des codes SOMMEPROD . (les champs sont évolutifs selon la position de la formule dans les tableaux)


http://www.cijoint.fr/cjlink.php?file=cj201104/cij1vUVCW4.xls

note:
la colonne I est là pour info,pour identifier le nombre de références identiques dans le tableau d'édition elle n'est pas utile et est à supprimer

bon courage

crdlmnt



0
Merci
Merci beaucoup, pour vos réponses.

J'ai beau chercher, je comprend pas trop le rapport avec SOMMEPROD...
Je vois pas trop comment l'utiliser.

Sinon, je pense que la fonction Decaler pour être pas mal mais ça va être assez complexe de l'intégrer dans ma formule.

Enfin, je vais tenter, voir si j'abouti à quelque chose
Vaucluse
Messages postés
24585
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 octobre 2019
4830 -
Re

la fonction SOMMEPROD dans la colonne de codage D de F_1 sert à compter le nombre de fois où un ensemble de références identiques se retrouvent depuis le début du champ, jusqu'à la ligne où elle se trouve
ceci permet d'intégrer un N° d'ordre aux ensembles identiques de façons à les différencier.

Dans la formule de la colonne H en F_2, le code SOMMEPROD compte de la même façon le nombre d'ensembles situés depuis le début du champ F:G jusqu'à la ligne où elle se trouve, de façon à reconstituer le code des trois colonnes A,B, D de la feuille F_1

Le tout en faisant bien attention au blocage des champs qui doivent s'agrandir avec la position de la formule:
(début du champ bloqué, fin de champ libre en vertical)

bien entendu, cette solution ressort les résultats en colonne H dans l'ordre où ils sont placés dans la feuille F_1

crdlmnt
0
Merci
okok je comprend mieux l'idée de la formule.
Par contre je sens que ça va être surement complexe et tu as l'air de t'y connaitre alors est-ce que tu penses que ce serait pas plus pratique d'utiliser une macro vba?!

Je précise que je m'interesse à Excel seulement depuis 3 semaines, donc mon jugement est surment faux.
Vaucluse
Messages postés
24585
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 octobre 2019
4830 -
Là je ne sais pas répondre, les macros ne sont pas ma spécialité, mais étant donné que vous pouvez regrouper ce codage dans la colonne qui "construit" la référence en classeur B, ç a ne me parrait pas plus compliqué qu'une macro.
je jettes un oeil sur vos classeur et je vous en reparle
crdlmnt
Merci.
Je continue à chercher aussi de mon côté
0
Merci
Euh en fait j'i trouvé une solution qui fonctionne. Je ne comprend pas pourquoi mais en tout cas, j'ai plus mon problème de doublons.
Ma formule est :

=SIERREUR(INDEX([ClasseurB.xls]Feuil1!$C$1:$C$65536;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil1!$D$1:$D$65536;0))&"";"")


ça me parait un peu simple, donc dites moi si ça ne me posera pas problème...

Voici le nouveau tableau corrigé :
http://cjoint.com/?ADDo7qfzewk
Vaucluse
Messages postés
24585
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 octobre 2019
4830 -
Je viens de comprendre le problème, je pensais au départ que vos doublons étaient en classeur B alors qu'en fait ils sont en feuille 2 classeur A!
d'ou ma proposition qui n'a rien à voir avec le sujet

Quant à votre option,a marche peut être, à vous de voir si ça convient.
pour ma part:
d'une part je ne peux pas reconstituer les liens entre vos classeurs, (elles ne fonctionnent plus dès qu'on intervient) car je crois que vous avez du modifier le code en D
Mais il faut supposer que les codes du tableau feuille 1 sont dans la même ordre que sur feuille 2 et dans le même nombre????
dans ce cas, pourquoi ne pas les placer sur feuille 1 dans une colonne supplémentaire?ou bien remplir directement la colonne D sur la feuille 2 puisque la colonne C feuille 1 semble ne plus servir à rien???

c'est là que j'ai cessé de comprendre!

Mais pourquoi faire autre chose si cela fonctionne

crdlmnt
La raison et très simple, c'est que les informations qui sont sur la feuille1 sont celles qu'on peut livrer au client alors que celle sur la feuille2 doivent rester confidentielles. Et c'est pourquoi on a le même nombre de lignes sur les 2 feuilles et ces lignes sont effectivement dans le même ordre.

Je vais donc rester sur cette formule.

Merci de m'avoir accordé de votre temps
Vaucluse
Messages postés
24585
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 octobre 2019
4830 -
OK bonne route
en fait c'était plus simple que l'on croyait!
crdlmnt