En O2 : liste triée des valeurs uniques de la colonne A :
=TRIER(UNIQUE(A3:A57))
La liste de validation en H2 :
=O2#
En P1, transposition de la liste précédente :
=TRANSPOSE(TRIER(UNIQUE(A3:A57)))
En P2, à tirer vers la droite, liste des valeurs de la colonne D par code de la colonne A :
=TRIER(FILTRE($D$3:$D$57;($A$3:$A$57=P$1)))
En H4, validation de données avec la formule :
=DECALER($O$2;;EQUIV($H$2;$P$1#;0);NBVAL(DECALER($A:$A;;EQUIV($H$2;$P$1#;0)+13)))
";EQUIV($H$2;$P$1#;0)" représente le décalage horizontal de la valeur de H2 par rapport à O2.
"NBVAL(DECALER($A:$A;;EQUIV($H$2;$P$1#;0)+13" représente le nombre de valeurs correspondant à H2
=DECALER($O$2;;EQUIV($H$2;$P$1#;0);NBVAL(DECALER($A:$A;;EQUIV($H$2;$P$1#;0)+13)))
C'est à dire, la plage de valeurs correspondant à la valeur en H2.
Daniel