Valeur la plus récente via fonctions dynamiques matricielles

Bonjour,

Je viens à vous pour une problématique précise que je n'arrive pas à résoudre:

J'ai un tableau (Master) complet avec :

- en colonne D des produits

- en colonne F des dates

- en colonne J des prix

Je souhaite créer, dans un autre onglet, un tableau avec des fonctions dynamiques matricielles (d'Office 365) qui se mettra à jour automatiquement à chaque nouveau produit.

Ce tableau devra afficher le montant de l'achat le plus récent pour chaque produit.

Je parviens, avec la formule suivante, à identifier la date d'achat la plus récente pour chaque produit:

=MAX.SI.ENS(Master[Date];Master[Produits];UNIQUE(Master[Produits]))

Je ne parviens cependant pas à afficher les prix liés à ces dates les plus récentes pour chaque produit.

J'imagine que la formule INDEX EQUIV pourrait fonctionner ici mais je ne parviens pas à formuler la requête correctement.

Pourriez-vous, s'il vous plait, m'aider ?

Merci beaucoup par avance !

Bonsoir,

comme le dit ma signature je suis bloqué à 2014 ! Mais surtout pour votre demande je suis bloqué par manque de fichier représentatif !

Je commence tout juste à maitriser les formules matricielle qu'Excel 365 arrive avec ses gros sabots et ses fonction simplifiant la vie !
JFL pourrait vous trouver une solution par PowerQuery, mais il lui faudra également un fichier "Test".

@ bientôt

LouReeD

Hello LouReeD, Lamp18,

Je pense qu’une formule UNIQUE suffirait avec un max.si.ens multi critère :)

Un fichier pourrait nous aider effectivement :)

N’hésitez pas et bonne soirée

Bonsoir à tous !

