Filtres avec 2 criètres sur 2 colonnes
Bonjour,
Après mes recherches, je n'ai pas trouvé comment faire un filtre avec deux criètres sur deux colonnes différentes.
De plus je n'ai pas trouvé comment mettre une cellule en critère (avec autofilter).
Pour des raisons de confidentialité, je ne joins pas de fichier.
Sub Choose_Oring_cliquer()
Sheets("Feuil2").Select
Range("A6").Select
On Error GoTo ErrorExe
Range("A6").AutoFilter Field:=2, Criteria1:=">"Sheets("Feuil1").Range("C31").Value, Operator:=xlAnd, _
Criteria2:="<Sheets("Feuil1").Range("C23").Value"
Range("A6").AutoFilter Field:=3, Criteria1:=">"Sheets("Feuil1").Range("C21").Value, Operator:=xlAnd, _
Criteria2:="<"Sheets("Feuil1").Range("C19").Value
Exit Sub
ErrorExe:
Cells.Find(1, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate
End SubJe veux faire quelque chose comme ça, avec deux critères du chaque colonne donc 4 critères en tout !
Si ce que je veux faire n'est pas possible, je suis preneur de vos idées, je pensais par exemple à mettre de la couleur au lieu du deuxième filtre.
Merci d'avance pour vos réponses !
Bonjour GJulien
Essaye comme ceci tu avais oublié la concaténation
Sub Choose_Oring_cliquer()
On Error GoTo ErrorExe
With Sheets("Feuil2")
With .Range("A6:Z6")
.AutoFilter Field:=2, Criteria1:=">" & Sheets("Feuil1").Range("C31").Value, Operator:=xlAnd, _
Criteria2:="<" & Sheets("Feuil1").Range("C23").Value
.AutoFilter Field:=3, Criteria1:=">" & Sheets("Feuil1").Range("C21").Value, Operator:=xlAnd, _
Criteria2:="<" & Sheets("Feuil1").Range("C19").Value
End With
End With
Exit Sub ' Sortir ici
ErrorExe:
Cells.Find(1, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate
End SubA+
BrunoM45 a écrit :Bonjour GJulien
Essaye comme ceci tu avais oublié la concaténation
Sub Choose_Oring_cliquer() On Error GoTo ErrorExe With Sheets("Feuil2") With .Range("A6:Z6") .AutoFilter Field:=2, Criteria1:=">" & Sheets("Feuil1").Range("C31").Value, Operator:=xlAnd, _ Criteria2:="<" & Sheets("Feuil1").Range("C23").Value .AutoFilter Field:=3, Criteria1:=">" & Sheets("Feuil1").Range("C21").Value, Operator:=xlAnd, _ Criteria2:="<" & Sheets("Feuil1").Range("C19").Value End With End With Exit Sub ' Sortir ici ErrorExe: Cells.Find(1, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate End SubA+
Merci Bruno, au moins ma macro peut se lancer ! mais elle m'a feuille cache toutes mes cellules = elle ne renvoie rien !
En revanche si j'utilise les valeur directement dans les cellules que j'ai choisi, comme ceci:
With .Range("A6")
.AutoFilter Field:=2, Criteria1:=">50", Operator:=xlAnd, _
Criteria2:="<55"
AutoFilter Field:=3, Criteria1:=">2.2", Operator:=xlAnd, _
Criteria2:="<3"Cela fonctionne ! Je ne sais donc pas comment faire, pour que la macro prenne les valeurs de mes cellules choisies !
Bonjour,
avec le fichier c'est plus facile
P.
Bonjour.
Dans celle qui fonctionne tu mets des guillemets partout.
Essaye
With Sheets("Feuil2")
With .Range("A6:Z6")
.AutoFilter Field:=2, Criteria1:= chr(34) & ">" & Sheets("Feuil1").Range("C31").Value & chr(34) , Operator:=xlAnd, _
Criteria2:= chr(34) & "<" & Sheets("Feuil1").Range("C23").Value & chr(34)
.AutoFilter Field:=3, Criteria1:= chr(34) &">" & Sheets("Feuil1").Range("C21").Value & chr(34) , Operator:=xlAnd, _
Criteria2:= chr(34) &"<" & Sheets("Feuil1").Range("C19").Value & chr(34)
End With
End WithBonne journée
Alors j'ai fais un petit fichier de Test,
j'ai remarqué qu'en réalité cela fonctionnait sauf que quand je met un chiffre à virgule, cela ne fonctionne plus.
Alors essaye de mettre des variables
Dim a as decimal
Dim b as decimal
De leur affecter les valeurs de tes cellules et d'ensuite les injecter elles dans ton code.
Elhevan a écrit :Alors essaye de mettre des variables
Dim a as decimal
Dim b as decimal
De leur affecter les valeurs de tes cellules et d'ensuite les injecter elles dans ton code.
Cela Fonctionne si je déclare mes ariables, je trouve cela un peu bizarre, quelqu'un aurait une explication ?
Merci aux personnes qui m'ont aidé !
Dim a, b, c, d
a = Sheets("Feuil1").Range("A1").Value 'avant les With
b = Sheets("Feuil1").Range("B1").Value
c = Sheets("Feuil1").Range("A2").Value
d = Sheets("Feuil1").Range("B2").ValueVoir mon classeur de Test ! il y a just a remplacer les variables dans mes criètes et cela fonctionne même pour mes virgules.
Je laisse le sujet ouvert pour avoir une explication et pour vérifier si cela fonctionne bien sur mon classeur original !
[EDIT]En fait cela ne fonctionne pas ^^ Je ne sais plus quoi faire
Re,
Ton problème vient juste du fait qu'en VBA la virgule n'est pas la bonne syntaxe
Essaye ça, chez moi ça marche
Sub Choose_Oring_cliquer()
Sheets("Feuil2").Activate
Range("A6").Select
On Error GoTo ErrorExe
With Sheets("Feuil2")
With .Range("A6")
.AutoFilter Field:=2, Criteria1:=">" & Replace(Sheets("Feuil1").Range("A1"), ",", "."), Operator:=xlAnd, _
Criteria2:="<" & Replace(Sheets("Feuil1").Range("B1"), ",", ".")
.AutoFilter Field:=3, Criteria1:=">" & Replace(Sheets("Feuil1").Range("A2"), ",", "."), Operator:=xlAnd, _
Criteria2:="<" & Replace(Sheets("Feuil1").Range("B2"), ",", ".")
End With
End With
Exit Sub
ErrorExe:
Cells.Find(1, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate
End SubA+
BrunoM45 a écrit :Re,
Ton problème vient juste du fait qu'en VBA la virgule n'est pas la bonne syntaxe
Essaye ça, chez moi ça marche
Merci Bruno !
En effet ça fonctionne de mon côté aussi mais j'ai l'impression que la macro ne prend que le premier autofilter sur la colonne en compte parce que j'ai beau changer les critères de mon deuxième filtre sur la colonne 3, rien ne change à l'affichage !
BrunoM45 a écrit :Sub Choose_Oring_cliquer() Sheets("Feuil2").Activate Range("A6").Select On Error GoTo ErrorExe With Sheets("Feuil2") With .Range("A6") .AutoFilter Field:=2, Criteria1:=">" & Replace(Sheets("Feuil1").Range("A1"), ",", "."), Operator:=xlAnd, _ Criteria2:="<" & Replace(Sheets("Feuil1").Range("B1"), ",", ".") .AutoFilter Field:=3, Criteria1:=">" & Replace(Sheets("Calcul").Range("A2"), ",", "."), Operator:=xlAnd, _ Criteria2:="<" & Replace(Sheets("Feuil1").Range("B2"), ",", ".") End With End With Exit Sub ErrorExe: Cells.Find(1, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate End Sub
En fait il y a juste une erreur sur le critère 1 du deuxième filtre, tu as mis Sheets("Calcul") au lieu de Sheets("Feuil1") mais c'est de ma faute, j'avais laisser cette erreur dans mon code !
Merci Encore ! Tout à l'air de fonctionner