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.
 

Pièces jointes

  • fichier a traiter.xls
    700 KB · Affichages: 26

D.D.

XLDnaute Impliqué
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 Impliqué
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")
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 171
Membres
112 676
dernier inscrit
little_b