Petite galère sur sierreur et Index pour rechercher plusieurs infos

Bonjour à tous,

J'ai une question concernant la recherche d'information lorsque l'on a plusieurs fournisseurs.

J'ai une liste de références dans le fichier DispoCockpit que je souhaiterais associé avec les contrats dans le fichier EORD. Le soucis c'est qu'il peut exister 0 ou 1 ou plusieurs contrats associés à cette référence et que j'aimerais en faire dans Dispocockpit onglet DATA mettre dans les colonnes Fournisseur1 le premier fournisseur de cette ref. fournisseur2, le deuxieme etc...

Je n'arrive pas a appliquer la formule ou du moins lorsque je l'applique, je trouve des résultats qui ne matche pas lorsque je fais une vérification manuelle. Je n'arrive pas a matcher Supplier ID1 avec le premier fournisseur de la liste. Dans certains cas, il ne me prends pas le bon fournisseur.

[=SIERREUR(INDEX('[EORD TEST.xlsx]DATA EORD'!$B$2:$B$4000;PETITE.VALEUR(SI('[EORD TEST.xlsx]DATA EORD'!$A$2:$A$4000=$A2;LIGNE('[EORD TEST.xlsx]DATA EORD'!$B$2:$B$4000)-1);1));"")

Que je traduit par

=SIERREUR(INDEX(EORD-IDFOURNISSEUR;PETITE.VALEUR(SI(EORD-ARTICLE=COCKPIT-ARTICLE;LIGNE(EORD-IDFOURNISSEUR)-1);1));"")

Je vous remercie.

12eord-test.xlsx (266.65 Ko)

Bonjour,

{=SIERREUR(INDEX('[EORD TEST.xlsx]DATA EORD'!$B$2:$B$89;PETITE.VALEUR(SI('[EORD TEST.xlsx]DATA EORD'!$A$2:$A$89=$A2;LIGNE('[EORD TEST.xlsx]DATA EORD'!$B$2:$B$89)-2);1));"")}

en matricielle, fonctionne

mais

{=SIERREUR(INDEX('[EORD TEST.xlsx]DATA EORD'!$B$2:$B$4000;PETITE.VALEUR(SI('[EORD TEST.xlsx]DATA EORD'!$A$2:$A$4000=$A2;LIGNE('[EORD TEST.xlsx]DATA EORD'!$B$2:$B$4000)-2);1));"")}

ne fonctionne pas a cause des cellules vides

Crdlmt

Bonjour DjiDji,

Merci pour ta réponse.

Humm dans cet exemple j'ai mis peu de ligne. Mais le fichier original contient un tout petit peu moins de 4000lignes.

Comment faire alors pour qu'il prennent en compte un bloc potentiellement avec des cellules vides ?

Je souhaiterais éviter de modifier la formule parce ce qu'il y a 3500 lignes un fois, 3900 plus tard, 3600 ensuite etc...

De plus les resultats ne sont pas toujours correct. Il ne pointe pas toujours sur le bon fournisseur.

Bonjour DjiDji,

Merci pour ta réponse.

Humm dans cet exemple j'ai mis peu de ligne. Mais le fichier original contient un tout petit peu moins de 4000lignes.

Il faut passer tes plages en tableau et faire la formule avec les intitulés des tableaux qui elles sont dynamiques

De plus les resultats ne sont pas toujours correct. Il ne pointe pas toujours sur le bon fournisseur.

Donnes des exemples pour voir

Il faut passer tes plages en tableau et faire la formule avec les intitulés des tableaux qui elles sont dynamiques

Humm, je n'ai pas compris ce que tu veux dire par la

De plus les resultats ne sont pas toujours correct. Il ne pointe pas toujours sur le bon fournisseur. Donnes des exemples pour voir

Exemple

la ref 5106114629 me donne 100011 alors que c'est normalement 100005

la ref 5103582410 me donne 100010 alors que le resultat devrait etre 100011

8eord-test.xlsx (266.74 Ko)

Re

Pour les erreurs, effectivement, il y avait une erreur dans ma formule, l'indexation des lignes etait mauvaise.

j'ai transformé les plages en tableaux (insertion==>tableaux) et transformé la formule en conséquence.

Crdlmt

DjiDji

A partir de ton fichier, voici ce que j'ai fait :

modifier sur les onglets DATA en sélectionnant les lignes et en les insérant en tableau.

j'ai appliqué la formule que tu as proposé :

=SIERREUR(INDEX(EORD.xlsx!Tableau1[Fourn.];PETITE.VALEUR(SI(EORD.xlsx!Tableau1[Article]=$A2;LIGNE(EORD.xlsx!Tableau1[Article])-1);1));"")

2 questions sur cette formule:

* Pourquoi faire un tableau ? quel sont les raisons d'en faire un ? je n'ai pas compris la relation entre le tableau et la formule.

* Comment afficher le 2ème fournisseur possible de cette référence? en modifiant )-1);1));"") en 1 en gras ? en mettant 2 par exemple pour me donner la 2ème occurrence ou la condition s'applique ?

Re

en transformant tes plages en tableaux, tu les rends dynamiques

EORD.xlsx!Tableau1[Fourn.] est la plage des fournitures actuelles. Si tu rajoutes des fournitures,ta plage va toujours s'appeler EORD.xlsx!Tableau1[Fourn.] et la formule appelle donc la nouvelle plage. De plus s'il y a des formules dans d'autres colonnes, elles s'incrémentent et ton tableau se remplit seul.

LIGNE(EORD.xlsx!Tableau1[Article])-1) le -1 est parce que ta plage commence en ligne 2. Si elle commençait en ligne 20, t'aurais -19

Pour le 2 ème fournisseur, effectivement , la formule reste identique, sauf, comme tu dis, le 1 de la fin passe à 2

Crdlmt

Rechercher des sujets similaires à "petite galere sierreur index rechercher infos"