Remarque : Cet article a été publié à l'origine dans notre forum communautaire.
Google Sheets offre un ensemble de fonctionnalités robustes qui permettent aux utilisateurs de traiter les données de manière dynamique et efficace. Avec l'ajout des fonctions LAMBDA et MAP, vous pouvez simplifier les opérations complexes en formules à cellule unique qui génèrent dynamiquement des résultats en deux dimensions (2D). Dans ce blog, nous verrons comment exploiter ces fonctions à l'aide d'un exemple pratique tiré d'un scénario de suivi de produit.
Aperçu du scénario
Imaginez que vous suiviez les prix de différents produits sur plusieurs mois. Votre ensemble de données enregistre les détails du produit et les mises à jour de prix à différents moments. Le défi consiste à résumer les mises à jour mensuelles des prix de chaque produit dans un seul tableau récapitulatif, affichant le dernier prix de chaque produit à la fin de chaque mois.
Structure des données
Notre jeu de données principal, nommé `Product`, est formaté comme suit :
Objectif
L'objectif est de créer un tableau "Résumé mensuel des produits" qui se met à jour dynamiquement pour afficher le dernier prix de chaque produit à la fin de chaque mois. Ce tableau doit s'adapter aux nouvelles données au fur et à mesure qu'elles sont ajoutées à l'onglet "Produit".
Mise en œuvre étape par étape
1. Mise en place des en-têtes de date
Tout d'abord, nous générons les en-têtes pour chaque mois dans le tableau récapitulatif :
Cellule B1 :
=ARRAYFORMULA(SI($B$2:$2="", "", TEXTE($B$2:$2,"yy")&"-"&TEXTE(MOIS($B$2:$2),"00")))
Cette formule utilise `ARRAYFORMULA` pour appliquer un formatage de texte à chaque date de la ligne 2, créant ainsi un format YY-MM pour les en-têtes de mois.
2. Génération de plages de dates mensuelles
Ensuite, nous préparons une liste de dates de fin de mois pour chaque mois compris dans la fourchette souhaitée :
Cellule C2 :
=ARRAYFORMULA(EOMONTH($B$2,SEQUENCE(1,15+12,1,1)))
Ici, `EOMONTH` et `SEQUENCE` génèrent des dates de fin de mois à partir de la date de `B2`, couvrant une plage de 27 mois potentiels (15 + 12 à titre d'exemple).
3. Lister des produits uniques
Nous identifions tous les produits uniques à partir de l'onglet "Produit" :
Cellule A4 :
=UNIQUE(Produit!$B$2:$B)
4. Cartographie dynamique des prix
La partie la plus complexe est la création d'un résumé dynamique des prix. Il s'agit de faire correspondre la liste des produits et, pour chaque produit, de faire correspondre la liste des mois afin d'obtenir le prix le plus récent à la fin de chaque mois :
Cellule B4 :
=MAP($A$4:$A, LAMBDA(produit,
SI(produit="","",
MAP($B$1:$1, LAMBDA(mois,
SI(mois)="", "", IFNA(REQUÊTE(FILTRE(Produit!$B$2:$D, TEXTE(Produit!$D$2:$D,"YY-MM")=mois, Produit!$B$2:$B=produit),"SELECT Col2 ORDER BY Col3 DESC LIMIT 1"),)
)
))
)
))
Cette formule permet d'afficher chaque produit, puis chaque mois. Elle utilise `FILTER` pour réduire les enregistrements au produit et au mois spécifiques, puis `QUERY` pour obtenir le dernier prix pour ce mois en utilisant l'horodatage (`ORDER BY Col3 DESC LIMIT 1`).
Conclusion
En intégrant `MAP` et `LAMBDA` à d'autres fonctions de Google Sheets, nous avons créé un tableau récapitulatif dynamique et facilement actualisable qui s'adapte à mesure que de nouvelles données sont ajoutées. Cette approche minimise le besoin de mises à jour manuelles et permet une grande évolutivité dans la gestion des données produit au fil du temps. Ce n'est qu'un exemple de la puissance de ces fonctions pour transformer le traitement et l'analyse des données dans Google Sheets.





