IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Trier un TCD


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Trier un TCD
    Bonjour,

    J'ai créé un code permettant de traiter des données et de creer un TCD.
    Une fois ce TCD creer j'aimerais trier les données.

    Voila mon code qui crée le tCD:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Sub CreerTCD1()
     
        Dim DerCol As Integer, DerLig As Long, CelAdr As String
     
        DerCol = shtPoidsSem.Cells(1, Columns.Count).End(xlToLeft).Column
        DerLig = shtPoidsSem.Range("A" & Rows.Count).End(xlUp).Row
        CelAdr = Cells(DerLig, DerCol).Address
     
        shtPoidsSem.Select
        Range("A1").Select
        ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        shtPoidsSem.Range("A1:" & CelAdr).Address(, , xlR1C1, True)).CreatePivotTable _
        Sheets("Graf Sem").Range("A2"), TableName:="TCD1"
        Sheets("Graf Sem").PivotTables("TCD1").SmallGrid = False
        Sheets("Graf Sem").PivotTables("TCD1").AddFields RowFields:="Almacén"
        With Sheets("Graf Sem").PivotTables("TCD1").PivotFields("Neto Báscula")
            .Orientation = xlDataField
            .Caption = "Promedio de neto"
            .Function = xlAverage
        End With
        Application.CommandBars("PivotTable").Visible = False
     
    End Sub
    Je voulais mettre un xlsortvalues mais ca ne marche pas avez vous une idée de comment je peux faire?

    Merci d'aider un debutant.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Bonjour semas,

    je travaille également sur une macro qui produit et trie des TCD. Je trie mon TCD à l'aide de listes personnalisées (customlist). Voici en gros ma procédure.
    Dans ce cas présent la liste personnalisée est fixe. mais tu peux aussi définir une liste au cas par cas en précisant une plage de cellule où se trouve ta liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'ajout d'une liste personnalisée
    Application.AddCustomList ListArray:=Array("aa", "cc", "bb", "jj", "ee", "ff", "gg", "mm")
    'obtention de son numéro de référence
        n = Application.GetCustomListNum(Array("aa", "cc", "bb", "jj", "ee", "ff", "gg", "mm")) + 1
     
    'sélection de la page où se trouve ton TCD et ensuite sélection de l'onglet via lequel tu veux trier ton TCD dans mon cas il se trouvait en A5
     
    Worksheets("TCD").Select
    Range("A5").Select
    Selection.Sort Order1:=xlAscending, Header:=xlGuess, _
    Type:=xlSortLabels, OrderCustom:=n, Orientation:=xlTopToBottom
    Bon courage.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Merci, mais il n'existe pas une fonction toute simple?

    Le TCD que j'ai à trier fait 10 lignes (10 magasins) et une colonne qui est le poids moyen. et je veux trier par poids croissant.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Dans ce cas essaye ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Range("cellule").Select
        Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
            Orientation:=xlTopToBottom
    Avec cellule , les coordonnées de la cellule où se trouve l'onglet de ta colonne de poids.

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    J'ai essayé ton code en mettant à la place de cellule B3 mais ca ne marche pas.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    essaye de faire la macro manuellement en l'enregistrant, et regarde le code que cela va te donner, et en fonction t'adaptes.

    Sinon essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Worksheets("Tableaux").Select
        Range("B110").Select
        Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, Orientation:=xlTopToBottom
    En changeant Tableaux et B110 par ce qui correspond à ton TCD

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Je l'ai fait mais ca bloque.

    Voila le code qu'il me donne et une fois adapté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveSheet.PivotTables("TCD1").PivotFields("Almacén").AutoSort _
        xlDescending, "Promedio de Neto Báscula", ActiveSheet.PivotTables( _
        "TCD1").PivotColumnAxis.PivotLines(1), 1
    erreur 1004, on peut obtenir la proprieté pivottables de la classe worksheet

    Citation Envoyé par zert84 Voir le message
    essaye de faire la macro manuellement en l'enregistrant, et regarde le code que cela va te donner, et en fonction t'adaptes.

    Sinon essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Worksheets("Tableaux").Select
        Range("B110").Select
        Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, Orientation:=xlTopToBottom
    En changeant Tableaux et B110 par ce qui correspond à ton TCD
    Erreur 1004, erreur dans la methode sort de la classe range

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 17h24
  2. Trier aléatoirement un résultat de requête
    Par ang36 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/01/2004, 17h38
  3. trier les données dans le cache ??
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 31
    Dernier message: 10/06/2003, 10h03
  4. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo