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 :

Filtrage ListBox par différentes TextBox [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Par défaut Filtrage ListBox par différentes TextBox
    Bonjour à tous,

    Étant un peu amateur, voir novice sur VBA, j'aurai besoin d'un peu d'aide par rapport à un fichier.

    Mon but est de pouvoir filtrer les informations de la ListBox par différentes TextBox, puis d'afficher les informations non présentes dans la ListBox lorsque je sélectionne une ligne.

    Mes problèmes sont les suivants :
    - Lorsque je fais une recherche par la première TextBox, la ListBox perd les titres des colonnes ainsi que la mise en forme de la ListBox
    - Ma recherche mutli critères (multi TextBox) ne fonctionne pas
    - Lorsque je fais une recherche et que je sélectionne ensuite une ligne de la TextBox, les informations qui s'affichent en dessous ne sont pas les bonnes

    Pourriez-vous m'apporter vos expertises et aides, au moins partiellement ?

    Fichier Abonné avec Macro Draft.xlsm

    En vous remerciant par avance.

    Diddle

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je ferai comme ç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
    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
    57
    58
    59
    60
    61
    Private Sub Remplissage()
    Dim Typ As String, Nom As String, Pren As String, Adresse As String
    Dim Plage As Range, c As Range
    Dim LastLig As Long
    Dim X As Integer
     
    Typ = Trim(Me.TextBox19) & "*"
    Nom = UCase(Trim(Me.TextBox20)) & "*"
    Pren = UCase(Trim(Me.TextBox21)) & "*"
     
    Me.ListBox1.Clear
     
    With Worksheets("Liste")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set Plage = .Range("A1:A" & LastLig)
        With Plage
            Set c = .Find(Typ)
            If Not c Is Nothing Then
                Adresse = c.Address
                Do
                    If UCase(c.Offset(, 2)) Like Nom And UCase(c.Offset(, 3)) Like Pren Then
                        With Me.ListBox1
                            .AddItem c, X
                            .List(X, 1) = c.Offset(0, 1)
                            .List(X, 2) = c.Offset(0, 2)
                            .List(X, 3) = c.Offset(0, 3)
                            .List(X, 4) = c.Offset(0, 4)
                            .List(X, 5) = c.Offset(0, 5)
                            .List(X, 6) = c.Offset(0, 6)
                        End With
                        X = X + 1
                    End If
     
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Adresse
            End If
        End With
        Set Plage = Nothing
    End With
    End Sub
     
     
    Private Sub UserForm_Initialize()
     
    Remplissage
    End Sub
     
    Private Sub TextBox19_Change()
     
    Remplissage
    End Sub
     
    Private Sub TextBox20_Change()
     
    Remplissage
    End Sub
     
    Private Sub TextBox21_Change()
     
    Remplissage
    End Sub
    Sinon, pour les entêtes de colonnes, passes par des labels ajustés selon la largeur des colonnes de ta ListBox, car le columnHeads n'est utile que quand on remplit la listbox à l'aide de la propriété RowSource.

    Il faudra aussi, ajouter une colonne dans ta feuille de données comme index ou identifiant de tes données (sans doublons) car après filtrage de ListBox, le remplissage de tes textbox tel que écrit dans ton fichier ne sera pas correct. Cet index sera aussi la première colonne de ta ListBox et il faudra adapter le code en conséquence

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Par défaut
    Bonjour mercatog,

    Merci pour ta solution.
    Elle fonctionne parfaitement.

    Encore merci pour ton aide précieuse.

    Bien cordialement

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

Discussions similaires

  1. Filtrage listbox et remplissage textbox
    Par Elumastebit dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2008, 10h29
  2. [VBA-E] Séparer les colonnes d'une listbox par des lignes?
    Par mulot03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2006, 14h03
  3. Réponses: 2
    Dernier message: 11/05/2006, 22h21
  4. Variable accessible par différentes classe
    Par jbidou88 dans le forum Langage
    Réponses: 6
    Dernier message: 03/05/2006, 10h27
  5. Réponses: 8
    Dernier message: 01/12/2005, 11h40

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