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 :

Créer un filtre à partir d'une List [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut Créer un filtre à partir d'une List
    Bonjour,

    J'ai cherché un tas de chose, mais je n'arrive pas à réaliser ce que je souhaite.


    J'ai deux feuilles : une feuille ("LJ") remplie de détail pas jolie, et une jolie feuille ("Outil").

    J'utilise un moteur de recherche par mot clé sur la jolie feuille ("Outil"), c'est à dire qu'en tapant un mot dans ma TextBox21, je vais chercher dans la colonne 11 de la feuille "LJ" ce mot. Je retrouve dans ma ListBox21 le nom (je récupère le contenu de la colonne A en gros) de toutes les lignes où se trouvent se mot.
    Jusque là ça marche.



    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
     
    Private Sub CommandButton21_Click()
     
    If TextBox21 <> "" Then
     
        Call nbLigne
     
        For i = 0 To nb
     
     
     
            If Sheets("LJ").Cells(i, 11) Like "*" & TextBox21 & "*" Then
                   ListBox21.AddItem Sheets("LJ").Cells(i, 1)
            End If
        Next
     
    End If
     
    End Sub
    Or maintenant j'aimerais appliquer un filtre à ma feuille ("Outil") pour afficher seulement les lignes associées au résultat de ma ListBox21.

    J'ai regardé un tas de chose, mais étant donné que mon nombre de critère pour mon filtre étant variable, je ne sais pas comment m'y prendre. D'autant plus que pour le "Field", je vais chercher mes valeurs dans une autre feuille.

    Si vous pouviez m'aider, ça serait fort sympathique.

    En vous remerciant

    EDIT :

    J'avais pensé à utiliser Listbox21.Count pour avoir le nombre d'item de ma liste.
    Et après avec une boucle For k = 0 to (Listbox21.Count - 1), ressortir un a un les items de ma liste. Mais je n'y arrive pas :/

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Tu pourrais t'inspirer de la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:D10").AutoFilter Field:=1, Criteria1:=Array("titi", "toto", "tutu"), Operator:=xlFilterValues
    avec un array. Ceci te permet de filtrer sur plusieurs valeurs. Tu peux créer un array avec les éléments de ta listbox et l'utiliser comme critère de filtre.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut
    Merci riaolle de prendre le temps de lire mon sujet

    Ne maîtrisant pas très bien les Array, j'ai testé de passer par un tableau :

    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
     
     
    Dim tableau() As Variant
     
    nb = ListBox21.ListCount
    ReDim tableau(nb - 1)
     
     
    For k = 0 To nb - 1
     
    If ListBox21.Selected(k) Then
     
       tableau(k) = ListBox21.List(k)
    End If
     
    Next k
     
     
     
    Range("Tableau4").AutoFilter Field:=1, Criteria1:=tableau, Operator:=xlFilterValues


    Tableau4 correspond à la plage de tout mon tableau.

    Lorsque je fais cela : je me retrouve avec un filtre qui efface tout

    En mettant des MsgBox un peu partout j'ai l'impression que mon tableau ne s'est absolument pas rempli...

    Merci beaucoup

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut
    Up !

    Je n'y arrive malheureusement toujours pas :s

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    cf PJ

    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 36
    Par défaut
    Bonjour Jacques

    Merci beaucoup, vous et votre site êtes géniaux.

    Résolu !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2013, 16h11
  2. [XL-2007] Filtre à partir d'une liste
    Par gbdos dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/07/2012, 16h35
  3. Créer un dictionnaire à partir d'une liste
    Par jouclar dans le forum Général Python
    Réponses: 7
    Dernier message: 25/04/2012, 22h09
  4. [XL-2007] Effectuer un filtre à partir d'une liste déroulante
    Par Fenrhir dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/11/2009, 17h32
  5. [DOM4J] Créer un Xpath à partir d'une liste
    Par anisse4 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 30/06/2009, 13h03

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