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 Sub

Je 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 Sub

A+

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 Sub

A+

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 With

Bonne 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").Value

Voir 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 Sub

A+

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

Rechercher des sujets similaires à "filtres crietres colonnes"