VBA - Valeur champs TCD si la valeur testée n'existe pas

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lolo62000

XLDnaute Junior
Bonjour,
J'ai une macro qui me permet de sélectionner une même valeur dans les champs portant le même nom de tous mes TCD sur une même page. Mon problème, si je rentre une valeur qui est absente dans un des filtres des TCD, alors le filtre se met à "TOUS".
Je souhaiterais vérifier si la valeur est présente dans les filtres des TCD. Si elle est présente, alors on filtre avec le filtre sélectionné, si elle est absente, alors, on filtre avec la valeur "Vide", et on teste le TCD suivant.
Pouvez-vous m'aider à éclaircir la partie en vert, car là je sèche sévère après des heures de recherche... 🙁

Private Sub CommandButton1_Click()
ActiveSheet.Range("L17") = Analyste3
Dim PT As PivotTable
x = ActiveSheet.Range("L17").Value

Set PT4 = ActiveSheet.PivotTables("Tableau croisé dynamique4")
Set PT6 = ActiveSheet.PivotTables("Tableau croisé dynamique6")
Set PT8 = ActiveSheet.PivotTables("Tableau croisé dynamique8")
Set PT9 = ActiveSheet.PivotTables("Tableau croisé dynamique9")
Set PT10 = ActiveSheet.PivotTables("Tableau croisé dynamique10")
With PT4
.PivotCache.Refresh
.PivotFields("Analyste").CurrentPage = "(Tous)"
'If x <> "" Then
.PivotFields("Analyste").CurrentPage = x
'If x = "" Then
'.PivotFields("Analyste").CurrentPage = "(Vide)"

End If
End If
End With

With PT6
.PivotCache.Refresh
.PivotFields("Analyste").CurrentPage = "(Tous)"
.PivotFields("Analyste").CurrentPage = x
End With

With PT8
.PivotCache.Refresh
.PivotFields("Analyste").CurrentPage = "(Tous)"
.PivotFields("Analyste").CurrentPage = x
End With

With PT9
.PivotCache.Refresh
.PivotFields("Analyste").CurrentPage = "(Tous)"
.PivotFields("Analyste").CurrentPage = x
End With

With PT10
.PivotCache.Refresh
.PivotFields("Analyste").CurrentPage = "(Tous)"
.PivotFields("Analyste").CurrentPage = x
End With


ActiveWorkbook.RefreshAll
Unload UserForm8
End Sub

Merci,
Laurent.
 
Re : VBA - Valeur champs TCD si la valeur testée n'existe pas

Bonjour

Si la source est dans le classeur, il est plus simple et plus fiable de vérifier si la valeur existe dans la source du TCD par un find sinon il faut une boucle qui teste toutes les valeurs du champ.

Selon le nombre de cas, cela peut prendre du temps et de plus le champ peut exister dans le filtre et plus dans la source...
 
Re : VBA - Valeur champs TCD si la valeur testée n'existe pas

Salut,
finalement j'ai trouvé une alternative à mon problème, en mettant les ("Tous") à ("Blank") de cette façon:
.PivotFields("Analyste").CurrentPage = "(Tous)"...
De cette façon, si il n'y a pas de données dans le filtre, le filtre ne donne aucun résultat.
Car en effet, si je fait une boucle, sur chaque tableau, pour une quarantaien de données possibles, ça va être très long je pense.
Merci,
Bonne journée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
770
  • Question Question
XL 2019 Code VBA
Réponses
12
Affichages
791
Retour