Tri automatique et mise en forme TCD
Bonjour à tous,
Je travaille actuellement sur un TCD et je n'arrive pas à faire en sorte que mon tri se fasse après chaque actualisation ou changement de filtre et que ma mise en forme reste aussi sans avoir besoin de la refaire a chaque fois.
Comme vous pouvez voir dans mon fichier, j'ai un TCD avec plusieurs année, j'aimerai que les données soit classées par ordre décroissant en fonction de la colonne B (2016) de la 1ere société mais aussi faire ressortir les écritures en rouge lorsque que le montant est inférieur à 0.
Pour le tri, j'ai créer une macro, qui fonctionne actuellement avec un bouton, comme suit :
Range("B6:B25").Sort Key1:=[$B$6], Order1:=xlDescending, Type:= _
xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottomMais dès que je la mets sur un événement du TCD tels que PivotTableUpdate la macro tourne en boucle et fait planter mon fichier.
J'aimerai savoir si il est donc possible que le tri et la mise en forme se fasse automatiquement après chaque actualisation ou changement de filtres qui correspond aux différentes sociétés.
Merci à tous ceux qui pourront ou essayeront de m'aider
Bonne journée à vous !
Je viens de regarder ton fichier, le résultat final est celui souhaité mais je ne comprends pas pourquoi les valeurs sont reportés dans un tableau sur la feuille du TCD (parce que dans le fichier initial les dépenses représentent + de 100 lignes pour environ 35 sociétés) et à quoi servent les boutons. J'avais aussi créé un onglet variation bien que celui ci puisse se calculer car quand je faisais un élément calculé dans mon TCD, il mettait beaucoup de temps à s'actualisé ou lorsqu'on change les filtres (je ne sais pas si cela est normal). En fait, j'aimerai le même résultat mais sans les boutons et le tableau en plus (je sais pas si cela est possible).
Je te remercie pour ton aide si rapide !
J'ai trouvé une solution toute simple qui a l'air de marcher, je la partage si sa peut aider quelqu'un d'autre. Pour le tri, j'ai juste ajouté deux commandes dans mon code, ce qui lui permet de ne pas tourner en boucle et de planter le fichier :
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Application.EnableEvents = False
Range("B7:B34").Sort Key1:=[$B$7], Order1:=xlDescending, Type:= _
xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
Application.EnableEvents = True
End Subet pour la mise en forme il suffit de se placer sur une cellule du TCD, faire Mise en forme conditionnel > Nouvelle règle > Selectionner l'option Appliquer a toutes les cellules contenant la valeur [Champ valeur TCD] pour "ligne" et "colonne" > choisir la règle que l'on souhaite. La mise en forme reste en place même après actualisation ou changement de filtres.
Bonne journée a tous !
Bonjour,
Je t'ai proposé un exemple en normalisant les données car l'utilisation de l'assistant tableau croisé dynamique (sur 3 feuilles, dont 1 pour un calcul) n'est pas le plus approprié pour effectuer certaines opérations et il complexifie la compréhension.
Il interdit aussi le tri et oblige à un artifice.
La normalisation des données permet d'utiliser pleinement un TCD.
Le tableau normalisé est dynamique, c'est à dire qu'il s'ajustera en fonction de tes données brutes (nombre de lignes et de colonnes).
Le calcul de la variation est effectué avec un élément calculé (codé en dur soit 2016-2015 et intégré au TCD).
Le bouton RAZ est pour l'exemple, mais utile pour réinitialiser l'ensemble.
Bon, maintenant, tout dépend évidemment de tes besoins du jour et à venir.
Cdlt.
Re,
Pour terminer, essaie ceci :
Option Explicit
Private Sub Worksheet_Activate()
Me.PivotTables(1).PivotCache.Refresh
End Sub
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
With Me.PivotTables(1)
.ManualUpdate = True
.PivotFields("Ligne").AutoSort xlDescending, "Somme de Valeur"
.ManualUpdate = False
End With
End Sub