XL 2013 Ajouter critère à INDEX

call911

XLDnaute Occasionnel
Bonjour,

Je ne sais pas trop comment formuler ma question, mais en gros voila mon problème.
j'ai dans plusieurs onglets des informations que je voudrais appeler sur un tableau.

Est il possible d'intégrer dans la formule suivante, un critère supplémentaire à EQUIV:
je voudrais que sur la partie [@type], ne récupérer dans la colonne Feesaccount[typetransaction] seulement les montants ou "paiement" est présent, dans [@type] et dans Feesaccount[typetransaction].

Code:
{=SIERREUR(INDEX(Feesaccount[amount];EQUIV([@id]&[@type];Feesaccount[transactionsp_id]&Feesaccount[typetransaction];0));"")}

En esperant etre à peu pret clair dans mes explications :)

Merci
 

Dugenou

XLDnaute Barbatruc
Bonjour,
Si je comprends tu veux ajouter une condition.
Tu ne peux plus faire juste un equiv, il faut reprendre ta formule pour créer une matrice de N° de lignes qui correspondent aux conditions et afficher chaque valeur de cette matrice sur la bonne ligne.
Tu devrais fournir un petit fichier exemple pour que ce soit plus clair et qu'on puisse te proposer une formule.
Cordialement
 

call911

XLDnaute Occasionnel
Merci pour la réponse et pour le support,

C'est vrai qu'avec un fichier c'est peut etre plus simple :D

Ci joint un fichier.
Dans l'exemple, je cherche à partir de l'id et du type de la feuille transactionsp à appeler soit commission, soit payment (en fait, je vais appeler les 2 dans deux colonnes différentes), en sachant que dans mon tableau définitif, on peut retrouver soit xxxcommission, ou commissionxxx dans l'onglet typetransaction de l'onglet feesacount, et que je souhaite appeler juste le terme commission.
 

Pièces jointes

  • exemple bidouille.xlsx
    15 KB · Affichages: 28

Dugenou

XLDnaute Barbatruc
Re,
voir pj avec deux tableaux un pour payment et un pour commission. L'exemple est peut-être un peu trop réduit pour être parlant (j'ai l'impression d'avoir zappé un critère). Tu peux ajouer des critères en multipliant par la nouvelle condition entre parenthèses.
Le -1 après LIGNE(Feesaccount[typetransaction]) permet d'avoir le bon N° de ligne car la fonction renvoie un N° de ligne absolu et pas un N° de ligne dans le tableau. Si la première ligne utile (hors titre) du tableau Feesaccount est en ligne 4 il faudra faire -3.
à tester à plus grande échelle, cordialement
 

Pièces jointes

  • call911.xlsx
    16 KB · Affichages: 31

Dugenou

XLDnaute Barbatruc
Hello,
ce n'est pas la première fois que je ne parviens pas à me faire comprendre sur le sujet mais là je crois que j'ai trouvé la bonne façon de le dire :
Si ta ligne de titres du tableau de données est la ligne 1 tu enlèves 1 si la ligne de titres du tableau de données est la ligne 12 tu enlèves 12.
On discutera plus tard de la raison ... :)
 

Dugenou

XLDnaute Barbatruc
re
je ne vais pas te laisser dans l'ignorance !
Enfin, je vais tenter :
La formule si(..condition; ligne(plage)...) renvoie un numéro de ligne (25 si le résultat est sur la ligne 25)
par contre dans la formule index(plage;N°ligne) utilisée pour afficher le résultat, le N° de ligne doit être un N° de ligne dans le tableau : 1 pour la première ligne du tableau etc.
Si ton tableau commence à la ligne 12 et que le résultat est en première ligne du tableau : le résultat de si(condition;ligne(plage)) sera 13 mais dans l'index il faut appeler la ligne 1 d'ou le si(condition;ligne(plage)-N° de la ligne de titre)
Espérant avoir été clair
 

call911

XLDnaute Occasionnel
Bonjour Dugenou,

J'ai continué à travailler sur mon tableau et j'aimerai savoir si il est possible d'ajouter une condition sur la formule que tu m'as proposé.
Est ce que sur la partie (ESTNUM(TROUVE("commission";Feesaccount[typetransaction]))) il serait possible de faire en sorte que la recherche se porte sur "commission", ou "debit" par exemple?
Et si on pouvait etendre cette condition de ou bien tel critère, ou bien tel critère, cela m'éviterai de l'éclater sur plusieurs colonne.

Cordialement
 

Dugenou

XLDnaute Barbatruc
Re,
On va avoir des formules à rallonge, mais c'est faisable : comme on est dans un calcul matriciel le ET et le OU ne fonctionnent pas : on doit faire * entre chaque condition pour le ET et + pour le OU
donc
Code:
=...*(ESTNUM(TROUVE("commission";Feesaccount[typetransaction]))+ESTNUM(TROUVE("debit";Feesaccount[typetransaction])))...
attention à bien gérer les parenthèses.
Cordialement
 

call911

XLDnaute Occasionnel
Bonjour,

J'hésite à créer un nouveau sujet, mais comme il s'agit d'un problème sur la même formule, je tente sur ce même fil de discussion.

Dans la formule:

Code:
{=INDEX(Feesaccount[amount];MIN(SI((Feesaccount[transaction_id]=[@id])*ESTNUM(TROUVE("Bons_achat_credit";Feesaccount[typetransaction]));LIGNE(Feesaccount[typetransaction])-1)))}

Le problème est que si "id" n'est pas présent dans la colonne "transaction_id", il me donne une valeur fausse.
Je n'arrive pas à déclarer que si la valeur "ID" n'apparait pas dans le tableau "feesaccount" ou la valeur est recherchée, la valeur restituée soit 0.
Comment puis je faire pour déclarer que "SI((Feesaccount[transaction_id]=[@id])" en "[valeur_si_faux]" soit égale à 0?

Je joins l'exemple au cas ou mon explication ne soit pas très claire.
 

Pièces jointes

  • testbidouille.xlsx
    12.4 KB · Affichages: 17

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour call911, Dugenou,

Tu peux tester cette formule qui te renverra 0

Code:
=SIERREUR(INDEX(Feesaccount[amount];PETITE.VALEUR(SI((Feesaccount[transaction_id]=[@id])*(ESTNUM(TROUVE("Bons_achat_credit";Feesaccount[typetransaction])));LIGNE(Feesaccount[typetransaction])-1);1));0)

Cordialement
 

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG