Macro de filtrage

Bonsoir,

6testmacro.xlsm (21.78 Ko)

Je souhaites réaliser des filtres (sur l'onglet "BASE STOCKAGE") via un autre onglet "Filtrage" par validation de données.

J'ai fait des notes dans mon fichier, pour une explication plus claire

Merci de votre aide.

Bonjour,

Un exemple (à adapter et à peaufiner !...).

4testmacro.xlsm (25.93 Ko)
Option Explicit

Dim lo As ListObject
Dim lo2 As ListObject

Public Sub FilterData()
Dim n, n2, Crit, Crit2, Crit3

    Set lo = Range("Sélection").ListObject
    Set lo2 = Range("Données").ListObject

    With lo
        Crit = .ListRows(1).Range.Cells(1, 2).Value     'Machine
        Crit2 = .ListRows(2).Range.Cells(1, 2).Value    'Entrée
        Crit3 = .ListRows(3).Range.Cells(1, 2).Value    'Sélection
    End With

    With lo2
        n = Application.Match(Crit2, .HeaderRowRange, 0)
        n2 = Application.Match(Crit3, .HeaderRowRange, 0)
        If .ShowAutoFilter Then .AutoFilter.ShowAllData
        .Range.AutoFilter field:=1, Criteria1:=Crit
        .Range.AutoFilter field:=n, Criteria1:="<>"
        .Range.AutoFilter field:=n2, Criteria1:="<>"
    End With

    Set lo = Nothing: Set lo2 = Nothing

End Sub

Public Sub ResetFilter()

    Set lo = Range("Sélection").ListObject
    Set lo2 = Range("Données").ListObject

    lo.ListColumns(2).DataBodyRange.ClearContents
    If lo2.ShowAutoFilter Then lo2.AutoFilter.ShowAllData

    Set lo = Nothing: Set lo2 = Nothing

End Sub

Bonjour Jean-Eric,

Merci beaucoup.

J'ai testé et ça fonctionne correctement pour le moment. Je vais essayer de comprendre le fonctionnement de cette macro et rajouter l'ensemble de mes filtres.

Je reviendrai peut-être vers vous en cas de problèmes

Cordialement.

Bonjour,

Merci de ce retour.

Pense à clore le sujet si la réponse correspond à ta demande.

Tu ouvriras un nouveau sujet pour de nouvelles questions.

Cdlt.

Je me permet de rouvrir le sujet, car la solution trouvée consiste à l'utilisation de l'outil tableau.

Cela ne m’arrange pas énormément. Existe t-il une autre solution ?

Merci.

Concernant l'histoire du tableau j'ai réussi à l'adapter à mon fichier.

J'ai un autre point à soulever, si je choisis "Film" dans filtrage en "B2" est-t-il possible d'avoir un ensemble de plusieurs critères de validé dans l'onglet "Base Stockage". J'ai aussi un autre type de filtrage à effectuer ça concerne le type option.

Je vous met en copie le fichier avec mes questions expliquées de manière plus claire.

11testmacrov1.xlsm (27.50 Ko)

Merci de votre aide.

Bonjour petit up :)

Merci !

Bonjour,

Bonjour Jean-Eric,

Autre façon de procéder ... écrire le résultat du test dans le tableau (n une ou plusieurs colonnes) et filtrer sur cette colonne résultat

Cela donne la main à l'utilisateur.

Pour faciliter les choses, j'aurais écrit les conditions différemment.

6testmacrov1.xlsm (21.79 Ko)
6testmacrov2.xlsm (30.24 Ko)

Bonjour,

Merci Steelson pour l'idée, mais je ne souhaite pas rajouter de donner sur l'onglet "Base Stockage"

Ci-joint mon code actuellement avec quelques commentaires :s

Public Sub FilterDataV2()
Dim n, n2, n3, n4, Crit, Crit2, Crit3, Crit4, Crit5, Crit6

    Set lo = Range("Sélection").ListObject
    Set lo2 = Range("Données").ListObject

    With lo
        Crit = .ListRows(1).Range.Cells(1, 2).Value     'Machine avec du film
        Crit2 = .ListRows(2).Range.Cells(1, 2).Value    'Machine avec du wrap
        Crit3 = .ListRows(3).Range.Cells(1, 2).Value    'Entrée
        Crit4 = .ListRows(4).Range.Cells(1, 2).Value    'Selection
        Crit5 = .ListRows(5).Range.Cells(1, 3).Value    'Option ZOZO
        Crit6 = .ListRows(6).Range.Cells(1, 3).Value    'Option LOULOU

    End With

    'Partie à intégrer au filtrage du dessous mais avec les conditions
    'Faire en sorte que les deux conditions B1 et B2 peuvent être coché oui en même temps
    'Existe t-il un filtrage qui permet juste de rajouter des criteres sans effacer les précédents?
    'Mettre un (if crit=oui and crit2=oui then etc...) pas possible car je vais rajouter le même genre de filtre

        If Crit = "Oui" Then

            With lo2
             .Range.AutoFilter Field:=1, Criteria1:=Array("TITI", "TUTU", "TATA", "TOTO", "RIRI"), Operator:=xlFilterValues
            End With

        End If

        If Crit2 = "Oui" Then

            With lo2
             .Range.AutoFilter Field:=1, Criteria1:=Array("FUFU", "FEFE", "FAFA", "FIFI", "RIRI"), Operator:=xlFilterValues
            End With

        End If

    'Problème concernant la concervation du filtre de la colonne 1

    With lo2
        n = Application.Match(Crit3, .HeaderRowRange, 0)
        n2 = Application.Match(Crit4, .HeaderRowRange, 0)
        n3 = Application.Match(Crit5, .HeaderRowRange, 0)
        n4 = Application.Match(Crit6, .HeaderRowRange, 0)

        If .ShowAutoFilter Then .AutoFilter.ShowAllData
  '      .Range.AutoFilter Field:=1, Criteria1:=Crit
        .Range.AutoFilter Field:=n, Criteria1:="<>"
        .Range.AutoFilter Field:=n2, Criteria1:="<>"
        .Range.AutoFilter Field:=n3, Criteria1:="="             'Filtrage des options on enlève les vides -> Si n3="" vide on fait pas le filtrage, c'est possible?
        .Range.AutoFilter Field:=n4, Criteria1:="="             '-> Si n4 vide on fait pas le filtrage ?
    End With

    Set lo = Nothing: Set lo2 = Nothing

End Sub

Merci encore de votre aide.

Cordialement

Bonjour,

Existe t-il un code VBA qui permet juste de rajouter des critères de filtrage sur une colonne déjà filtré en conservant les filtres précédent ?

Merci de votre aide.

Autre façon de procéder ... écrire le résultat du test dans le tableau (n une ou plusieurs colonnes) et filtrer sur cette colonne résultat

Cela donne la main à l'utilisateur.

Pour faciliter les choses, j'aurais écrit les conditions différemment.

6testmacrov1.xlsm (21.79 Ko)

C'est ce que je proposais ici en laissant la main !

Rechercher des sujets similaires à "macro filtrage"