Microsoft 365 Afficher Masquer tableau selon critères + MàJ Autom. TCD en VBA

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • Date de début Date de début

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 !

Amilo

XLDnaute Accro
Bonjour à tous,
J'aurais svp besoin de votre aide pour :

1- Afficher/Masquer les lignes d'un tableau selon 2 cellules D8 et E8 tout en tenant compte du Slicer
j'ai mis dans cet exemple un bouton de bascule ActiveX mais pas certain que ce soit le meilleur choix
J'aimerais pouvoir mettre une couleur de fond mais moins évident à faire à mon niveau pour ce bouton de contrôle

2- Automatiser tous les tableaux croisés dynamique lors du passage à l'onglet "TCD"

Merci par avance
Cordialement
 

Pièces jointes

Solution
Hello,
Si j'ai bien compris...
Dans le code du ToggleButton1

VB:
Private Sub ToggleButton1_Click()
Dim Crit
If Me.ToggleButton1 Then
    If Application.CountA(Me.Range("D8:E8")) < 2 Or Not IsNumeric(Me.Range("E8")) Then Exit Sub 'Sécurité
    Crit = IIf(Me.Range("D8") = "Sup.", ">", "<")
    Me.ListObjects("Tableau1").Range.AutoFilter Field:=3, Criteria1:=Crit & Me.Range("E8").Value, Operator:=xlAnd
Else
    Me.ListObjects("Tableau1").Range.AutoFilter Field:=3
End If
End Sub

Bonne apm

Edit, j'ai oublié, pour la mise à jour des TCD
Dès que tu actives l'onglet, ceux-ci se mettent à jour
Code dans l'évènement de la feuille
VB:
Private Sub Worksheet_Activate()
Dim Pvt As PivotTable
For Each Pvt In Me.PivotTables...
Bonjour @goube ,
Merci bcp pour votre réponse,
L'idée avec 2 boutons est bonne.
Cependant, le filtre de votre code agît sur un TCD alors que dans mon fichier je dispose d'un tableau
Certaines colonnes de ce tableau sont amenées à changer via la saisie manuelle.
Comment l'adapter svp pour que soit filtrer uniquement le tableau ?
Merci par avance
Cordialement
 
@goube ,
Merci mais je veux garder la structure de mon fichier dans mon 1er message,
Je souhaite garder uniquement mes 2 onglets "TCD" et "Données" sans ajouter de nouveau TCD que je ne souhaiterais utiliser
Le tableau de l'onglet "Données " est celui que je veux filtrer selon les critères D8 et E8

Cordialement
 
Hello,
Si j'ai bien compris...
Dans le code du ToggleButton1

VB:
Private Sub ToggleButton1_Click()
Dim Crit
If Me.ToggleButton1 Then
    If Application.CountA(Me.Range("D8:E8")) < 2 Or Not IsNumeric(Me.Range("E8")) Then Exit Sub 'Sécurité
    Crit = IIf(Me.Range("D8") = "Sup.", ">", "<")
    Me.ListObjects("Tableau1").Range.AutoFilter Field:=3, Criteria1:=Crit & Me.Range("E8").Value, Operator:=xlAnd
Else
    Me.ListObjects("Tableau1").Range.AutoFilter Field:=3
End If
End Sub

Bonne apm

Edit, j'ai oublié, pour la mise à jour des TCD
Dès que tu actives l'onglet, ceux-ci se mettent à jour
Code dans l'évènement de la feuille
VB:
Private Sub Worksheet_Activate()
Dim Pvt As PivotTable
For Each Pvt In Me.PivotTables
    Pvt.PivotCache.Refresh
Next Pvt
End Sub
 
Bonsoir le forum,

Désolé pour le retour tardif,
Je viens de tester chacune de vos solutions et je vous remercie beaucoup pour vos propositions
@goube , merci pour cette version modifiée, après test :
- je constate une certaine lenteur
- et aussi un basculement vers l'onglet "TCD" lorsque je clique sur l'un des boutons de l'onglet "Données"

@Cousinhub, c'est parfait merci pour cette solution. Je vais finalement rester sur un seul bouton "ToggleButton1"

@chris , merci d'avoir proposé une solution PQ malgré mon souhait en VBA, c'est tjrs intéressant de voir les différentes méthodes.
Cependant, bien que je sois plutôt à l'aise avec PQ, je ne souhaite pas de requête mais uniquement filtrer la table de données.

Je retiens finalement la solution de Cousinhub qui répond très bien à mon 1er message.

Par contre, probablement que je devrais ouvrir un nouveau sujet concernant un petit problème de suppression de filtres.
J'ai ajouté, une colonne supplémentaire "Position" à ma table de données et inséré un nouveau bouton pour supprimer tous les filtres des Slicers.
Le code VBA que j'ai affecté à ce nouveau bouton pour la suppresion des filtres fonctionne uniquement sur les Slicers mais pas sur un filtrage manuel opéré dans ce cas sur la colonne "Position"

Comment adapter svp le code pour que la suppresion se fasse sur l'ensemble des filtres "Slicers et manuels sachant que je souhaiterais garder les 2 boutons ?
Merci encorepour votre aide

Cordialement
 

Pièces jointes

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