VBA insérer la commande date dans un autofilter

michel90

XLDnaute Nouveau
Bonjour,
je souhaite que quelqu'un puisse me corriger la parti autofilter de ma macro.
c'est au niveau de Date()-1 et Date()

c'est a dire je veux que la macro reconnais la date d'aujourd'hui et la date d'hier et qu'elle puisse sélectionner les date d'hier te d'aujourd'hui ainsi que les heures. les heures ne changent pas sauf les dates. le système refuse d'exécuter la macro. l'erreur est dans le filtre. la macro sera utilisé chaque jour. Je vous remercie par avance


VB:
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
voici le fichier qu'elle traite.
 

Fichiers joints

D.D.

XLDnaute Occasionnel
Hello.
Dans un autofilter, la date doit être sous la forme "mm/jj/aa" (en Français ici).
Du coup, pour toi il faut quelque chose comme:
ActiveSheet.Range("$A$1:$V$5068").AutoFilter Field:=6, Operator:= xlFilterValues, Criteria2:=Array(2, Format(Date - 1, "mm/dd/yy"))
 

michel90

XLDnaute Nouveau
Hello.
Dans un autofilter, la date doit être sous la forme "mm/jj/aa" (en Français ici).
Du coup, pour toi il faut quelque chose comme:
ActiveSheet.Range("$A$1:$V$5068").AutoFilter Field:=6, Operator:= xlFilterValues, Criteria2:=Array(2, Format(Date - 1, "mm/dd/yy"))

bonjour,
voila ce que j'ai essayé mais ça marche pas. ma méthode autofilter a échoué. c'est l'erreur indiqué.

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

D.D.

XLDnaute Occasionnel
Je te montre que pour le premier critère, le reste sera similaire:
ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
xlFilterValues, Criteria2:=Array(2, Format(Date - 1, "mm/dd/yyyy") & " 22:59:00")

(note l'espace entre le " et le 22)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Cherchez du coté d'un code à peu près comme ça :
VB:
Dim TF(0 To 15), P As Long
For P = 0 To 7
   TF(2 * P) = 3: TF(2 * P + 1) = CStr(Date + (P < 2) + TimeValue(Array("22:59", "23:59", "0:58", "1:59", "2:58", "3:57", "4:59", "5:59")(P)))
   Next P
ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:=xlFilterValues, Criteria2:=TF
Mais je n'arrive pas à le faire tourner, il n'y a semble-t-il pas de date d’aujourd’hui dans les données.
 

michel90

XLDnaute Nouveau
Je te montre que pour le premier critère, le reste sera similaire:
ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
xlFilterValues, Criteria2:=Array(2, Format(Date - 1, "mm/dd/yyyy") & " 22:59:00")

(note l'espace entre le " et le 22)
je te remercie bcp. c'est exactement ça. Un grand Merci. je profite pour publie la correction :

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

michel90

XLDnaute Nouveau
Bonjour.
Cherchez du coté d'un code à peu près comme ça :
VB:
Dim TF(0 To 15), P As Long
For P = 0 To 7
   TF(2 * P) = 3: TF(2 * P + 1) = CStr(Date + (P < 2) + TimeValue(Array("22:59", "23:59", "0:58", "1:59", "2:58", "3:57", "4:59", "5:59")(P)))
   Next P
ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:=xlFilterValues, Criteria2:=TF
Mais je n'arrive pas à le faire tourner, il n'y a semble-t-il pas de date d’aujourd’hui dans les données.
salut,
voila je viens d epublier la correction. le probleme est résolu.
VB:
  ActiveSheet.Range("$A$1:$V$5068").AutoFilter FIELD:=6, Operator:= _
        xlFilterValues, Criteria2:=Array(3, Format(Date - 1, "mm/dd/yyyy") & " 22:59:00", 3, Format(Date - 1, "mm/dd/yyyy") & " 23:59:0", _
        3, Format(Date, "mm/dd/yyyy") & " 0:58:0", 3, Format(Date, "mm/dd/yyyy") & " 1:59:0", 3, Format(Date, "mm/dd/yyyy") & " 2:58:0", 3, _
        Format(Date, "mm/dd/yyyy") & " 3:57:0", 3, Format(Date, "mm/dd/yyyy") & " 4:59:0", 3, Format(Date, "mm/dd/yyyy") & " 5:59:0")
 

Dranreb

XLDnaute Barbatruc
Vous pourriez quand même ne calculer qu'une fois les expressions Format(Date - 1… et Format(Date… et les affecter à des variables ZHier et ZAuj As String
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas