Re : regroupement de données par référence
Bonjour,
=INDIRECT(D$1) fait référence à la plage dont le nom est saisi en D1
Si on tape Antony en D1,
écrire NB.SI(INDIRECT(D$1);NoBa) équivaut à écrire NB.SI(Antony;NoBa)
Avantage : la même formule dans tous les tableaux
et, si on veut, un seul tableau en modifiant seulement le contenu de D1
Petite.Valeur parce qu'il y a plusieurs réponses
Cette partie renvoie le n° des lignes, la 1ère puis la 2ème puis la 3ème, etc
PETITE.VALEUR(SI(NB.SI(INDIRECT(D$1);NoBa);LIGNE(Date));1 puis 2 puis 3, etc)
LIGNES(E$3:E3) copié vers le bas donne 1 puis 2 puis 3, etc
L'utilisation de Max et Equiv, c'est pour nommer les plages
C'est pour avoir la longueur des plages à prendre en compte
Ne pas faire travailler la formule sur 10 000 lignes alors qu'une centaine suffit
EQUIV("zz";Jour!$A:$A) renvie la position de la dernière cellule contenant du texte
EQUIV(9^9;Jour!$A:$A) renvie la position de la dernière cellule contenant du texte
9^9, c'est un nombre quelconque mais très grand que la formule ne risque pas de trouver
par défaut, elle renvoie la position du dernier nombre de la plage
Idem pour le texte avec "zz"
MAX(EQUIV("zz";Jour!$A:$A);EQUIV(9^9;Jour!$A:$A)) renvoie la + grande de ces deux valeurs donc la hauteur de la plage à prendre en compte
Les plages sont nommées en utilisant cette valeur, nommée "Hauteur"
=DECALER(Jour!$D$3;;;Hauteur)
Decaler(Réf ; nb de lignes ; nb de colonnes ; Hauteur ; Largeur)
On peut l'écrire comme ça aussi
=DECALER(Jour!$D$3;0;0;Hauteur;1)