VBA TCD Masquer des items

danielco

XLDnaute Accro
Bonjour,

Je souhaite masquer certaines dates pour lesquelles il n'y a pas de mouvements bancaires :

J'ai écrit :

VB:
Sub test()
  Dim Pt As PivotItem, C As Range
  Application.ScreenUpdating = False
  inCalculationMode = Application.Calculation
  Application.Calculation = xlCalculationManual
  With Sheets("Cpts bancaires").PivotTables(1)
    .ManualUpdate = True
    On Error Resume Next
    .PivotFields("Date").ClearAllFilters
    On Error GoTo 0
    For Each Pt In .PivotFields("Date").PivotItems
      For Each C In Pt.DataRange
        If C.Column = 7 Then
          If C.Row = 20 Then Stop
          If C = "" And C.Offset(, 1) = "" Then
            Pt.Visible = False
            ctr = ctr + 1
            Debug.Print ctr
          End If
        End If
      Next C
    Next Pt
    .ManualUpdate = False
  End With
  Application.Calculation = inCalculationMode
End Sub

Mais la macro est lente et souvent, je suis obligé de tuer Excel. Je vous mets une copie d'écran, et, dès que je pourrai, je posterai le classeur.
Annotation 2019-11-16 174222.png

Le but est de masquer les éléments comme 2020-02-02 qui n'ont pas d'écriture.

Je vous remercie par avance.

Daniel
 

chris

XLDnaute Barbatruc
Bonjour

J'ai commencé par renommer le tableau de l'onglet BD : Donnees au lieu de Tableau27

Puis, depuis une cellule de ce tableau, selon ta version onglet PowerQuery ou bien Données : A partir d'un tableau
Cela ouvre Powerquery.
A gauche on retrouve une requête portant le nom du tableau au centre les données, à droite les étapes de la requête
Les deux première étapes, Source et Type modifié sont automatiques.
Dans certains cas on modifie les types choisis par PQ si ce n'est pas les bons (sélectionner la colonne et onglet Accueil, Type de données)

J'ai ensuite :
  • Filtré les données, comme dans Excel en haut de la colonne Type, pour ne garder que Entrée et Sortie
  • Regroupé par (onglet Transformer) Mois, Date, Compte, Type, et fait la somme de Montant
  • sélectionné la colonne Type, puis onglet Transformer, Colonne de tableau croisé dynamique (ou Pivoter selon version), choisi la colonne Montant en Valeurs, sans agréger. Cela ventile Entrée et Sortie sur 2 colonnes.
  • ajouté une colonne : onglet, Ajouter une colonne, Colonne personnalisée, l'ai nommée Solde avec comme formule
    (if [Entrée]=null then 0 else [Entrée])-(if [Sortie]=null then 0 else [Sortie])
On sort par Fermer et charger dans, TCD et on bâtit le TCD.
 

Discussions similaires

Réponses
7
Affichages
292
Réponses
14
Affichages
311