Rechercher une date avec des conditions

Link31000

XLDnaute Nouveau
Bonjour!

J'ai une base de données avec une colonne A contenant une liste de dates et une colonne B contenant une liste de prix correspondant.

Je souhaite trouver une formule qui me permette, à partir de la date d'aujourd'hui, de trouver le prix correspondant à la date d'il y a un mois, seulement il y a quelques complications:
-les dates vont du lundi au vendredi ce qui veut dire, que je cherche la date la plus proche, si la date exacte n'est pas disponible
-il faut impérativement que le prix de la date recherchée soit dans le mois précédent (aujourd'hui par ex, nous sommes en Juin je recherche donc la valeur en Mai)

Cela parait simple mais je n'arrive qu'à trouver la date la plus proche 30jours avant or cela pose probleme:
si je suis le 30 Juin et que le 30 Mai tombe un dimanche, excel me trouvera donc la valeur la plus proche qui sera le lundi suivant donc le 1er Juin alors que j'aurai voulu avoir le vendredi soit le 28 Mai...

Voici la formule que j'ai trouvée:
=MIN(SI(ABS(date-MOIS.DECALER(D2;-1))=MIN(ABS(date-MOIS.DECALER(D2;-1)));prix))
ou alors
=INDEX(prix;EQUIV(VRAI;ABS(date-DATE(ANNEE(D2); MOIS(D2)-1;JOUR(D2)))=MIN(ABS(date-DATE(ANNEE(D2); MOIS(D2)-1;JOUR(D2))));0))
(les formules sont à entrer avec maj+ctrl+entrée)

En pièce-jointe le document sur lequel je travaille.

Merci d'avance,

Quentin
 

Pièces jointes

  • MatPlusProche2 (2).xls
    33.5 KB · Affichages: 35

CISCO

XLDnaute Barbatruc
Bonjour

Est-ce que la "petite" formule suivante te donne la bonne date ?
Code:
SI(MOIS(SI(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2))-INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1))=MIN(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2))-INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1)+1)-DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2)));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1)+1)))=MOIS(D2)-1;SI(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2))-INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1))=MIN(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2))-INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1)+1)-DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2)));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1)+1));INDEX(date;EQUIV(DATE(ANNEE(D2);MOIS(D2)-1;JOUR(D2));date;1)))

@ plus
 

Pièces jointes

  • MatPlusProche2 (2).xls
    64.5 KB · Affichages: 30
Dernière édition:

Discussions similaires

Réponses
3
Affichages
351

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33