Excel – Les inputs dans la list des valeurs sont basées sur une autre valeur de colonne

Nous avons un scénario dans excel (2010) où la list des valeurs présentes dans un drop down menu change dynamicment en fonction de la colonne de cette ligne. Par exemple, Considérez le drop down menu "Superviseur" dans la feuille 1 ci-dessous:

Emp Grade Supervisor A 14 B 12 C 13 D 12 E 12 F 13 G 14 

Maintenant, disons qu'il y a un drop down menu pour le superviseur. Pour chaque employé, le superviseur peut être une personne de son grade ou de ses notes supérieures seulement. Donc, par exemple. Pour l'employé de la 13e année, peut avoir un superviseur avec le grade 13 ou le 14e année seulement, et non le 12e année.

Comment puis-je écrire une condition personnalisée comme celle-ci dans la list des valeurs? J'ai essayé avec des choses comme la gamme nommée, le décalage etc. mais aucun ne permet de spécifier des conditions personnalisées. De l'aide?

J'ai trouvé le document suivant pour vous aider à créer des menus déroulants dépendants de la validation des données: DV0064 – Listes des personnes dépendantes Effacer les cellules, qui peuvent être téléchargées ici (gratuitement):

http://www.contextures.com/excelfiles.html#DataVal

Vous pouvez adapter l'exemple à vos besoins.

 =OFFSET('validation pivot'!$A$1,0,1,COUNTIFS('validation pivot'!$A:$A,">="&B2),1) 

Le superviseur doit être au less sa note de rémunération (> = B2). Pour qu'il fonctionne, il faut que le pivot soit inséré dans le pivot de validation A1. Comment créer le pivot (notes précipitées):

  1. ajoutez la note et emp'emp comme sous-set
  2. vue tabulaire 'pour avoir des colonnes séparées
  3. répétez les labels pour pouvoir les countr
  4. Supprimez les autosums (à la fois au sein et au total) pour ne pas faire l'object d'un évitement
  5. masquer les labels des colonnes et les mêmes filters
  6. ordre décroissant (grade) 'pour get une méthode de correspondance simple
  7. données: ne stockez aucun "pour actualiser l'ordre décroissant à chaque fois

Voir le file d'échantillons téléchargé.

Ce code (colonne A = EMP, B = Grade, C = Superviseur)

 Sub test() Dim actualgrade As Integer Dim lastRowA As Integer Dim numbers As Ssortingng lastRowA = Sheets("sheet1").Cells(Sheets("sheet1").Rows.Count, "A").End(xlUp).Row For i = 2 To lastRowA '1 = headers actualgrade = Cells(i, 2) For j = 2 To lastRowA If Cells(j, 2) >= actualgrade Then numbers = numbers & " " & Cells(j, 1).Value End If Next j Cells(i, 3).Value = numbers numbers = "" Next i End Sub 

Rend ce résultat:

 Emp Grade Supr A 14 AG B 12 ABCDRFG C 13 ACFG D 12 ABCDRFG R 12 ABCDRFG F 13 ACFG G 14 AG 

N'hésitez pas à le changer comme si vous en avez besoin