VBA insérer la commande date dans un autofilter

  • Initiateur de la discussion Initiateur de la discussion michel90
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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"))
 
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")
 
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)
 
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.
 
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")
 
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")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
850
Retour