Listbox sous conditions

Bonjour

Est il possible de créer une listbox en fonction des cellules affichée sur la feuille après masquage de certaines et non pas en fonction de cellules choisies?

Ex suite au masquage il restera : A1, B1, D1, E1, G1, H1, J1

Merci

Bonjour,

Un exemple.

Daniel

19listbox.xlsm (24.55 Ko)

Bonsoir Daniel C et merci

Ce code est très simple et prédente les ligne en colonnes

en mettant quelque part "row' à la place de "column" est ce que cela donnera les cellules et leur contenu sous forme horizontales?

AA BB CC DD etc?

Polo

Bonjour,

La liste se déroule obligatoirement vers le bas. Pas vers la droite.

Daniel

En anglais, la traduction de liste déroulante est "dropdown list" (liste se déroulant vers le bas).

Daniel

Je me suis peut être mal expliqué

un exemple

image

si je veux par exemple masquer les colonnes C et G est il possible de reproduire le tableau suivant

image

dans une list box? en passant par un Cmd_button par exemple?

Merci

OK, je n'avais pas compris. Essaie :

13listbox.xlsm (27.71 Ko)

Daniel

Merci Daniel ça fonctionne bien

Sans vouloir être trop intrusif, pourais tu détailler le code pour que je puisse le comprendre et le reproduire?

Surtout les déclarations Dim et Offset

Merci

J'ai mi les explications dans la macro :

Private Sub CommandButton1_Click()
  Dim C As Range, Col As Integer, I As Integer, J As Integer
  'initialisation de la listbox
  Me.ListBox1.Clear
  'décompte des colonnes affichées
  'boucle sur les cellules A1:G1
  For Each C In [A1:G1]
    'si la colonne est affichée, incrément de "col"
    If C.EntireColumn.Hidden = False Then
      Col = Col + 1
    End If
  Next C
  With Me.ListBox1
    'on définit le nombre de colonnes de la listbox
    .ColumnCount = Col
    'boucle sur les noms de la colonne A
    For Each C In Range("A2", Cells(Rows.Count, 1).End(xlUp))
      J = 0
      'ajout du nom (colonne A) dans la listbox
      .AddItem C
      'ajout des autres colonnes
      '"I" représente le décalage par rapport à la colonne A
      'si I = 1, C.Offset(, I) représente un décalage de 1 par rapport à C
      'par exemple, si C est A2, C.Offset(, I) représente B2
      For I = 1 To 7 '"7" est le nombre maximum de colonnes
      If C.Offset(, I).EntireColumn.Hidden = False Then
        'si la colonne est affichée, incrément de 1
        J = J + 1
        'méthode standard pour remplir les autres colonnes
        '"List" est la table des données d ela listbox
        '"Listcount" est le nommbre de lignes
        .List(.ListCount - 1, J) = C.Offset(, I)
      End If
      Next I
    Next C
  End With

End Sub

Si tu veux des précisions, n'hésite pas.

Daniel

Merci Daniel je vais digérer le code pas sur que j'ai tout compris et faire des esssais

Petite et dernière question

Dans mon exemple les entêtes de lignes sont A B et suivant

Comment inclure dans la list box les titre

Ex:Nom, Marque , Couleur etc....

et bien sur en dessous de chaque les valeurs

Ce qui n'est pas le cas dans tn exemple

image

Merci

A ma connaissance, le seul moyen de le faire est de recopier les cellules dans un plage de cellules contigües ailleurs sur la feuille (ou sur une autre feuille. une autre solution serait de mettre des labels au dessus de chaque colonne de la listbox. Dis-moi ce que tu préfères.

Daniel

je pense que les labels au dessus seraient pas mal

Non après essais c'est bon tout fonctionne merci

Je reviendrais surement vers toi au fur et à mesure del'avancée du projet

Merci

Rechercher des sujets similaires à "listbox conditions"