Une petite lambda pour terminer la journée ?
Objectif : retourner la valeur VRAI ou FAUX si la cellule appartient à la plage.
Limite : Il faut que les deux soient sur la même feuille, évident, mais bon... Aussi, on teste une cellule par rapport à une plage, et pas un groupe de cellules par rapport à une plage.
Nom de la lambda : L_LaCelluleAppartientALaPlage
Formule (ne pas oublier le =) :
=LAMBDA(rCell;rPlage;ET(@LIGNE(rCell) >= @LIGNE(rPlage); @LIGNE(rCell) < (@LIGNE(rPlage) + LIGNES(rPlage)); @COLONNE(rCell) >= (@COLONNE(rPlage)); @COLONNE(rCell) < ((@COLONNE(rPlage)) + COLONNES(rPlage))))
Exemple d'utilisation
=L_LaCelluleAppartientALaPlage(C2;B13#)
Utilité : par exemple, cela permet d'avoir une lambda simple pour appliquer un format à une plage dynamique propagée. D'autant plus utile avec PIVOTER.PAR qui s'en vient. La fonction est aussi très facile à combiner avec PRENDRE et EXCLURE pour ne considérer que certaines parties d'une plage propagées, comme la zone des données.
On applique ensuite à la totalité de la feuille (merci à Céline BOUCOURT de m'avoir poussé à considérer cette technique que je pensais dangereuse pour la mémoire et la taille du fichier).
Limites de l'exemple :
- Le déplacement de plage va créer des zones non-contigües dans la mise en forme conditionnelle.
- Je n'ai pas encore testé les performances d'une telle approche sur des gros fichiers.
Note : il existe une autre méthode directement dans Excel pour retourner l'intersection de deux plages : on met un espace entre les deux. Le problème, c'est que l'on ne peut pas utiliser cette approche dans une mise en forme conditionnelle.
Et vous, comment feriez-vous ?