Erreur de Tri avec Macro sur TCD

Bonjour,

Je souhaite faire un tri dans un TCD après l'avoir actualisé. En utilisant l'enregistreur de macro, une erreur est générée que je ne sais pas résoudre

pouvez vous me venir en aide, je vous joins l'exemple

Cordialement

99classement.zip (12.63 Ko)

Bonsoir,

En laissant le TCD à cet endroit et la feuil1 sélectionnée, code à essayer :

Sub Tri()
'Macro Dan
Dim pvttable As PivotTable
With ActiveSheet
Set pvttable = .Range("A3").PivotTable
With pvttable
    .RefreshTable
    .PivotSelect "Commerciaux[All]", xlLabelOnly
End With
    .Range("A4").Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, Orientation:=xlTopToBottom
End With
End Sub

Si version excel Français, il faut remplacer "ALL" par "TOUS"

Amicalement

Dan

edit Dan : Essaie plutôt ceci

Sub Tri()
'Macro Dan
Dim pvttable As PivotTable
With ActiveSheet
Set pvttable = .Range("A3").PivotTable
pvttable.RefreshTable
.PivotTables(1).PivotFields("Commerciaux").AutoSort xlAscending, "Commerciaux"
End With
End Sub

A noter que l'on pourrait le faire sans bouton aussi et cela à l'activation de la feuille du TCD.

Amicalement

Dan

Salut le forum

Pour trier les éléments par ordre croissant ou décroissant sans utiliser de Macro

  1. Dans la barre d'outils Tableau croisé dynamique, cliquez sur Tableau croisé dynamique,
    puis sur Tri et Top 10.
  2. Sous Tri automatique, cliquez sur l'option Croissant ou Décroissant.

Mytå

Rebonjour, j'ai oublié de vous préciser que le tri se fait en fonction de la colonne mixte et non pas sur les commerciaux

en changeant la macro comme suit, le tri ne se fait pas

Sub Tri()

'Macro Dan

Dim pvttable As PivotTable

With ActiveSheet

Set pvttable = .Range("A3").PivotTable

pvttable.RefreshTable

.PivotTables(1).PivotFields("type").AutoSort xlDescending, "mixte"

End With

End Sub

Le (1) dans pivottable(1) représente t il le 1er TCD?, a savoir que dans l'original j'ai 4 TCD sur la meme feuille qui doivent avoir le meme traitement

Merci de votre aide toujours efficace

Cordialement

re,

pivottable(1) représente t il le 1er TCD?

Oui.

Faire le tri sur "mixte" n'est pas évident du tout à faire en code mais je vais voir pour te proposer quelque chose.

Dan

Re,

La difficulté de trier par code dans un TCD au niveau des données ne m'a pas permis de te répondre de suite.

Voici un code qui devrait fonctionner et ce, quelques soit le nombre de TCD dans ta feuille (tu m'as parlé de 4)

Seule condition est que le mot "Mixte" soit bien dan chaque TCD.

Sub TrieTCD()
'Macro Dan pour Nico_33 le 04/02/2010
Dim cel As Range
Dim i As Byte
Set cel = Cells.Find("Mixte", LookIn:=xlValues)
For i = 1 To ActiveSheet.PivotTables.Count
With ActiveSheet.PivotTables(i)
    .RefreshTable
    .PivotSelect "Mixte", xlDataOnly
    Selection.Sort Key1:=cel.Offset(1, 0), Order1:=xlDescending, Type:=xlSortValues
End With
Set cel = Cells.FindNext(after:=cel)
Next
End Sub

Amicalement

Dan

Edit Dan : Autre solution à essayer

Sub TrieTCD()
'Macro Dan pour Nico_33 le 04/02/2010
Dim cel As Range
Dim i As Byte
Application.ScreenUpdating = False
Set cel = Cells.Find("Mixte", LookIn:=xlValues)
For i = 1 To ActiveSheet.PivotTables.Count
With ActiveSheet.PivotTables(i)
    .RefreshTable
    cel.Offset(1, 0).Sort Key1:=cel.Offset(1, 0), Order1:=xlDescending, Type:=xlSortValues, _
        OrderCustom:=1, Orientation:=xlTopToBottom
End With
Set cel = Cells.FindNext(after:=cel)
Next
Range("A1").Activate
End Sub

Dan

Bonjour,

Il reste une erreur que tu trouvera en piece jointe sur la ligne ".PivotSelect "Mixte", xlDataOnly"

Chacun de mes TCD a un seul champs affiché de tri qui est mixte pour le 1er, et 3 autres valeurs différentes pour les 3 autres

Je pense qu'après avoir actualisé les 4 TCD, je dois écrire la routine 4 fois pour chacune des valeurs afin de trier chaque tableau

@ te lire

cordialement

38doc1.zip (13.58 Ko)

Re,

Essaie comme ceci :

Sub TrieTCD()
'Macro Dan pour Nico_33 le 04/02/2010
Dim cel As Range
Dim i As Byte
Application.ScreenUpdating = False
Set cel = Cells.Find("Mixte", LookIn:=xlValues)
For i = 1 To ActiveSheet.PivotTables.Count
With ActiveSheet.PivotTables(i)
    .RefreshTable
    .PivotSelect "Mixte", xlDataOnly
    Selection.Sort Key1:=cel.Offset(1, 0), Order1:=xlAscending, Type:=xlSortValues, _
        OrderCustom:=1, Orientation:=xlTopToBottom
End With
Set cel = Cells.FindNext(after:=cel)
Next
Range("A1").Activate
End Sub

Amicalement

Dan

Bonjour,

Super, cela marche

encore un grand merci

18alfafox.xlsm (71.62 Ko)
Rechercher des sujets similaires à "erreur tri macro tcd"