Créer une liste déroulante des en-tête d'un tableau

Bonjour à tous,

Je me résous à poster car je ne trouve pas la solution à mon problème.

Je vais poser ma question sur un exemple simple.

Prenons un tableau avec en en-tête des identités (nom-prénoms)

Les lignes suivantes sont des critères renseigner:

Comment, par exemple, créer (dans un autre onglet) dans une cellule, la liste déroulante des personnes blondes?

Dans une autre cellule la liste déroulante des personnes au yeux bleus?

Etc?

j'espère que quelqu'un aura la solution qui m'échappe complétement malgré plusieurs heures de recherche sur le net...

Un grand merci d'avance.

Titos

Bonjour titos

Te faut-il impérativement une liste déroulante?

Si ce n'est pas le cas regarde ce fil https://forum.excel-pratique.com/excel/extraire-des-donnees-d-un-tableau-t39050.html

Bonjour mobil,

Merci pour ta réponse rapide.

Alors oui, il me faudra, au final, une liste déroulante...

Mais je jette un œil à ta proposition, vu que les demandes se ressemblent un peu...

ça s'approche vraiment de ma recherche, mais je ne peux toucher à la structure de mon tableau comme le nécessite ta solution.

Bonjour Titos,

Voici un exemple :

122titos.xlsm (24.95 Ko)

Tu peux ajouter d'autres combobox, il faut simplement bien paramétrer le filtre de chargement :

Call LoadFilter(CoBBleux, "Bleu", 3, 1)

Call LoadFilter(LeCombobox, LeFiltre,LaLigneDeComparaison, LaLigneDuNomDeLaPersonne)

On peut mettre jusqu'à 10 colonnes dans un combobox ou listbox. A adapter en fonction de tes besoins.

Bonjour Benead,

Merci pour ta participation...

Encore des éléments très intéressants! Merci!

Mais novice, je déchiffre ton code et je tente de l'adapter à mon fichier... Je veux absolument comprendre.

Un élément me chiffonne comment n'afficher dans la liste que l'identité de la personne (par ex: RIRI ) et non tous les éléments lui correspondant?

Merci.

@+

Titos

Bonsoir Titos,

Modifie les lignes surlignées pour comprendre :

Sub LoadFilter(CoB As Object, sValue As String, Lig As Long, LigTexte)
   Dim Sh As Worksheet, Col As Long, ligDetail As Long
   Set Sh = ThisWorkbook.Worksheets("Feuil1")
   CoB.Clear
   For Col = 2 To Sh.UsedRange.Columns.Count
      If Sh.Cells(Lig, Col).Text = sValue Then
         CoB.AddItem Sh.Cells(LigTexte, Col).Text
         For ligDetail = 2 To 3
            CoB.List(CoB.Object.ListCount - 1, ligDetail - 1) = Sh.Cells(ligDetail, Col).Text
         Next
      End If
   Next Col
CoB.ColumnCount = 3
   CoB.ColumnWidths = "50;50;50"
   CoB.ListWidth = "150"
End Sub

CoB.ColumnCount est le nombre de colonnes que tu veux afficher

CoB.ColumnWidths est la largeur de chacune des colonnes à afficher

CoB.ListWidth est la largeur totale de la liste. Si cette valeur est inférieure à la la somme des largeurs des 3 colonnes, il y aura un ascenseur horizontal. Si cette valeur est égale à 0, c'est la largeur de combobox qui est prise en compte

Donc pour ton cas, tu dois mettre les valeurs par défaut :

CoB.ColumnCount = 1

CoB.ColumnWidths = ""

CoB.ListWidth = 0

Rechercher des sujets similaires à "creer liste deroulante tete tableau"