IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtrer une listbox dans Userform [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut Filtrer une listbox dans Userform
    Bonjour

    J'ai un code fonctionnel pour afficher dans une listbox dans une Userform.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Private Sub UserForm_Activate()
     
     
    ' -- Identification des variables
    Dim Ws As Worksheet
    Dim rg As Range, Tb()
     
     
    ' -- Initialisation des variables
    Set Ws = ThisWorkbook.Sheets("T_Compte")      'Nom de l'onglet contenant nos données
     
    With Ws
     
     
     Tb = .Range("B2:C" & .Range("A" & .Rows.Count).End(xlUp).Row)
             Me.ListBox1.List = Tb
     
         ListBox1.ColumnCount = 3
            ListBox1.Font.Size = 8.5
                ListBox1.ColumnWidths = "30,45,100"
    End With
    End Sub

    Je cherche depuis un moment comment afficher dans la ListBox1
    seulement les données dans la colonne A dont la valeur est 'Oui'


    J'ai déjà tenté plusieurs approche mais sans trouver le résultat espéré
    pourriez vous m'aider à aboutir à mon code

    merci d'avance
    Bonne fin d'année à tous

  2. #2
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    Il te suffit de boucler sur ton tableau et de remplir ta listeBox avec les valeurs désirées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Exemple()
     
        Dim Tb As Variant
        Dim i As Long, j As Long
     
        Tb = Feuil1.Range("A2:C" & Feuil1.Range("A" & Feuil1.Rows.Count).End(xlUp).Row).Value
     
        j = 0
        For i = LBound(Tb, 1) To UBound(Tb, 1)
            If Tb(i, 1) = "oui" Then              'filtre les éléments de la colonne A
                Me.ListBox1.AddItem Tb(i, 3), j  'ajoute les éléments de la colonne C
                j = j + 1
            End If
        Next i
     
    End Sub

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Pour récupérer les colonnes B et C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub UserForm_Activate()
        Dim Tb
        Tb = Sheets("T_Compte").Range("A2:C" & Feuil1.Range("A" & Feuil1.Rows.Count).End(xlUp).Row)
        With Me.ListBox1
            .ColumnCount = 3
            .Font.Size = 8.5
            .ColumnWidths = "30;45;100"
            For i = LBound(Tb, 1) To UBound(Tb, 1)
                If Tb(i, 1) = "oui" Then
                    .AddItem Tb(i, 2)
                    .List(.ListCount - 1, 1) = Tb(i, 3)
                    j = j + 1
                End If
            Next i
        End With
    End Sub
    Pourquoi définir 3 colonnes si tu n'en utilises que deux ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    Merci à vous deux.

    @Daniel J'avais utilisé 3 colonnes juste pour tester, j'ai ramené à 2 à présent puis ce çà marche

    bon réveillon
    Christian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/04/2014, 16h54
  2. Modifier une listbox dans un userform
    Par vins86 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/08/2013, 16h32
  3. Inserer le contenu d'une listbox dans une feuille
    Par PascGuil dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/08/2007, 16h13
  4. Comment récuperer une listbox dans un UserControl?
    Par 404error dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/03/2007, 08h31
  5. Photo à partir d'une listbox dans formulaire
    Par alex.a dans le forum IHM
    Réponses: 17
    Dernier message: 17/05/2006, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo