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