Filtre automatique par rapport à une date

Bonjour a tous,

j'ai crée une macro qui permet d'appliquer des filtre sur un fichier et compter le nombre de ligne apres chaque filtre

le filtre principal que je veux modifier c'est un filtre sur date et heure. je veux l'adapter pour que la macro fonctionne tout les jours car elle fonctionne seulement pour aujourd'hui.

je suis désoler pour la piece jointe mais le fichier est trop gros et donc ne passe pas.

voici la macro.

Sub Macro2()
'
' Macro2 Macro
'

' CCO Lille 22h/6h
    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
        xlFilterValues, Criteria2:=Array(3, "4/26/2017 22:59:0", 3, "4/26/2017 23:59:0", _
        3, "4/27/2017 0:58:0", 3, "4/27/2017 1:59:0", 3, "4/27/2017 2:58:0", 3, _
        "4/27/2017 3:57:0", 3, "4/27/2017 4:59:0", 3, "4/27/2017 5:59:0")

    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=19, Criteria1:= _
        "CCO LILLE"
        Dim x As Long
x = Application.Subtotal(3, Columns("S")) - 1
MsgBox "nombre de mission pour Lille 22h/6h = " & x

    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=21, Criteria1:= _
        "C - Critique"
        x = Application.Subtotal(3, Columns("U")) - 1
MsgBox "nombre de critique pour Lille 22h/6h = " & x

If Worksheets("Table").AutoFilterMode Then
     Worksheets("Table").AutoFilterMode = False
End If

End Sub

je veux mettre un truc comme ça:

Sub Macro2()
'
' Macro2 Macro
'

' CCO Lille 22h/6h
    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
        xlFilterValues, Criteria2:=Array(3, "date-1  22:59:0", 3, "date-1 23:59:0", _
        3, "date aujourd'hui 0:58:0", 3, "date aujourd'hui 1:59:0", 3, "date aujourd'hui 2:58:0", 3, _
        "date aujourd'hui 3:57:0", 3, "date aujourd'hui 4:59:0", 3, "date aujourd'hui 5:59:0")

    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=19, Criteria1:= _
        "CCO LILLE"
        Dim x As Long
x = Application.Subtotal(3, Columns("S")) - 1
MsgBox "nombre de mission pour Lille 22h/6h = " & x

    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=21, Criteria1:= _
        "C - Critique"
        x = Application.Subtotal(3, Columns("U")) - 1
MsgBox "nombre de critique pour Lille 22h/6h = " & x

If Worksheets("Table").AutoFilterMode Then
     Worksheets("Table").AutoFilterMode = False
End If

End Sub

SVP est ce que vous pouvez m'aider a réaliser ça. je vous remercie d'avance

bonjour

pourquoi du VBA ?

joins un extrait du fichier des données (sans VBA) allégé, avec ta recherche

je pense à un TCD ou des SOMMEPROD()

Bonjour,

j'ai fais un macro par ce que je dois traiter le fichier sur trois tranches. 22h/6h 6h/14h et 14h/22h en plus sur 3 ville. lille lyon et paris.

alors ca le fais beaucoup de cliques a la main.

mes responsables m'ont demandé une macro.

la le programme que tu viens de voir c'est que la première tranche horaire pour lille. mais comme c'est le Meme programme qui se répéte j'ai donné juste le 1e.

au juste je cherche juste a remplacer les date par un truc (aujourd'hui - 1 "22:59:0") et (aujourd'hui 05:59:0)

c'est a dire la macro oit reconnaître la date aujourd’hui et la date d'hier. les horaires ne vont pas changer.

ci joint le fichier de données

14fichier-a-traiter.zip (179.70 Ko)

Re

les supérieurs demandent des macros parce qu'ils n'ont aucune idée de ce qu'est Excel, alors faire comme avec un papier et un crayon ça leur rappelle le bon vieux temps

Excel est fait pour traiter des données

quels traitements de chaque fichier veux-tu faire par la suite ?

d'où viennent les fichiers : exports d'un gros logiciel ? saisie à la main ? dans les 2 cas, pourquoi ne pas exporter au moins 1 semaine d'un coup ? (ou environ 1 semaine, de manière à englober la dernière tranche horaire et au moins les 4 ou 5 jours entiers précédents)

as-tu besoin de mettre dans une seule feuille des milliers de lignes (des millions) ?

ceci est faisable sans macro, donc plus fiable.

si c'est pour que les trains arrivent à l'heure, il faut faire plus "pro"

Excel peut attaquer une base externe directement (PowerQuery) ou bien l'éditeur de la base peut faire le job, ou bien il peut exporter par semaine et non par petites tranches horaires mesquines.

Quand tu bloques sur un problème, reviens à la source de ton besoin réel.

franchement la tu m'aide pas du tout.

moi j'ai juste besoin d’inséré la commande "DATE" dans un autofilter. parce que depuis hier mais je n'arrive a rien. la commande date va m’éviter de sélectionner les date vu qu'elle va reconnaître la date du système.

Voila en fin ce que je veux quelqu'un puisse me corrigé. c'est cette parti de filtre au niveau des date.

c'est date()-1 et date()

ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
        xlFilterValues, Criteria2:=Array(3, "Date()-1 22:59:0", 3, "Date()-1 23:59:0", _
        3, "Date() 0:58:0", 3, "Date() 1:59:0", 3, "Date() 2:58:0", 3, _
        "Date() 3:57:0", 3, "Date() 4:59:0", 3, "Date() 5:59:0")

voici la macro en entier ainsi que le fichier qu'elle doit traiter.

Sub Macro2()
'
' Macro2 Macro
'

' CCO Lille 22h/6h
     ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
        xlFilterValues, Criteria2:=Array(3, "Date()-1 22:59:0", 3, "Date()-1 23:59:0", _
        3, "Date() 0:58:0", 3, "Date() 1:59:0", 3, "Date() 2:58:0", 3, _
        "Date() 3:57:0", 3, "Date() 4:59:0", 3, "Date() 5:59:0")

    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=19, Criteria1:= _
        "CCO LILLE"
        Dim x As Long
x = Application.Subtotal(3, Columns("S")) - 1
MsgBox "nombre de mission pour Lille 22h/6h = " & x

    ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=21, Criteria1:= _
        "C - Critique"
        x = Application.Subtotal(3, Columns("U")) - 1
MsgBox "nombre de critique pour Lille 22h/6h = " & x

If Worksheets("Table").AutoFilterMode Then
     Worksheets("Table").AutoFilterMode = False
End If

End Sub
20fichier-a-traiter.zip (179.71 Ko)

Bonjour,

ci-joint exemple pour instructions à modifier

Array(CDate(Date - 1 & " " & "22:59:0"))

Bonjour, je te remercie pour la réponse. j'ai trouvé aussi cette solution. elle fonctionne correctement.

Criteria2:=Array(3, Format(Date - 1, "mm/dd/yyyy") & " 22:59:00"
Rechercher des sujets similaires à "filtre automatique rapport date"