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
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