' Objet : restreindre affichage à un item, à la demande (pour TOUTES les feuilles)
Sub Choix(Answer As String)
Dim k As Long ' recense les pivotItems
Dim line As Long ' recense le nombre de lignes dans feuille Base
Dim var As String ' prend la valeur du PivotItem rencontré
Dim compteur As Long ' pour compter les occurences d'une valeur d'un PivotItem
Dim Test As Boolean
Dim sh As Long ' feuille sur laquelle on se trouve
Answer = UCase(Answer)
' --- Etape 1 : on voit si le terme Answer existe
Dim dernlign As Long
dernlign = Sheets("Base").Range("i" & Rows.Count).End(xlUp).Row
With Sheets("Base")
For line = 1 To dernlign
var = .Range("i" & line)
If InStr(var, Answer) > 0 Then compteur = compteur + 1
Next line
End With
' MsgBox "il y a " & compteur & " entrées pour " & Answer
' --- Etape 2 : si Answer existe, on affiche les items correspondant et on ferme les autres
If compteur > 0 Then
For sh = 1 To Sheets.Count ' depuis 1ère jusqu'à dernière feuille
Sheets(sh).Activate
If ActiveSheet.PivotTables.Count > 0 Then ' uniquement si feuille contient TCD
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("emballage")
.ClearManualFilter
For k = 1 To .PivotItems.Count
Test = False
var = .PivotItems(k)
If InStr(var, Answer) > 0 Then .PivotItems(k).Visible = True: Test = True
If Test = False Then .PivotItems(k).Visible = False
Next k
End With
End If ' ActiveSheet.PivotTables.Count > 0
Next sh
Else 'compteur > 0
MsgBox "Le terme " & Answer & " est absent de la bdd, le traitement va s'interrompre"
End If ' compteur > 0
End Sub