Decalage sur fonction INDEX

Le48

XLDnaute Nouveau
Bonjour a tous,

Pour mon premier message je voulais déjà dire un grand MERCI a tous car, si c'est mon premier post, cette communauté a déjà débloqué bien des situations pour moi!

Mais aujourd'hui je suis bloqué alors je fais appel à vos talents.

Je souhaite créer un ensemble de fiches techniques permettant de calculer des coûts de revient, qui font référence à un fichier excel unique répertoriant tous ces prix (Base.xlsx).

J'ai donc "choisi" (c'est la seule solution que j'ai trouvé) d'utiliser la fonction INDEX dans ces fiches techniques.
Le but est de trouver le prix unitaire d'un ingrédient grâce à la combinaison du nom du fournisseur et de la référence produit.

Jai donc une formule du type :

=INDEX([Base.xlsx]Onglet1'!Plage 1;MAX(SI((Nom_fournisseur='[Base.xlsx]Onglet1'!Plage_fournisseurs)*(Ref_produit=[Base.xlsx]Onglet1'!Plage_produits);LIGNE([Base.xlsx]Onglet1'!Plage_prixunitaires);0)))

Le problème c'est que le prix unitaire qui m'est ainsi retourné est le prix unitaire de la ligne qui se trouve en-dessous de ma recherche.
La combinaison Fournisseur x Ref produit est donc bien reconnue et trouvée dans la base mais c'est le résultat de la ligne en-dessous qui s'affiche sans que je comprenne pourquoi...

Si l'un d'entre vous peut m'aider ce serait vraiment cool, parce que là je cale totalement...
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Decalage sur fonction INDEX

Bonjour Le48 et bienvenue sur XLD :),

Votre formule utilise des noms définis. Il serait intéressant de disposer des fichiers que vous utilisez afin de pouvoir vérifier les noms définis. En effet le décalage d'une ligne pourrait provenir de ces définitions (prise en compte notamment de lignes d'en-tête présentes ou non dans les définitions). Mais sans plus de détails... :confused:

On pourrait toujours enlever -1 à la ligne trouvée dans la formule mais ce serait mieux de comprendre pourquoi :rolleyes:
 
Dernière édition:

Dugenou

XLDnaute Barbatruc
Re : Decalage sur fonction INDEX

Bonjour,
la zone nommée [Base.xlsx]Onglet1'!Plage 1 doit commencer à la première ligne de la feuille et pas à la première ligne de données car la partie LIGNE([Base.xlsx]Onglet1'!Plage_prixunitaires) renvoie un N° de ligne et non un N° d'index ou bien comme proposé par Mapomme (que je salue) il faudrait écrire ;LIGNE([Base.xlsx]Onglet1'!Plage_prixunitaires)-1;
cordialement
 

Le48

XLDnaute Nouveau
Re : Decalage sur fonction INDEX

Bonjour,

Merci pour vos réponses!

En réalité j'ai "trouvé" hier soir la solution en donnant un nom à mes colonnes dans la formule... ce qui correspond exactement à la solution de Duguenou!

Merci car grâce à toi je sais d'où venait le problème.
Il y a encore pas mal de subtilités qui m'échappent!!! ;)

Par contre pour la seconde solution, le "-1" en fin de formule, j'avais essayé mais ça ne fonctionnait pas.
Je l'avais placé après le ; peut être est-ce pour ça?

Quoi qu'il en soit merci je peux avancer, vous aurez encore quelques visites de ma part à nouveau car j'ai beaucoup à apprendre.

Bonne journée
 

Misange

XLDnaute Barbatruc
Re : Decalage sur fonction INDEX

Bonjour

Si tu veux éviter de nommer toi même tes colonnes, utilise tout simplement la fonctionnalité tableaux : onglet accueil/style/mettre sous forme de tableau qui crée automatiquement les noms et cela de façon dynamique (s'ajuste aux données ajoutées dans le tableau) sans avoir besoin d'utiliser cette fonction decaler.

Ce lien n'existe plus
 

Discussions similaires

Statistiques des forums

Discussions
312 244
Messages
2 086 558
Membres
103 247
dernier inscrit
bottxok