Salut,
Voici une "solution" :
Tu rentres cette formule dans la case source de ta validation de données (onglet donnée du ruban). N'oublies pas le "=" avant la formule
=SI($A$2="Français";Feuil1!$A$2:$A$17;Données!$B$1:$B$7)
si A2 = Français, la liste prend les valeurs A2 à A17 de la Feuil1
sinon elle prend les valeurs de la feuille Données de B1 à B7
Remplace la partie sinon part une nouvelle conditionnelle si(condition;vrai;faux).
ex :
=SI($A$2="Français";Feuil1!$A$2:$A$17;si($A$2="Math";Feuil2!$A$2:$A$17;si(etc etc)))
$A$2="Français" => condition du "1er" SI
Feuil1!$A$2:$A$17 => argument à prendre en compte si la condition est vrai
si($A$2="Math";Feuil2!$A$2:$A$17;si(etc etc)) => argument à prendre en compte si la condition est fausse (ici une autre condition)
Attention au nombre de parenthèses !!! On en ouvre autant qu'on en ferme, ni plus, ni moins.
C'est lourd et pas optimiser comme formule mais ça devrait fonctionner. Attention je ne sais pas si la limitation à 256 caractères par cellules existe toujours (si tu ne sais pas entrer la dernière partie de ta formule c'est qu'elle existe toujours auquel cas va voir le post scriptum).
Bonne chance pour ton projet.
PS : Si tu en as la possibilité je te conseille de te pencher sur les macros. Il y a plein de tuto en ligne qui explique comment coder une condition, une boucle ou utiliser un objet. Google est ton ami et "VBA débuter" la clé d'un autre univers (attention peupler de Geeks et de Nerds quasi exclusivement)
++