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
 

Roblochon

XLDnaute Barbatruc
.List =Range("A1:D2").Value

Mais là il faut prévoir 4 colonnes dans le combobox !

Pour un combobox 2 colonnes : Application.Transpose(Range("A1:D2").Value)
 
Dernière édition:

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,
 

Fichiers joints

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 ?
 

Roblochon

XLDnaute Barbatruc
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:

Roblochon

XLDnaute Barbatruc
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
 

ChTi160

XLDnaute Barbatruc
Bonjour Sébastien
Pour connaître la plage tu récupères son adresse.
Soit ici
Msgbox plg.Address
Il me semble que tu as 11 Colonnes ......De 0 à 10 dans cette procédure.
Jean marie
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
possible combien de visibles?
en utilisant autre méthode que AddItem pour alimenter ta ListBox !
jean marie
 

Roblochon

XLDnaute Barbatruc
Bonjour,
Comment fonctionne la méthode Currentregion ci-dessous ?
Cliquez dans une cellule de tableau et faites CTRL+* et vous verrez comment fonctionne currentRegion qui en est l'équivalent VBA.

Je suis limité à 10 colonnes avec cette méthode !
De toute façon, à quoi sert de charger 15 colonnes et de n'en montrer que 5 ?
Vous pourrez toujours retrouver les données des colonnes non affichées, dans votre feuille de calcul.

Cordialement
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas