W wajih_Excel XLDnaute Occasionnel 9 Mars 2011 #1 Salut Forum; Je cherche une formule qui peut me donner la même résultat que les cellules en jaune sur le fichier en PJ J'ai essayé avec la fonction RECHERCHEV mais ça ma donner une résultat erronée Y'a t-il une solution pour ce problème sachant que la liste est longue et je n'ai pas la même nombre de ligne ? Merci d'avance En PJ l'exemple Pièces jointes Formule.xls 25.5 KB · Affichages: 40 Formule.xls 25.5 KB · Affichages: 43 Formule.xls 25.5 KB · Affichages: 40
Salut Forum; Je cherche une formule qui peut me donner la même résultat que les cellules en jaune sur le fichier en PJ J'ai essayé avec la fonction RECHERCHEV mais ça ma donner une résultat erronée Y'a t-il une solution pour ce problème sachant que la liste est longue et je n'ai pas la même nombre de ligne ? Merci d'avance En PJ l'exemple
Victor21 XLDnaute Barbatruc 9 Mars 2011 #2 Re : Formule Bonjour, wajih_excel. Avec 2 colonnes supplémentaires, en attendant mieux. Pièces jointes Formule(1).xls 34.5 KB · Affichages: 34 Formule(1).xls 34.5 KB · Affichages: 35 Formule(1).xls 34.5 KB · Affichages: 33 Vote positif 0 Vote négatif
job75 XLDnaute Barbatruc 9 Mars 2011 #3 Re : Formule Bonsoir wajih_Excel, On peut utiliser cette formule en H4 : Code: =INDEX(B:B;EQUIV(D4;A:A;0)+(D3=D4)+(D2=D4)+(D1=D4)) Hypothèses : - Id_Produit classés, pour les 2 tableaux - un maximum de 4 Id_Produit identiques consécutifs dans le 2ème tableau. Edit : salut Victor21, pas rafraîchi A+ Pièces jointes Formule(1).xls 26 KB · Affichages: 32 Formule(1).xls 26 KB · Affichages: 33 Formule(1).xls 26 KB · Affichages: 33 Dernière édition: 9 Mars 2011 Vote positif 0 Vote négatif
Re : Formule Bonsoir wajih_Excel, On peut utiliser cette formule en H4 : Code: =INDEX(B:B;EQUIV(D4;A:A;0)+(D3=D4)+(D2=D4)+(D1=D4)) Hypothèses : - Id_Produit classés, pour les 2 tableaux - un maximum de 4 Id_Produit identiques consécutifs dans le 2ème tableau. Edit : salut Victor21, pas rafraîchi A+
D david84 XLDnaute Barbatruc 9 Mars 2011 #4 Re : Formule Bonsoir, ci-joint une solution qui ne me conviens pas complètement mais qui donne le résultat escompté par rapport à l'exemple fourni. Comme je ne connais pas la finalité du projet, je livre au cas où... A+ Edit : bonsoir à Job et Victor Pièces jointes Copie de Formule.xls 22.5 KB · Affichages: 37 Copie de Formule.xls 22.5 KB · Affichages: 38 Copie de Formule.xls 22.5 KB · Affichages: 36 Vote positif 0 Vote négatif
Re : Formule Bonsoir, ci-joint une solution qui ne me conviens pas complètement mais qui donne le résultat escompté par rapport à l'exemple fourni. Comme je ne connais pas la finalité du projet, je livre au cas où... A+ Edit : bonsoir à Job et Victor
Tibo XLDnaute Barbatruc 9 Mars 2011 #5 Re : Formule Bonsoir le fil, Une approche avec une autre formule matricielle : Code: =INDEX($B$4:$B$13;EQUIV(PETITE.VALEUR(SI(ENT($A$4:$A$13+LIGNE($A$4:$A$13)/9^9)=D4;$A$4:$A$13+LIGNE($A$4:$A$13)/9^9);NB.SI($D$4:D4;D4));$A$4:$A$13+LIGNE($A$4:$A$13)/9^9;0)) Matricielle à valider par CTRL + MAJ + ENTREE @+ Vote positif 0 Vote négatif
Re : Formule Bonsoir le fil, Une approche avec une autre formule matricielle : Code: =INDEX($B$4:$B$13;EQUIV(PETITE.VALEUR(SI(ENT($A$4:$A$13+LIGNE($A$4:$A$13)/9^9)=D4;$A$4:$A$13+LIGNE($A$4:$A$13)/9^9);NB.SI($D$4:D4;D4));$A$4:$A$13+LIGNE($A$4:$A$13)/9^9;0)) Matricielle à valider par CTRL + MAJ + ENTREE @+
job75 XLDnaute Barbatruc 10 Mars 2011 #6 Re : Formule Bonjour le fil, le forum, Par rapport aux matricielles de David et Tibo, ma formule ne fait pas le poids Tant pis, une autre : Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)) Là encore les 2 tableaux doivent avoir été triés. A+ Pièces jointes Formule(2).xls 26 KB · Affichages: 34 Formule(2).xls 26 KB · Affichages: 31 Formule(2).xls 26 KB · Affichages: 29 Vote positif 0 Vote négatif
Re : Formule Bonjour le fil, le forum, Par rapport aux matricielles de David et Tibo, ma formule ne fait pas le poids Tant pis, une autre : Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)) Là encore les 2 tableaux doivent avoir été triés. A+
job75 XLDnaute Barbatruc 10 Mars 2011 #7 Re : Formule Re, Version (3), un peu plus élaborée : Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)/(NB.SI(D$3:D4;D4)<=NB.SI(A:A;D4))) Edit : si l'on n'aime pas les #DIV/0 (moi je n'aime pas les SI...) : Code: =SI(NB.SI(D$3:D4;D4)<=NB.SI(A:A;D4);INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4));"?") Version (4). A+ Pièces jointes Formule(3).xls 26.5 KB · Affichages: 35 Formule(4).xls 26.5 KB · Affichages: 27 Dernière édition: 10 Mars 2011 Vote positif 0 Vote négatif
Re : Formule Re, Version (3), un peu plus élaborée : Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)/(NB.SI(D$3:D4;D4)<=NB.SI(A:A;D4))) Edit : si l'on n'aime pas les #DIV/0 (moi je n'aime pas les SI...) : Code: =SI(NB.SI(D$3:D4;D4)<=NB.SI(A:A;D4);INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4));"?") Version (4). A+
D david84 XLDnaute Barbatruc 10 Mars 2011 #8 Re : Formule Re Par rapport aux matricielles de David et Tibo, ma formule ne fait pas le poids Cliquez pour agrandir... Personnellement, je trouve la mienne "bancale", contrairement à celle de Tibo que l'on peut même légèrement simplifier : Code: =INDEX($B$4:$B$13;EQUIV(PETITE.VALEUR(SI($A$4:$A$13=D4;$A$4:$A$13+LIGNE($A$4:$A$13)/9^9);NB.SI($D$4:D4;D4));$A$4:$A$13+LIGNE($A$4:$A$13)/9^9;0)) Bravo Tibo La tienne Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)) répond également à la commande tel que l'exemple est présenté, donc bien vu à toi aussi. A+ Vote positif 0 Vote négatif
Re : Formule Re Par rapport aux matricielles de David et Tibo, ma formule ne fait pas le poids Cliquez pour agrandir... Personnellement, je trouve la mienne "bancale", contrairement à celle de Tibo que l'on peut même légèrement simplifier : Code: =INDEX($B$4:$B$13;EQUIV(PETITE.VALEUR(SI($A$4:$A$13=D4;$A$4:$A$13+LIGNE($A$4:$A$13)/9^9);NB.SI($D$4:D4;D4));$A$4:$A$13+LIGNE($A$4:$A$13)/9^9;0)) Bravo Tibo La tienne Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)) répond également à la commande tel que l'exemple est présenté, donc bien vu à toi aussi. A+
W wajih_Excel XLDnaute Occasionnel 10 Mars 2011 #9 Re : Formule Merci à vous tous Vote positif 0 Vote négatif
job75 XLDnaute Barbatruc 10 Mars 2011 #10 Re : Formule Re wajih_Excel, wajih_Excel à dit: Merci à vous tous Cliquez pour agrandir... C'est bien, mais nous restons tous sur notre faim, on aime partager sur XLD. C'eût été mieux d'indiquer la solution retenue, et pour quelle raison. Par exemple, si votre fichier est très gros, la rapidité d'exécution... A+ Vote positif 0 Vote négatif
Re : Formule Re wajih_Excel, wajih_Excel à dit: Merci à vous tous Cliquez pour agrandir... C'est bien, mais nous restons tous sur notre faim, on aime partager sur XLD. C'eût été mieux d'indiquer la solution retenue, et pour quelle raison. Par exemple, si votre fichier est très gros, la rapidité d'exécution... A+
job75 XLDnaute Barbatruc 10 Mars 2011 #11 Re : Formule Re, job75 à dit: ... la rapidité d'exécution... Cliquez pour agrandir... Alors je fais exécuter 1000 fois la copie des tableaux, résultats sur mon vieil ordi (Excel 2003) : - Formule job75 => 24 s - Formule Tibo => 1,75 s - Formule Tibo-David84 => 1,75 s. Ma formule calcule 3 NB.SI, celle de Tibo une seule... A+ Pièces jointes Formule job75.xls 45.5 KB · Affichages: 27 Formule Tibo.xls 46.5 KB · Affichages: 35 Formule Tibo-David84.xls 46.5 KB · Affichages: 40 Vote positif 0 Vote négatif
Re : Formule Re, job75 à dit: ... la rapidité d'exécution... Cliquez pour agrandir... Alors je fais exécuter 1000 fois la copie des tableaux, résultats sur mon vieil ordi (Excel 2003) : - Formule job75 => 24 s - Formule Tibo => 1,75 s - Formule Tibo-David84 => 1,75 s. Ma formule calcule 3 NB.SI, celle de Tibo une seule... A+
job75 XLDnaute Barbatruc 10 Mars 2011 #12 Re : Formule Re, Ah mais non, pouce ! Je pensais qu'une plage illimitée ne changeait rien ici => NB.SI(A:A;D4) Mais non, il faut utiliser NB.SI(A$4:A$13;D4) Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)/(NB.SI(D$3:D4;D4)<=NB.SI(A$4:A$13;D4))) Et alors... la durée du calcul passe à 1,45 s (mais ça peut varier...). On en apprend tous les jours sur XLD Edit : pour finir, j'ai testé sur mon portable avec Excel 2010. Les 3 formules donnent des résultats très voisins, autour de 2,20 s. A+ Pièces jointes Formule job75(1).xls 45.5 KB · Affichages: 37 Dernière édition: 10 Mars 2011 Vote positif 0 Vote négatif
Re : Formule Re, Ah mais non, pouce ! Je pensais qu'une plage illimitée ne changeait rien ici => NB.SI(A:A;D4) Mais non, il faut utiliser NB.SI(A$4:A$13;D4) Code: =INDEX(B:B;EQUIV(D4;A:A;0)+NB.SI(D$3:D3;D4)/(NB.SI(D$3:D4;D4)<=NB.SI(A$4:A$13;D4))) Et alors... la durée du calcul passe à 1,45 s (mais ça peut varier...). On en apprend tous les jours sur XLD Edit : pour finir, j'ai testé sur mon portable avec Excel 2010. Les 3 formules donnent des résultats très voisins, autour de 2,20 s. A+