Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

100 abscisses sur un graphe de tcd

2 réponses
Avatar
Rags
bonjour,

j'ai une base de données d'au moins 200 lignes à partir de laquelle je fais
deux différents classements par macro: la macro change les données affichées
de "somme de" à "nombre de", change le titre et classe les éléments par ordre
décroissant.
Seulement, je ne voudrais faire apparaitre que les 100 premiers du
classement, toujours dans ma macro, sachant que ce ne sont pas forcément les
mêmes selon si on veut par somme ou par nombre.
j'ai essayé avec l'enregistreur de macro, mais ça me donne le même code
lorsque je fais "masquer" ou "del", ce qui ne marche pas car on ne peut pas
effacer de données d'un tcd...

Quelqu'un aurait-il une solution?

Merci d'avance

2 réponses

Avatar
michdenis
Bonjour Rags,

Pour Rafraîchir ton TDC si tu modifies l'allure de ton tableau source ...

cette macro fut publié par
Published by Debra Dalgleish 21 Juin 2003
et améliorer par Daniel Maher.

'-------------------------------------------------
Sub DeleteOldItemsWB()
'gets rid of unused items in PivotTable based on MSKB (Q202232)
'had to go through procedure twice to clear items (for i= 1 to 2)
' Désactiver l'actualisation de l'écran (exécution plus rapide de la macro)
Application.ScreenUpdating = False
' Désactiver le calcul automatique
Application.Calculation = xlManual
Application.CalculateBeforeSave = False
' Déclarer les variables
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim i As Integer
' Supprimer les éléments de tous les champs,
'de tous les tableaux croisés dynamiques
On Error Resume Next
For i = 1 To 2
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
For Each pf In pt.PivotFields
For Each pi In pf.PivotItems
pi.Delete
Next
Next
pt.RefreshTable
Next
Next
Next
' Activer l'actualisation de l'écran
Application.ScreenUpdating = True
' Activer le calcul automatique
Application.Calculation = xlAutomatic
Application.CalculateBeforeSave = True
Msg = Msg & "La macro est terminée !"
MsgBox Msg, vbInformatin, "Rafraîchir les listes déroulantes d'un tableau croisé dynamique"
End Sub
'-------------------------------------------------


Salutations!



"Rags" a écrit dans le message de news:
bonjour,

j'ai une base de données d'au moins 200 lignes à partir de laquelle je fais
deux différents classements par macro: la macro change les données affichées
de "somme de" à "nombre de", change le titre et classe les éléments par ordre
décroissant.
Seulement, je ne voudrais faire apparaitre que les 100 premiers du
classement, toujours dans ma macro, sachant que ce ne sont pas forcément les
mêmes selon si on veut par somme ou par nombre.
j'ai essayé avec l'enregistreur de macro, mais ça me donne le même code
lorsque je fais "masquer" ou "del", ce qui ne marche pas car on ne peut pas
effacer de données d'un tcd...

Quelqu'un aurait-il une solution?

Merci d'avance
Avatar
Rags
merci michdenis, mais en fait je crois que j'ai mal expliqué mon soucis:
pour faire au plus simple, je voudrais juste afficher les 100 premiers
éléments d'un tcd qui compte plus de lignes que ça.
y a-t-il une fonction qui permette de choisir ce qu'on veut afficher sur un
tcd? le nombre de lignes en l'occurence?

merci! (j'espère que mon explication est plus compréhensible ce coup ci!)


Bonjour Rags,

Pour Rafraîchir ton TDC si tu modifies l'allure de ton tableau source ...

cette macro fut publié par
Published by Debra Dalgleish 21 Juin 2003
et améliorer par Daniel Maher.

'-------------------------------------------------
Sub DeleteOldItemsWB()
'gets rid of unused items in PivotTable based on MSKB (Q202232)
'had to go through procedure twice to clear items (for i= 1 to 2)
' Désactiver l'actualisation de l'écran (exécution plus rapide de la macro)
Application.ScreenUpdating = False
' Désactiver le calcul automatique
Application.Calculation = xlManual
Application.CalculateBeforeSave = False
' Déclarer les variables
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim i As Integer
' Supprimer les éléments de tous les champs,
'de tous les tableaux croisés dynamiques
On Error Resume Next
For i = 1 To 2
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
For Each pf In pt.PivotFields
For Each pi In pf.PivotItems
pi.Delete
Next
Next
pt.RefreshTable
Next
Next
Next
' Activer l'actualisation de l'écran
Application.ScreenUpdating = True
' Activer le calcul automatique
Application.Calculation = xlAutomatic
Application.CalculateBeforeSave = True
Msg = Msg & "La macro est terminée !"
MsgBox Msg, vbInformatin, "Rafraîchir les listes déroulantes d'un tableau croisé dynamique"
End Sub
'-------------------------------------------------


Salutations!



"Rags" a écrit dans le message de news:
bonjour,

j'ai une base de données d'au moins 200 lignes à partir de laquelle je fais
deux différents classements par macro: la macro change les données affichées
de "somme de" à "nombre de", change le titre et classe les éléments par ordre
décroissant.
Seulement, je ne voudrais faire apparaitre que les 100 premiers du
classement, toujours dans ma macro, sachant que ce ne sont pas forcément les
mêmes selon si on veut par somme ou par nombre.
j'ai essayé avec l'enregistreur de macro, mais ça me donne le même code
lorsque je fais "masquer" ou "del", ce qui ne marche pas car on ne peut pas
effacer de données d'un tcd...

Quelqu'un aurait-il une solution?

Merci d'avance