Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 liste déroulante en cascade avec des noms définis

  • Initiateur de la discussion Initiateur de la discussion will91
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

will91

XLDnaute Nouveau
Bonjour,
je suis sur un projet et j'ai besoin de faire une liste déroulante en cascade pour sélectionner l'émetteur d'une requête en fonction de son département.
c'est à dire que la liste des départements est déjà défini et chaque département à son personnel; et toute les listes sont définis et disponible dans le gestionnaire des noms.
Pour sélectionner un émetteur, il faudrait que le département soit préalablement défini.
Je tourne en rond depuis et je souhaiterais avoir un coup de pouce.

Merci.
 

Pièces jointes

Solution
Bonjour,

Juste avec

VB:
Private Sub ComboBox3_Change()
    If ComboBox3.ListIndex > -1 Then
        ComboBox2.List = Application.Range(ComboBox3.Value).Value
    End If
End Sub

ça semble fonctionner

Par contre, ne laissez pas de lignes vides dans vos tableaux structurés, cela ne sert à rien puisqu'ils s'autoagrandissent tout seuls comme des grands.

Cordialement
Bonjour @will91 🙂,
Bienvenue sur XLD 😉,

Tout d'abord :
  • Il est bon pour les tableaux structurés de ne pas de laisser de lignes vides en fin de tableau. Le tableau structuré a la faculté d'ajouter automatique d'insérer une ligne quand c'est nécessaire.
  • Le département RH a un intitulé différent entre dans le tableau des départements et comme en-tête du tableau de ses membres => le code proposé ne donne donc aucun résultat pour ce département RH
  • pour le fun, je n'utilise pas les noms définis
  • sans ligne vide dans ComboBox2
J'ai utilisé au maximum le vocabulaire des tableaux structutés pour le fun. Le code proposé est le suivant :
VB:
Private Sub ComboBox3_Change()
Dim DptCol&, t, i&
   ComboBox2.Clear
   With Sheets("listes")
      DptCol = Application.IfError(Application.Match(ComboBox3.Value, .Rows(2), 0), 0)
      If DptCol = 0 Then Exit Sub
      t = .Cells(2, DptCol).ListObject.ListColumns(1).Range.Value
      For i = 2 To UBound(t)
         If Trim(t(i, 1)) <> "" Then ComboBox2.AddItem t(i, 1)
      Next i
   End With
End Sub
 

Pièces jointes

Dernière édition:
Bonjour,

Juste avec

VB:
Private Sub ComboBox3_Change()
    If ComboBox3.ListIndex > -1 Then
        ComboBox2.List = Application.Range(ComboBox3.Value).Value
    End If
End Sub

ça semble fonctionner

Par contre, ne laissez pas de lignes vides dans vos tableaux structurés, cela ne sert à rien puisqu'ils s'autoagrandissent tout seuls comme des grands.

Cordialement
 
Re,

Pour ne pas être tributaire de l’orthographe des départements dans le tableau des départements et dans les en-têtes des tableaux des personnels, on utilise un seul tableau nommé Personnels.
  • ce tableau comporte les noms des départements en en-têtes (qui sont modifiables n'importe quand)
  • ce tableau peut s'agrandir facilement tant en ligne qu'en colonne
  • plus de problème d'orthographe puisque le nom d'un département n'apparait qu'une seule fois
  • plus besoin de définir une flopée de noms
Le code à l'initialisation :
VB:
Private Sub UserForm_Initialize()
Dim x
   Me.Caption = "MyUserform"
   For Each x In Sheets("Listes").ListObjects("Personnels").HeaderRowRange: ComboBox3.AddItem x: Next x
End Sub

Le code au changement de ComboBox3 :
Code:
Private Sub ComboBox3_Change()
Dim x
   ComboBox2.Clear
   If ComboBox3.ListIndex < 0 Then Exit Sub
   For Each x In Sheets("listes").ListObjects("Personnels").ListColumns(1 + ComboBox3.ListIndex).DataBodyRange
      If Trim(x) <> "" Then ComboBox2.AddItem x
   Next x
End Sub

Private Sub ComboBox2_Change() a été supprimé.
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
130
Réponses
40
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…