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 :

Filtre d'une ListBox via plusieurs ComboBoxs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 13
    Par défaut Filtre d'une ListBox via plusieurs ComboBoxs
    Bonjour à tous
    Je m'adresse à vous car je me confronte à un problème. L'ensemble de mes recherches ne m'a pas permis de le résoudre seul, j'en appelle donc à vos compétences.

    LA situation Actuelle :

    J'ai un userform. Dans celui-ci il y a deux ComboBoxs qui servent de bornes à ma ListBox1.

    Mes deux Comboboxs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ComboBox1.List = Range("Liste1").Value
    ComboBox2.List = Range("Liste1").Value
    Ma ListBox1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        With ListBox1
            .ColumnCount = 5
            .ColumnWidths = "30;50;40;30;3"
        End With
    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
    24
    25
    26
    27
    28
    29
     
    Private Sub CommandButton1_Click()
    Dim R1 As Range
    Dim R2 As Range
    Dim Ld As Integer
    Dim Lf As Integer
    Dim i As Integer
    Dim j As Byte
     
    Me.ListBox1.Clear
    With Sheets("Modif Galley")
        Set R1 = .Columns(1).Find(Me.ComboBox1.Value, , xlValues, xlWhole)
        Set R2 = .Columns(1).Find(Me.ComboBox2.Value, , xlValues, xlWhole)
        If Not R1 Is Nothing Then
            If Not R2 Is Nothing Then
                Ld = R1.Row
                Lf = R2.Row
                Set R1 = Nothing
                Set R2 = Nothing
                For i = Ld To Lf
                    Me.ListBox1.AddItem .Cells(i, 1)
                    For j = 1 To 5
                        ListBox1.List(ListBox1.ListCount - 1, j) = .Cells(i, j + 1)
                    Next j
                Next i
            End If
        End If
    End With
    End Sub
    J'ai aussi 4 autres comboboxs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ComboBox3.List = Range("Tableau_Version").Value
    ComboBox4.List = Range("Tableau_VersionRk").Value
    ComboBox5.List = Range("Tableau_STD").Value
    ComboBox6.List = Range("Tableau_Fal").Value
    Mon problème

    Ma macro se déroule comme ceci.
    Etape 1 : On choisit les bornes de la listbox en remplissant les deux permières combobox.
    Etape 2 : On click sur Accepter pour l'affichage de la listbox

    Et je bloque pour réaliser les étapes suivantes :

    Etape 3 : On choisit les valeurs des comboboxs
    Etape 4 : En appuyant sur un bouton de Cnd, la listbox n'affiche que les lignes présentant les éléments des comboboxs de l'étape 3.

    J'ai du être brouillon dans mon explication. Si vous avez besoin d'éclaircissement je suis là. Je vais continuer de chercher de mon côté .

    CDLT
    PyKoda

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Pykoda, bonjour le forum,

    Je ne suis pas sûr mais il me semble qu'on ne peut pas imbriquer deux Find.Range l'un dans l'autre. Essaie peut-être ça :

    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
    Private Sub CommandButton1_Click()
    Dim R1 As Range
    Dim R2 As Range
    Dim Ld As Integer
    Dim Lf As Integer
    Dim i As Integer
    Dim j As Byte
     
    Me.ListBox1.Clear
    With Sheets("Modif Galley")
        Set R1 = .Columns(1).Find(Me.ComboBox1.Value, , xlValues, xlWhole)
        If Not R1 Is Nothing Then Ld = R1.Row Else Exit Sub
        Set R2 = .Columns(1).Find(Me.ComboBox2.Value, , xlValues, xlWhole)
        If Not R2 Is Nothing Then Lf = R2.Row Else Exit Sub
        For i = Ld To Lf
            Me.ListBox1.AddItem .Cells(i, 1)
            For j = 1 To 4
                ListBox1.List(ListBox1.ListCount - 1, j) = .Cells(i, j + 1)
            Next j
        Next i
    End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 13
    Par défaut
    Bonjour Thautheme,
    merci d'avoir pris la peine de regarder mon problème. L'ensemble des codes que j'ai donné, sont fonctionnels. Ce qu'il me manque c'est la démarche pour pour filtrer la ListBox1 (multi colonne) avec les valeurs des autres comboboxs qui influent chacunes sur une colonne spécifique de ma ListBox

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Pardon j'avais mal compris...
    Je connais la politique des fichiers joints de ce site car les intervenants ont un tel niveau qu'ils sont en mesure de se passer d'un fichier. Toutefois, pour des gens comme moi, il serait préférable d'avoir le fichier pour pouvoir tester et éventuellement te proposer une solution...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 13
    Par défaut
    Re,

    Le fichier est soumis à une directive de confidentialité. Je vais m'employer à réaliser un clone sans donnée importante.
    Je re-post un message avec le fichier, une fois celui-ci complété.

Discussions similaires

  1. Comment créer une listBox avec plusieurs colonnes ?
    Par volcom_2222 dans le forum VB.NET
    Réponses: 6
    Dernier message: 27/02/2010, 11h44
  2. Rapatrier des données filtrées dans une listbox
    Par starius dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/01/2009, 13h21
  3. Réponses: 6
    Dernier message: 12/12/2008, 06h56
  4. Comment remplir une listBox via une collection
    Par loic20h28 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 20/11/2008, 14h49
  5. comment charger une listbox via une requete access
    Par sanfour_walhan dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/12/2006, 07h44

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