Discussion:
VBA pour filtrer automatiquement
(trop ancien pour répondre)
Emile63
2017-01-23 17:19:22 UTC
Permalink
Raw Message
Bonjour à tous,

Je souhaite automatiser avec une macro un filtre automatique, dans le but que sur une base de donnée le filtre ne porte que sur l'année en cours.

Je travaille sur le code suivante, mais ça coince un peu...

MaDate = "01.01." & Year(Date)

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, _ Operator:=xlFilterValues, Criteria2:=Array(0, "<=" & "MaDate")

Est-ce que quelqu'un peut me dire mon erreur ?
Merci d'avance pour votre aide,
cordialement.
Emile
JièL
2017-01-23 17:49:12 UTC
Permalink
Raw Message
Hello,

si c'est pour filtrer sur l'année en cours ça doit donc être <= "31.12."
& Year(Date), non ?
ou
"01.01." & Year(Date) + 1

pas testé le reste.
--
JièL en cours
Post by Emile63
Bonjour à tous,
Je souhaite automatiser avec une macro un filtre automatique, dans le but que sur une base de donnée le filtre ne porte que sur l'année en cours.
Je travaille sur le code suivante, mais ça coince un peu...
MaDate = "01.01." & Year(Date)
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, _ Operator:=xlFilterValues, Criteria2:=Array(0, "<=" & "MaDate")
Est-ce que quelqu'un peut me dire mon erreur ?
Merci d'avance pour votre aide,
cordialement.
Emile
News.aioe.org
2017-01-23 17:51:56 UTC
Permalink
Raw Message
Bonjour,

Un exemple en utilisant un filtre élaboré.

La plage à filtrer sur la feuille : A1:A882 et ne
retenir les lignes pour l'année 2017

'--------------------------------------------------
Sub test()

'Définir la zone de critère C1:C2 ' la plage que tu veux disponible dans la
feuille
'C1 Laisser totalement vide
'C2 saisir la formule "=YEAR(RC[-2])=2017"
'pour obtenir seulement les données pour l'année 2007

Dim Sh As Worksheet
Set Sh = Worksheets("Feuil1")

With Sh
.Range("C1") = ""
.Range("C2") = "=YEAR(RC[-2])=2017"
.Range("A1:A882").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Sh.Range("C1:C2"), Unique:=FalseEnd With
.Range("C2") = ""
End Sub
'--------------------------------------------------

MichD
isabelle
2017-01-23 18:43:49 UTC
Permalink
Raw Message
bonjour Emile,

MaDate = DateSerial(Year(Date), 1, 1)

isabelle
Post by Emile63
Bonjour à tous,
Je souhaite automatiser avec une macro un filtre automatique, dans le but que sur une base de donnée le filtre ne porte que sur l'année en cours.
Je travaille sur le code suivante, mais ça coince un peu...
MaDate = "01.01." & Year(Date)
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, _ Operator:=xlFilterValues, Criteria2:=Array(0, "<=" & "MaDate")
Est-ce que quelqu'un peut me dire mon erreur ?
Merci d'avance pour votre aide,
cordialement.
Emile
isabelle
2017-01-23 19:09:37 UTC
Permalink
Raw Message
ou plutot,

MaDate = Application.Text(DateSerial(Year(Date), 1, 1), "d/m/yyyy")
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="<=" &
MaDate, Operator:=xlAnd

isabelle
LSteph
2017-01-24 11:25:35 UTC
Permalink
Raw Message
Bonjour,

nul besoin de macro
si ta version n'est pas trop ancienne et que le champ contient bien des dates au format date

Donnée filtre automatique dans le déroulant prendre chronologique et applique: "Cette année"

Cdlt.

--
LSteph
Post by Emile63
Est-ce que quelqu'un peut me dire mon erreur ?
Merci d'avance pour votre aide,
cordialement.
Emile
LSteph
2017-01-24 11:38:28 UTC
Permalink
Raw Message
...ce qui écrit en VBa pour une plage donnée à trier donnerait à peu près ceci:

[MaPlage].AutoFilter Field:=1, Criteria1:= _
xlFilterThisYear, Operator:=xlFilterDynamic
Emile63
2017-01-24 19:06:44 UTC
Permalink
Raw Message
Bonjour,
Merci à tous pour votre aide.
vos solutions m'ont permis de trouver mon bonheur. :-)
Cordialement,
Emile

Loading...