Problème de filtre par macro

  • Initiateur de la discussion Sylvain
  • Date de début
S

Sylvain

Guest
Bonjour,

Mon problème est le suivant. J'ai une base de données que je dois filtrer par macro. Cette base de donné se trouve sur la feuille de travail "table1" et le critère que je veux utiliser pour le filtrage ce trouve dans le même classeur sur la feuille de travail "Feuil1" dans la cellule "A3".

Les données filtrées doivent contenir et non être égales à A3.

Tout ce que j'arrive à fair c'est une macro filtre = A3

Sub TEST2()

Worksheets("Table1").Select
Selection.AutoFilter Field:=1, Criteria1:=Sheets("Feuil1").Range("A3").Value

End Sub
 
J

Jean-Marie

Guest
Bonjour Sylvain

Essaye ce code :

Sub TEST2()

Worksheets("Table1").Select
Selection.AutoFilter Field:=1, Criteria1:="=*" & Sheets("Feuil1").Range("A3").Value & "*"

End Sub

Bonne fin de soirée

@+Jean-Marie
 
A

Alex

Guest
Salut à tous,
Dans le même genre, j'ai un comportement curieux qd je fais une macro du style:

'Les valeurs numériques décimales utilisent un point décimal et pas une virgule vu que ça marchait pas sinon
' Activation du filtre sur la colonne 21 (critereChamp21 vaut True)
If critereChamp21 Then
Selection.Range.AutoFilter _
Field:=21, _
Criteria1:=">=0.31", _
Operator:=xlAnd, _
Criteria2:="<=0.5"
Else
Selection.Range.AutoFilter Field:=21
End If

' et désactivation sur la col. 23 (critereChamp23 vaut False)
If critereChamp23 Then
Selection.Range.AutoFilter _
Field:=23, _
Criteria1:=">=0.11", _
Operator:=xlAnd, _
Criteria2:="<=0.15"
Else
Selection.Range.AutoFilter Field:=23
End If

Ce que j'obtiens :
- erreur sur l'instruction exécutée dans le 2e else ("La méthode Autofilter a échoué sur la classe Range")
- dans ma feuille de calcul, la 1e ligne de la sélection porte bien les filtres (présence des petites flèches vers le bas à droite de chaque cellule de titre) mais impossible d'accéder aux menus déroulants des petites flèches vers le bas...

Merci d'avance pour votre aide,
Alex.
 
A

Alex

Guest
Je me réponds à moi-même... :)

En fait il faut s'assurer qu'il n'existe pas d'AutoFilter sur la feuille considérée, puis en créer un sans préciser ses champs :

If ActiveSheet.AutoFilterMode Then
Range("A1").AutoFilter
End If

Selection.AutoFilter

Selection.AutoFilter Field:=21 Criteria1:="0.31"
Selection.AutoFilter Field:=23 Criteria1:="0.11"

Et voilà !
 

Discussions similaires

Statistiques des forums

Discussions
312 790
Messages
2 092 128
Membres
105 229
dernier inscrit
EV5474