VBA insérer la commande date dans un autofilter

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

en piece jointe le fichier de données.

24fichier-a-traiter.zip (179.71 Ko)
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

Bonjour,

Je te propose une autre approche qu'un filtrage (pas toujours évident avec des dates !).

La plage est définie sur la colonne F à partir de F2. Les date et heures sont converties en "Double" et le format de la plage est passé au format "Standard" pour la recherche, il est ensuite repassé au format "Personnalisé". Dans la boucle, se sont les dates qui sont recherchées en priorité et ensuite sur les lignes correspondantes, on recherche en colonne S et U les deux chaines et si trouvées, on totalise. Une précision tout de même, la fonction Date() retourne la date d'aujourd'hui donc le 29/04/2017 alors pour le test, faire en sorte que cette dernière et celle de hier se trouvent bien dans la colonne avec les bonnes heures :

Sub Comptage()

    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range
    Dim C1 As Double
    Dim C2 As Double
    Dim C3 As Double
    Dim C4 As Double
    Dim C5 As Double
    Dim C6 As Double
    Dim C7 As Double
    Dim C8 As Double
    Dim TDate As Long
    Dim TLille As Long
    Dim TCritique As Long

    C1 = CDbl(Date - 1 + TimeValue("22:59:00"))
    C2 = CDbl(Date - 1 + TimeValue("23:59:00"))
    C3 = CDbl(Date + TimeValue("00:58:00"))
    C4 = CDbl(Date + TimeValue("01:59:00"))
    C5 = CDbl(Date + TimeValue("02:58:00"))
    C6 = CDbl(Date + TimeValue("03:57:00"))
    C7 = CDbl(Date + TimeValue("04:59:00"))
    C8 = CDbl(Date + TimeValue("05:59:00"))

    Set Fe = Worksheets("Table")

    'défini la plage sur la colonne F à partir de F2
    With Fe: Set Plage = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp)): End With

    'passe la plage au format standard
    Plage.NumberFormat = "General"

    'boucle et affiche les lignes correspondantes
    For Each Cel In Plage

        Select Case Cel.Value

            'ne prend en considération que les dates
            Case C1, C2, C3, C4, C5, C6, C7, C8

                TDate = TDate + 1
                'la fonction Trim() car il y a des espaces parasites dans les cellules !
                If Trim(Cel.Offset(, 13).Value) = "CCO LILLE" Then TLille = TLille + 1
                If Trim(Cel.Offset(, 15).Value) = "C - Critique" Then TCritique = TCritique + 1

        End Select

    Next Cel

    'repasse la plage au format personnalisé
    Plage.NumberFormat = "dd/mm/yyyy hh:mm:ss"

    MsgBox "Nombre de dates correspondantes = " & TDate & _
           vbCrLf & _
           "Nombre de mission pour Lille 22h/6h = " & TLille & _
           vbCrLf & _
           "Nombre de critique pour Lille 22h/6h = " & TCritique

End Sub
Rechercher des sujets similaires à "vba inserer commande date autofilter"