Re : MenuderoulantParOnglet
Bonjour,
tout est faisable par formule, ce qui évite de passer par VBA (plus dynamique, pas d’événement à gérer, pas de code qui plante...)
L'astuce est de créer des noms dynamiques.
Déterminer les parties disponibles :
Parties =DECALER(Global!$B$2;0;0;NBVAL(Global!$B:$B)-1)
Idem pour les descriptifs :
Descriptif =DECALER(Global!$C$2;0;0;NBVAL(Global!$B:$B)-1)
Savoir dans quel onglet on se trouve :
Onglet =STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;NBCAR(CELLULE("nomfichier"))-TROUVE("]";CELLULE("nomfichier")))
Déterminer le nombre de parties qui correspondent à l'onglet :
NBValeurs =SOMMEPROD((Parties=Onglet)*1)
Générer une matrice {1;2;...} jusqu'au nombre de valeurs calculées plus haut :
Matrice =LIGNE(INDIRECT("$A$1:$A$" & NbValeurs))
Générer la liste des valeurs correspondantes
Validation =INDEX(Descriptif;PETITE.VALEUR((Parties=Onglet)*LIGNE(Parties);NB.SI(Parties;"<>" & Onglet)+Matrice)-1)
Et enfin, dans chaque onglet, faire une validation des données par liste, avec
Source =DECALER(Validation;0;0;NbValeurs)
Attention, ceci ne fonctionne que si la liste de l'onglet Parties est classée par parties....
Voir le fichier joint.