1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Private Sub Worksheet_Change(ByVal Target As Range)
Dim Debut As Date
Dim Fin As Date
Dim NbJours As Byte
Dim DebutFiltre As String
Dim FinFiltre As String
If Not (Intersect(Target, Range("C1")) Is Nothing) Then
'Désactive les événement afin de ne pas reboucler lors de la mise à jour du TCD
Application.EnableEvents = False
Origine = CDate(DateSerial(2011, 10, 1))
Debut = CDate(DateSerial(Year(Range("C1")), Month(Range("C1")), 1))
If Debut < Origine Then
MsgBox "La date saisie est antérieure au début du contrat." & vbCrLf & vbCrLf _
& "Veuillez saisir une autre date.", vbOKOnly, "Erreur de date"
Exit Sub
End If
NbJours = Day(DateSerial(Year(Debut) + 1, Month(Debut) + 1, 0))
Fin = CDate(DateSerial(Year(Debut) + 1, Month(Debut), NbJours))
Range("C2").Value = Fin + 0.9999
Debut = CLng(Range("C1"))
Fin = CDec(Range("C2"))
Range("A7").Group Start:=Debut, End:=Fin, Periods:=Array(False _
, False, False, False, True, False, True)
DebutFiltre = "<" & Left(Range("C1"), 10)
FinFiltre = ">" & Left(Range("C2"), 10)
'Ne pas afficher dans le TCD les valeurs < DebutFiltre et > Fin Filtre
With ActiveSheet.PivotTables("TCD_Histo_Nb_Diag").PivotFields("Années")
.PivotItems(DebutFiltre).Visible = False 'c'est la ligne qui coince
.PivotItems(">31/01/2013").Visible = False
End With
Columns("C:N").AutoFit
'Réactive les événements
Application.EnableEvents = True
Else
Exit Sub
End If
End Sub |
Partager