Formule

wajih_Excel

XLDnaute Occasionnel
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

job75

XLDnaute Barbatruc
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:

david84

XLDnaute Barbatruc
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

Tibo

XLDnaute Barbatruc
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
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

job75

XLDnaute Barbatruc
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:

david84

XLDnaute Barbatruc
Re : Formule

Re
Par rapport aux matricielles de David et Tibo, ma formule ne fait pas le poids
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:cool:.
A+
 

job75

XLDnaute Barbatruc
Re : Formule

Re,

... la rapidité d'exécution...

Alors je fais exécuter 1000 fois la copie des tableaux, résultats sur mon vieil ordi (Excel 2003) :

- Formule job75 => 24 s :mad:

- 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

job75

XLDnaute Barbatruc
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 :cool:

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:

Discussions similaires

  • Résolu(e)
Microsoft 365 Formule SI
Réponses
8
Affichages
225

Statistiques des forums

Discussions
312 488
Messages
2 088 840
Membres
103 972
dernier inscrit
steeter