Filtre entre deux dates Tcd VBA

Bonjour à tous,

Jeune initié au Vba et au TCD, je cherche désespérement à filtrer un TCD entre deux dates. Il semblerait qu'il y ai un problème de format de date. J'ai fait plusieurs essais en modifiant les différents formats dans le Vba mais j'obtiens des valeurs incohérentes. Par exemple une inversion entre le mois et le jour ou des valeurs inférieures ou supérieures au jour 12 dans les dates.

J'utilise excel dans le programme office 365.

L'idée générale du programme est la suivante :

  • Des rapports journaliers renseignent une base de données dans la feuille BDD (jours, personnel, matériel, ...)
  • un TCD extrait de cette base des valeurs sur le personnel interne (TCDPersHDI)
  • Un bouton "Exporter pointage" situé dans la feuille (0502) appel un userform demandant une date de début de mois et une date de fin
  • Ces valeurs sont inscrites dans la feuille "exportation" et doivent filtrer entre ces deux dates le TCD situé sur la feuille (TCDPersHDI)

Quelqu'un aurait-il une solution ?

Merci d'avance,

Private Sub CommandButton4_Click()

    Sheets("Exportation").Range("B21") = CDate(TextBox2.Value)
    Sheets("Exportation").Range("B22") = CDate(TextBox3.Value)

Dim p As PivotItem, pf As PivotField
Dim Date1 As String
Dim Date2 As String

Date1 = Sheets("Exportation").Range("B21")
Date2 = Sheets("Exportation").Range("B22")

Application.ScreenUpdating = False

Set pf = Sheets("TCDPersHDI").PivotTables("TCD1").PivotFields("Dates")

With pf
   For Each p In .PivotItems
   p.Visible = True
   Next p

    For Each p In .PivotItems

    If Format(p.Value, ("mm/dd/yyyy")) < Date1 Or Format(p.Value, ("mm/dd/yyyy")) > Date2 Then

    If .VisibleItems.Count > 1 Then
    p.Visible = False
    Else
    MsgBox "Au moins 1 élément doit être affiché..."
    End If
    End If
    Next p
End With

Unload Me

 End Sub
61filtrer-donnees.zip (83.05 Ko)

J'ai modifié de nouveaux mon code.

Dans ma feuille "Exportation", j'ai séparé ma date "jj/mm/aaaa" en trois celules distincts "jj", "mm", "aaaa".

J'ai ensuite modifié mon code en reprenant les valeurs.

J'obtiens bien un filtrage celon le mois mais il me manque des valeurs intermédiaires :

Par exemple, je souhaite filtrer des valeurs entre le 05/01 et le 20/01 mais je n'obtiens que les valeurs entre le 11/01 et le 20/01.

Avez-vous une idée d'où cela peut venir ?

Merci

Private Sub CommandButton4_Click()

    Sheets("Exportation").Range("B21") = CDate(TextBox2.Value)
    Sheets("Exportation").Range("B22") = CDate(TextBox3.Value)

Dim p As PivotItem, pf As PivotField

Mois1 = Sheets("Exportation").Range("C21").Value
Jour1 = Sheets("Exportation").Range("D21").Value
Annee1 = Sheets("Exportation").Range("E21").Value
Mois2 = Sheets("Exportation").Range("C22").Value
jour2 = Sheets("Exportation").Range("D22").Value
annee2 = Sheets("Exportation").Range("E22").Value

Application.ScreenUpdating = False

Set pf = Sheets("TCDPersHDI").PivotTables("TCD1").PivotFields("Dates")

With pf
   For Each p In .PivotItems
   p.Visible = True
   Next p

    For Each p In .PivotItems

    If p.Value < (Mois1 & "/" & Jour1 & "/" & Annee1) Or p.Value > (Mois2 & "/" & jour2 & "/" & annee2) Then

    If .VisibleItems.Count > 1 Then
    p.Visible = False
    Else
    MsgBox "Au moins 1 élément doit être affiché..."
    End If
    End If
    Next p
End With
Rechercher des sujets similaires à "filtre entre deux dates tcd vba"