Je souhaite créer, dans un autre onglet, un tableau avec des fonctions dynamiques matricielles (d'Office 365)

Votre profil indique Excel 2019....

Bonsoir,

Merci pour vos retours,

Voici le tableau Master :

PaysVilleMagasinProduitTypeDate d'achatAnnée d'achatMonnaieColonne9Prix en €
FranceParisCarrefourPommeFruit30/11/20222022EUR3,15
FranceLyonCarrefourPommeFruit30/09/20222022EUR3,02
FranceMarseilleFranprixPommeFruit27/06/20222022EUR2,9
FranceParisAuchanFraisesFruit31/10/20222022EUR2,5
FranceLyonCarrefourFraisesFruit30/09/20222022EUR2,4
FranceGrenobleMonoprixBananeFruit31/12/20222022EUR3
FranceNantesAuchanPoireFruit30/01/20222022EUR2,4

Voici le tableau que je souhaiterais obtenir :

ProduitDernier prix d'achat
Pomme
Fraises
Banane
Poire

La colonne produit s'obtient via =UNIQUE(Master[Produit])

La colonne dernier prix d'achat représente mon problème.

(et la formule =MAX.SI.ENS(Master[Date d''achat];Master[Produit];UNIQUE(Master[Produit])) renvoie la dernière date d'achat de chaque produit)

Merci beaucoup par avance,

PS : J'ai modifié ma version d'Excel dans mon profil ;)

C'est bien joli tout ceci ! Donc on va devoir faire des copier/coller de votre message alors ?

@ bientôt

LouReeD

Aller, je ne vous en veux pas !
Voir le fichier joint :

@ bientôt

LouReeD

Super merci bcp LouReed !

Petite question, lorsque je reproduis votre formule, sur mon tableau (ici "Tableau2" dans le fichier ci-joint) le montant renvoyé est toujours celui du prix d'achat le plus récent de la pomme, quel que soit le fruit.

La formule étant identique, sauriez-vous ce qui empêche le bon accomplissement de celle-ci ?

Merci par avance !

Bonjour à tous !

Une proposition, sur la base du classeur produit par LouReeD (merci !!!), qui gère l'entièreté du tableau :

Merci JFL !

En effet, sur le fichier en PJ dans mon message ci-dessus les dates des derniers achats sont les mêmes sur plusieurs produits différents, ce qui pose problème à la formule originelle.

La votre semble parfaitement fonctionner dans cette situation mais j'avoue que sa technicité dépasse ma compréhension

Souhaitant éviter une fastidieuse explication à un néophyte comme moi, n'est-il pas possible d'adapter la formule de LouReed à la situation ?

Merci beaucoup par avance !

Bonjour à tous de nouveau !

Il est parfois (souvent ?) nécessaire de s'investir pour tirer la quintessence d'un outil...

A tester :

=FILTRE(Tableau2[Prix en €];(Tableau2[Produit]=M4)*(Tableau2[Date d''achat]=MAX((Tableau2[Produit]=M4)*Tableau2[Date d''achat])))

Bonjour à tous,

Merci JFL pour ta réponse !

Il semble cependant que, bien que cette formule fonctionne, elle ne met pas automatiquement à jour en "auto-fill" les résultats du dessous.

Est-ce qu'il existerait une méthode comparable pour avoir le même résultat mais avec ce résultat s'affichant pour Pomme et fraises, banane, poire directement ?

Merci beaucoup encore pour ton aide !

Bonsoir à tous !

En résumé.... vous désirez une formule matricielle dynamique (cf le titre de votre message) mais sans trop de fonctions matricielles dynamiques (cf ici !) mais avec tout de même une fonction matricielle dynamique (cf ici !) ......

En espérant avoir trouvé le bon dosage.....

En M4 (liste unique des produits) :

=UNIQUE(Tableau2[Produit])

En N4 (Liste des prix) :

=BYROW(M4#;LAMBDA(r;FILTRE(Tableau2[Prix en €];(Tableau2[Produit]=r)*(Tableau2[Date d''achat]=MAX((Tableau2[Produit]=r)*Tableau2[Date d''achat])))))

Bonjour JFL, un grand merci, le dosage est parfait et ça fonctionne parfaitement

Pour ma parfaite information, puis-je vous demander une décomposition de cette formule "en français" afin que j'en comprenne le fonctionnement ?

Il semblerait que la formule BYROW applique la formule LAMBDA à l'ensemble des lignes de la matrice mais je ne suis pas sûr de maitriser le reste...

Merci encore !

Bonjour à tous !

Il semblerait que la formule BYROW applique la formule LAMBDA à l'ensemble des lignes de la matrice mais je ne suis pas sûr de maitriser le reste...

Absolument ! Cette fonction applique la fonction LAMBDA sur les lignes passées en argument. Concernant le "reste"..... ce n'est qu'une adaptation de la proposition FILTRE donnée précédemment.

Vous noterez que ma contribution initiale (qui gère l'entièreté du tableau) est un "simple" cumul des deux formules : UNIQUE + BYROW . Ce type de formule globale en limitant les échanges espace graphique(feuille)/mémoire assure une importante vélocité dans le traitement.

Très clair merci !

Du coup par exemple, si je souhaitais, à gauche des produits, afficher le pays / ville / magasin correspondant en fonction du produit en question de manière automatique, devrais-je utiliser LAMBDA ou ceci est-il possible juste avec FILTRE ? Je suis preneur de la formulation de la formule dans ce cas.

Merci encore !

Bonsoir à tous de nouveau !

Nouvelle version !

Bonjour à tous,

Merci JFL !

Désolé j'ai incorrectement formulé ma question : dans le cas où les produits s'achèteraient toujours dans le même magasin situé dans la même ville, et que, par conséquent, nous n'aurions pas besoin de prendre en compte la date d'achat (comme exemple en PJ), devrions nous utiliser le même type de formule ou FILTRE suffirait à afficher le résultat en automatique ?

Merci encore !

Bonjour à tous !

Outre vos formulations très.... évolutives..... je ne sais pas ce que vous désirez obtenir...

"résultat en automatique"....certes....mais quel résultat ?????

Mettez manuellement ce qui est attendu dans votre classeur.

Je souhaiterais obtenir en colonnes B,C,D du tableau "proposition" le pays, la ville et le magasin correspondant au produit en question, renseigné de manière automatique.

Exactement comme vous l'avez fait via la formule

=BYROW(E15#;LAMBDA(r;FILTRE(Tableau2[Magasin];(Tableau2[Produit]=r)*(Tableau2[Date d''achat]=MAX((Tableau2[Produit]=r)*Tableau2[Date d''achat])))))

Mais je comprends que cette formule affiche le magasin correspondant au dernier achat. Or, dans mon dernier tableau en exemple, chaque produit ne s'achète que dans un seul type de magasin, inutile donc de rechercher la date d'achat MAX. J'imagine donc que la formule peut être simplifiée ?

Rechercher des sujets similaires à "valeur recente via fonctions dynamiques matricielles"