Private Sub Worksheet_Change(ByVal Target As Range)
'' Change le Produit
If Not Intersect([B1:B1], Target) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
Set m = CreateObject("scripting.dictionary")
''Mettre à jour le TCD
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("DGN_CMP").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("DGN").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("DGN_CMP").CurrentPage = [B1].Value
''Mise à jour de la liste des matière du produit
temp = "(Tous),"
For Each c In [Produit]
If c = Target Then
''Construction de la liste
If Not m.Exists(c.Offset(, 2).Value) Then
m.Add c.Offset(, 2).Value, c.Offset(, 2).Value
End If
End If
Next c
t = m.items
If m.Count > 1 Then
Call tri(t, LBound(t), UBound(t))
End If
For i = LBound(t) To UBound(t)
temp = temp & t(i) & ","
Next i
'' Mettre à jour la liste de validation en B2
On Error Resume Next
[B2].Validation.Delete
[B2].Validation.Add xlValidateList, Formula1:=Left(temp, Len(temp) - 1)
Application.EnableEvents = True
End If
''Mise à jour de la Matière
If Not Intersect([B2:B2], Target) Is Nothing And Target.Count = 1 Then
'' Mettre à jour le TCD
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("DGN").CurrentPage = [B2].Value
End If
''Mise à jour du graphique
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = [B2].Value
End Sub