Macro VBA = tri TCD

Hello à tous,

ça fait depuis le début de la matinée que je me tire les cheveux avec mon TCD ...

Je m'explique, j'ai une formule VBA qui créer un tableau TCD a partir d'un onglet "Default".

Je souhaiterais trier les donnés (de l'étiquette de ligne) j'ai pas eu de soucis pour l'étiquette de colonne.

Ci joint mon code pour le tri des lignes :

Sheets("PivotTable").Select

On Error Resume Next

With ActiveSheet.PivotTables("PivotTable").PivotFields("Courbes et notations")

.PivotItems("LC_MIG_A+").Position = 1

.PivotItems("LC_MIG_A").Position = 2

.PivotItems("LC_MIG_A-").Position = 3

.PivotItems("LC_MIG_B+").Position = 4

.PivotItems("LC_MIG_B").Position = 5

.PivotItems("LC_MIG_B-").Position = 6

.PivotItems("LC_MIG_C+").Position = 7

.PivotItems("LC_MIG_C").Position = 8

.PivotItems("LC_MIG_C-").Position = 9

.PivotItems("LC_MIG_D+").Position = 10

.PivotItems("LC_MIG_D").Position = 11

.PivotItems("LC_MIG_D-").Position = 12

.PivotItems("LC_MIG_E+").Position = 13

.PivotItems("LC_MIG_E").Position = 14

.PivotItems("LC_MIG_E-").Position = 15

.PivotItems("PDCIB:15:A+").Position = 16

.PivotItems("PDCIB:15:A").Position = 17

.PivotItems("PDCIB:15:A-").Position = 18

.PivotItems("PDCIB:15:B+").Position = 19

.PivotItems("PDCIB:15:B").Position = 20

.PivotItems("PDCIB:15:B-").Position = 21

.PivotItems("PDCIB:15:C+").Position = 22

.PivotItems("PDCIB:15:C").Position = 23

.PivotItems("PDCIB:15:C-").Position = 24

.PivotItems("PDCIB:15:D+").Position = 25

.PivotItems("PDCIB:15:D").Position = 26

.PivotItems("PDCIB:15:D-").Position = 27

.PivotItems("PDCIB:15:E+").Position = 28

.PivotItems("PDCIB:15:E").Position = 29

.PivotItems("PDCIB:15:E-").Position = 30

.PivotItems("PDCIB:30:A+").Position = 31

.PivotItems("PDCIB:30:A").Position = 32

.PivotItems("PDCIB:30:A-").Position = 33

.PivotItems("PDCIB:30:B+").Position = 34

.PivotItems("PDCIB:30:B").Position = 35

.PivotItems("PDCIB:30:B-").Position = 36

.PivotItems("PDCIB:30:C+").Position = 37

.PivotItems("PDCIB:30:C").Position = 38

.PivotItems("PDCIB:30:C-").Position = 39

.PivotItems("PDCIB:30:D+").Position = 40

.PivotItems("PDCIB:30:D").Position = 41

.PivotItems("PDCIB:30:D-").Position = 42

.PivotItems("PDCIB:30:E+").Position = 43

.PivotItems("PDCIB:30:E").Position = 44

.PivotItems("PDCIB:30:E-").Position = 45

End With

le tri s'effectue très bien jusqu'à la la position 33 puis c'est la cata ... et je cherche mais je trouve pas de solution.

Si quelqu'un avais une piste ça serait vraiment top !

Merci !

Alex

Bonjour,

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Courbes et notations").AutoSort xlAscending, "Courbes et notations"

Bonjour,

Merci pour ta réponse rapide !

cependant j'ai essayé avec cette ligne et le résultat est le suivant :

Étiquettes de lignes

LC_MIG_A

LC_MIG_A+

LC_MIG_B

LC_MIG_B+

LC_MIG_C

LC_MIG_C-

LC_MIG_C+

LC_MIG_D

LC_MIG_D-

LC_MIG_D+

LC_MIG_E

LC_MIG_E-

LC_MIG_E+

PDCIB:15:A

PDCIB:15:A+

PDCIB:15:B

PDCIB:15:B+

PDCIB:15:C

PDCIB:15:C-

PDCIB:15:C+

PDCIB:15:D

PDCIB:15:D-

PDCIB:15:D+

PDCIB:15:E

PDCIB:15:E-

PDCIB:15:E+

PDCIB:30:A

PDCIB:30:A+

PDCIB:30:B

PDCIB:30:B+

PDCIB:30:C

PDCIB:30:C-

PDCIB:30:C+

PDCIB:30:D

PDCIB:30:D-

PDCIB:30:D+

PDCIB:30:E

PDCIB:30:E-

PDCIB:30:E+

Dans l'absolu, il faudrait que l'ordre soit le suivant : A+ A A- B+ B B- ect ...

Bonjour,

Merci de joindre un fichier pour une aide adaptée du forum.

Cdlt.

Bonjour,

voici un fichier exemple (reprenant l'onglet TCD) l'idée serait comme expliqué de pouvoir trier les lignes de la façon suivante :

A+

A

A-

B+

B

B-

ect

Merci !

Alexandre

5exemple-tcd.xlsm (104.48 Ko)

Re,

le etc.. me gêne !..

On s'arrête ou ?

Cdlt.

Permet moi d'être plus explicite :

Nous allons de A+ à E- sur 3 "panels" différents : LC_MIG_ ; PDCIB:15 et PDCIB:30

je crois avoir trouvé le soucis : j'ai explicité une certaine position pour chaques items de la ligne MAIS

sur certains "Panels" il n'y a par exemple pas de A-, nous passons donc directement de A vers B+, je pensais résoudre le soucis avec le terme "On Error Resume Next" mais cela ne semble pas fonctionner.

il faudrait donc que :

LC_MIG_A+ soit en premiere position

puis LC_MIG_A soit en deuxieme position, et si LC_MIG_A n'existe pas, il faudrait que LC_MIG_A- soit en deuxieme position.

Je ne sais pas si c'est suffisament clair ?

merci pour ton temps !

Alexandre

Re,

j'ai réussi à résoudre mon problème en créant un "tableau" (variable v de Type 'Array' ?) contenant toutes les valeurs souhaitées.

Ces valeurs sont indexées dans ce tableau et peuvent être incrémentées avec la variable v(i), puis ensuite ajoutées et positionnées les unes après les autres.

Merci !

Alex

Rechercher des sujets similaires à "macro vba tri tcd"