XL 2016 RESOLU - Listbox & Filtre

sebastien450

XLDnaute Occasionnel
Bonjour,
J'ai rempli une listbox multicolonne avec la méthode rowsource (plage nommée).
J'aimerais que la valeur contenue dans la colonne N°2, permette un filtre : Si 0 on affiche la ligne, Si 1 on ne l'affiche pas

Sauf que j'ai l'impression que ce n'est pas possible, car il faudrait aller supprimer dans la rowsource ?

Uniquement possible avec Listbox et la méthode Additem ?

Sébastien
 

sebastien450

XLDnaute Occasionnel
C'est un listbox que j'ai, pas un combobox, ce qui change son remplissage sauf erreur de ma part.
Je veux essayer de faire un contrôle avant de charger les données sous la forme
If cells(x,x).value = 1 then listbox1..List =Range("A1:D2").Value
Je pense que c'est plus simple de ne charger que les lignes qui m'interesse Vs tout charger puis supprimer des lignes chargées.
Mais je me trompe peut être.
 

sebastien450

XLDnaute Occasionnel
Bonjour,
je joint un fichier car je n'arrive pas à utiliser la méthode add.Item pour ajouter l'intégralité de ma ligne si la colonne= P_MONT.

La vraie difficulté réside que je ne souhaite pas supprimer ma ligne du fichier source.
Merci,
 

Pièces jointes

  • Classeur1.xlsm
    25.9 KB · Affichages: 15

ChTi160

XLDnaute Barbatruc
Bonjour Sébastien
Bonjour le Fil ,le Forum

je pense que tu sais , que l'approvisionnement d'une Listbox via la méthode "AddItem" est limité à 10 colonnes . Tu peux donc passer par un Tableau Temporaire et charger ta ListBox via la Méthode
" Column ou List " ! pas sur d'avoir compris Lol
Mais je ne comprends pas ce que tu entends par :
La vraie difficulté réside que je ne souhaite pas supprimer ma ligne du fichier source.
jean marie
 

sebastien450

XLDnaute Occasionnel
Je peux charger uniquement 10 colonnes dans ce cas. Je n'en affiche que 5.
Je ne souhaite pas supprimer ma ligne ne correspondant pas au critère dans la feuille Excel.
Tu peux me montrer comment charger à partir de la méthode column, je m'en suis jamais servi ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,


Pour rappel, les indices de colonnes de listbox commencent à 0 et les numéros de colonne de feuille commencent à 1
VB:
Private Sub UserForm_Initialize()
    Dim lig As Long
    Dim plg As Range

    ListBox1.ColumnWidths = "80;80;160;50;80"

    Set plg = Feuil2.Range("A1").CurrentRegion
    For lig = 2 To plg.Rows.Count
        If plg.Cells(lig, 11) <> "P_MONT" Then
            With ListBox1
                .AddItem plg.Cells(lig, 1) ' Ajout dans première colonne de listbox
                ' Ajout dans les suivantes
                .List(.ListCount - 1, 1) = plg.Cells(lig, 2)
                .List(.ListCount - 1, 2) = plg.Cells(lig, 3)
                .List(.ListCount - 1, 3) = plg.Cells(lig, 4)
                .List(.ListCount - 1, 4) = plg.Cells(lig, 5)
            End With
        End If
    Next lig
End Sub

[Edit] à vous de décider quelle colonne de feuille va dans quelle colonne de listbox

Cordialement
 

ChTi160

XLDnaute Barbatruc
Re Sébastien
Bonjour Roblochon , le Forum
j'avais compris qu'il parlait de la méthode "Column"
soit Ex :
VB:
 ListBox1.Column =Tableau
je ne comprends pas ceux ci
J'aimerais que la valeur contenue dans la colonne N°2, permette un filtre : Si 0 on affiche la ligne, Si 1 on ne l'affiche pas
Tu parles de la Colonne N°2 et cette colonne contient les "Articles" mais la Colonne "NB OPE" contient elle des 0 et des 1 ?
Donc ! tu ne filtres que sur 1 et 0 dans la Colonne "NB OPE" ?
jean marie
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour @ChTi160

Apparemment sur le fichier il s'agit de la colonne K (11) la seule à contenir des valeurs "P_Mont" !

Quant au 5 autres colonnes à afficher, comme il ne dit rien là dessus, j'ai pris les 5 suivantes.
A lui d'adapter.

Bonne journée à toi
 

sebastien450

XLDnaute Occasionnel
Merci pour vos réponses,
Je m'en suis sorti avec le code ci-dessous.
J'ai juste un soucis, que j'ai contourné par la suite : Je suis limité à 10 colonnes avec cette méthode !

Et j'ai une question complémentaire : Comment fonctionne la méthode Currentregion ci-dessous ? Concrètement quelle plage trouve t-il ?
plg = Feuil2.Range("A1").CurrentRegion


Code:
 Dim lig As Long
    Dim plg As Range
    ListBox3.ColumnWidths = "80;80;160;0;0;0;80;0;90;0;0" ' Taille des colonnes à adapter avec propriétés
    Set plg = Feuil2.Range("A1").CurrentRegion ' je défini la plage
    For lig = 2 To plg.Rows.Count
        If plg.Cells(lig, 11) <> "P_MONT" Then ' je ne veux pas voir le poste P_MONT
            With ListBox3
                .AddItem plg.Cells(lig, 1) ' Ajout dans première colonne de listbox 'OF
                .List(.ListCount - 1, 1) = plg.Cells(lig, 2) ' ART
                .List(.ListCount - 1, 2) = plg.Cells(lig, 3) ' DESI
                .List(.ListCount - 1, 3) = plg.Cells(lig, 4) ' QTE OF - non affiché
                .List(.ListCount - 1, 4) = plg.Cells(lig, 5) ' N°OUT - Non affiché
                .List(.ListCount - 1, 5) = plg.Cells(lig, 6) ' CADENCE - Non affichée
                .List(.ListCount - 1, 6) = plg.Cells(lig, 7) ' NB OPE
                .List(.ListCount - 1, 7) = plg.Cells(lig, 10) ' COVAR - Non affiché
                .List(.ListCount - 1, 8) = plg.Cells(lig, 11) ' POSTE
                .List(.ListCount - 1, 9) = plg.Cells(lig, 12) ' N° ALTERNA- Non affichée
                '.List(.ListCount - 1, 10) = plg.Cells(lig, 13) ' N° version => pas possible 10 colonnes atteintes.
            End With
        End If
    Next lig
 

Discussions similaires

Réponses
4
Affichages
242

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon