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 lultiple sur listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Par défaut Filtre lultiple sur listbox
    Bonjour,

    je debute en VBA et je demande un peu d'aide.

    J'ai un textbox qui me permet de filtrer une liste en fonction d'un critere (Article / colonne B) et affiche les resultats dans une listbox

    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
    30
    31
    32
    33
    34
    35
    36
    Private Sub TextBox1_Change()
    Dim Plage As Range, Cell As Range
    Dim Recherche As String, Adresse As String
    Dim Ligne As Integer, N As Integer
    Dim C As Range
     
    ListBox1.Clear
    N = 0
     
    Recherche = TextBox1.Value
    Range("A1").Select
     
    Ligne = Feuil2.Range("B" & "65536").End(xlUp).Row
    Set Plage = Feuil2.Range("B" & "2:" & "B" & Ligne)
     
    With Plage
    Set C = .Find(Recherche)
    If Not C Is Nothing Then
    Adresse = C.Address
    Do
        If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
            'alimentation listBox
            ListBox1.AddItem C.Offset(0, -1), N
            ListBox1.List(N, 1) = C
            ListBox1.List(N, 2) = C.Offset(0, 1)
            ListBox1.List(N, 3) = C.Offset(0, 2)
            ListBox1.List(N, 4) = C.Offset(0, 3)
            N = N + 1
        End If
     
        Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Address <> Adresse
        End If
    End With
     
    End Sub
    Maintenant j'aimerais réaliser un 2eme filtre (ici sur le prix / colonne C) grace a une 2eme textbox.

    Je n'arrive pas trouver de code.

    Pouvez vous m'aider ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Peut être en rajoutant une condition "If" à l'intérieur de la première du genre "If C.Offset(, 1) = Prix Then où Prix est la variable qui prend valeur, par exemple, dans TextBox2 :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Private Sub TextBox1_Change()
     
        Dim Plage As Range, Cell As Range
        Dim Recherche As String, Adresse As String
        Dim Ligne As Integer, N As Integer
        Dim C As Range
        Dim Prix As Double
     
        ListBox1.Clear
        N = 0
     
        Recherche = TextBox1.Value
        Prix = TextBox2.Value
     
        Range("A1").Select
     
        With Feuil2
     
            Set Plage = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp))
     
        End With
     
        With Plage
            Set C = .Find(Recherche)
     
            If Not C Is Nothing Then
     
            Adresse = C.Address
     
            Do
                If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
     
                    If C.Offset(, 1) = Prix Then
     
                        'alimentation listBox
                        ListBox1.AddItem C.Offset(0, -1), N
                        ListBox1.List(N, 1) = C
                        ListBox1.List(N, 2) = C.Offset(0, 1)
                        ListBox1.List(N, 3) = C.Offset(0, 2)
                        ListBox1.List(N, 4) = C.Offset(0, 3)
                        N = N + 1
     
                    End If
     
                End If
     
                Set C = .FindNext(C)
     
            Loop While Not C Is Nothing And C.Address <> Adresse
     
            End If
     
        End With
     
    End Sub
    Hervé.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2006, 12h43
  2. Programmation d'un filtre particulier sur formulaire
    Par student dans le forum Access
    Réponses: 2
    Dernier message: 24/02/2006, 12h34
  3. filtre fonctionne sur un "=" et pas sur un "&
    Par hugo69 dans le forum Access
    Réponses: 3
    Dernier message: 21/11/2005, 11h52
  4. filtre WHERE sur premier caractère d'une colonne
    Par Maljuna Kris dans le forum Requêtes
    Réponses: 8
    Dernier message: 20/11/2005, 18h52
  5. filtre perl sur un mail
    Par sasame dans le forum Modules
    Réponses: 3
    Dernier message: 21/01/2005, 07h34

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