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 :

VBA - filtrer tableau 5 critères [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut VBA - filtrer tableau 5 critères
    Bonjour,

    Je construis une base de données sur une bibliothèque d'articles. Avec VBA j'ai créé un formulaire qui me permet d'alimenter le tableau et j'ai une colonne dans laquelle je rentre des mots-clés.
    J'ai créé un deuxième formulaire qui doit me servir à filtrer le tableau selon les mots-clés qui seront saisis dans le champ. J'aimerais avoir jusqu'à 5 mots-clés pour pouvoir filtrer. Faut-il qu'il soit rentrés dans 5 textbox différentes ou est-il possible de tous les mettre dans une même textbox ?
    Que dois-je mettre dans le bouton pour que la recherche s'effectue ?

    Pour l'instant j'ai mis cela, mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
     
     
        ActiveSheet.Range("$A$1:$F$90000").AutoFilter Field:=6, Criteria1:="=*TextBox6.Value*", _
            Operator:=xlAnd, Criteria2:="=*TextBox7.Value*"
            Operator:=xlAnd, Criteria3:="=*TextBox8.Value*"
            Operator:=xlAnd, Criteria4:="=*TextBox9.Value*"
            Operator:=xlAnd, Criteria5:="=*TextBox10.Value*"
        ActiveWindow.SmallScroll Down:=-9
    End Sub
    Merci beaucoup pour votre aide !

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonsoir,

    Voici une proposition non testée, mais qui peut vous éclairer un peu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Crit_1 = TextBox6.Value
        Crit_2 = TextBox7.Value
        Crit_3 = TextBox8.Value
        Crit_4 = TextBox9.Value
        Crit_5 = TextBox10.Value
        NbCrit = 5 'Valeur à modifier si ajout de nouveaux critères
        For i = 1 To NbCrit
            On Error Resume Next
            Crit = Choose(i, "~*" & Crit_1 & "~*", "~*" & Crit_2 & "~*", "~*" & Crit_3 & "~*", "~*" & Crit_4 & "~*", "~*" & Crit_5 & "~*")
            If Err.Number = 0 Then
                ActiveSheet.Range(Votre tableau).AutoFilter Field:=6, Criteria1:=Crit
            End If
            On Error GoTo 0
        Next i
    A essayer et à adapter si besoin

    Cdlt

    Cdlt

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu utilises le VBA pour filtrer des données et que tu souhaites avoir une grande souplesse pour préparer tes critères, je ne peux que te conseiller d'utiliser la méthode AdvancedFilter de l'objet Range (Les filtres avancés d'excel)

    C'est une ligne de code en VBA si tu utilises des plages nommées

    A lire sur le sujet Les filtres avancés ou élaborés dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    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,

    Avec un seul TextBox


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub B_filtre_Click()
      Tbl = Split(Me.TextBox1, " ")
      ActiveSheet.Range("$A$1:$B$10000").AutoFilter Field:=2, Criteria1:=Tbl, Operator:=xlFilterValues
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Citation Envoyé par boisgontierjacques Voir le message
    Bonjour,

    Avec un seul TextBox


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub B_filtre_Click()
      Tbl = Split(Me.TextBox1, " ")
      ActiveSheet.Range("$A$1:$B$10000").AutoFilter Field:=2, Criteria1:=Tbl, Operator:=xlFilterValues
    End Sub
    Boisgontier


    Bonjour,
    Merci pour votre aide. Votre proposition filtre bien plusieurs selon plusieurs mots-clés, mais cela ne fonctionne pas s'il y a plusieurs mots-clés associés à une même ligne. Exemple : si dans la première ligne je mets "a d" et que je filtre avec "a b", je ne vois pas la ligne "a d" dans les résultats.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    As-tu tenté les filtres avancés d'excel ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    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,

    Plusieurs mots clés par ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub B_filtre_Click()
     If Me.TextBox1 <> "" Then
       Tbl = Split(Me.TextBox1, " ")
       For i = LBound(Tbl) To UBound(Tbl): Tbl(i) = "*" & Tbl(i) & "*": Next i
       ActiveSheet.Range("$A$1:$B$10000").AutoFilter Field:=2, Criteria1:=Tbl, Operator:=xlFilterValues
      End If
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonsoir,

    Voici une proposition non testée, mais qui peut vous éclairer un peu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Crit_1 = TextBox6.Value
        Crit_2 = TextBox7.Value
        Crit_3 = TextBox8.Value
        Crit_4 = TextBox9.Value
        Crit_5 = TextBox10.Value
        NbCrit = 5 'Valeur à modifier si ajout de nouveaux critères
        For i = 1 To NbCrit
            On Error Resume Next
            Crit = Choose(i, "~*" & Crit_1 & "~*", "~*" & Crit_2 & "~*", "~*" & Crit_3 & "~*", "~*" & Crit_4 & "~*", "~*" & Crit_5 & "~*")
            If Err.Number = 0 Then
                ActiveSheet.Range(Votre tableau).AutoFilter Field:=6, Criteria1:=Crit
            End If
            On Error GoTo 0
        Next i
    A essayer et à adapter si besoin

    Cdlt

    Cdlt

    Bonjour,
    J'ai testé votre proposition, cela me dit "erreur de syntaxe" et cela me surligne en jaune "Private Sub CommandButton1_Click()". J'ai mis votre proposition suite à cette ligne. Etait-ce ce qu'il fallait faire ?
    Merci, bonne journée.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/06/2018, 04h06
  2. [XL-2010] Filtrer tableau dynamique (virtuel) sur VBA
    Par juju152 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/04/2014, 15h33
  3. Réponses: 33
    Dernier message: 19/10/2012, 18h50
  4. VBA - Filtrer tableau croisé dynamique
    Par germ75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2011, 18h07
  5. Masquer un tableau selon critères VBA Word
    Par domseeker dans le forum VBA Word
    Réponses: 8
    Dernier message: 05/01/2009, 18h13

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