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 suivant une liste spécifique en VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Par défaut Trier suivant une liste spécifique en VBA
    Bonjour !

    Alors voilà, j'ai créé tout un programme qui fait pleins de bidouilles pour récupérer des données. Jusqu'ici je m'en sortais. Mais je veux maintenant trier ces données suivant une colonne en me basant sur une liste de valeurs spécifique. J'ai donc utilisé l'enregistreur de macro et j'obtiens ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Columns("D:D").Select
    ActiveWorkbook.Worksheets("05.10.039.3").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("05.10.039.3").Sort.SortFields.Add Key:=Range(        "D1:D12"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="Chantier,Statut,CC,EC", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("05.10.039.3").Sort
        .SetRange Range("A1:AK12")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Que je modifie pour correspondre a mon code par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Range("D1:D" & Range("A65536").End(xlUp).Row).Select
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range( _
    "D1:D" & Range("A65536").End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= "Chantier,Statut,CC,EC", DataOption:=xlSortNormal
    With ActiveSheet.Sort
         .SetRange Range("A1:AK12")
         .Header = xlGuess
         .MatchCase = False
         .Orientation = xlTopToBottom
         .SortMethod = xlPinYin
         .Apply
    End With
    Le résultat : Les cellules sont bien sélectionnées mais le trie ne s'est pas fait. Par contre si je test de le faire à la main juste après ça fonctionne ben. Alors je ne comprends pas pourquoi le "trie ne se fait pas"....

    Si quelqu'un comprend

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Peut être le problème vient du fait que dans la ligne 6 de ton code, le nombre de ligne est fixe,
    ou bien que la colonne A (utilisée pour calculer le nombre de ligne) est vide.

    A essayer :
    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
    Sub MonTriColonneD()
        Dim nbligne As Long
        With Worksheets("05.10.039.3")
            nbligne = .Range("A" & Rows.Count).End(xlUp).Row
            With .Sort
                .SortFields.Clear
                .SortFields.Add Key:=Range("D1:D" & nbligne), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="Chantier,Statut,CC,EC", DataOption:=xlSortNormal
                .SetRange Range("A1:AK" & nbligne)
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End With
    End Sub

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Par défaut
    Je l'ai testé mais malheureusement ça me fait la même chose, le trie ne se fait pas...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    et si tu définis ta liste dans 'outils / options / listes pers.' (sur 2003) et que tu utilises celle-ci en tri tu as le même pb ?
    Accessoirement un fichier de test serait le bienvenu.

    eric

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Par défaut
    Si je le fait manuellement ça fonctionne. Même à la suite du traitement, le programme se termine, les cellules sont sélectionnées et si je clic sur Trier, les paramètres sont correctement renseignés et il me suffit de cliquer sur Ok pour que le trie se fasse.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Re,

    Je ne te parlais pas de le faire manuellement mais de te créer une liste personnalisée (dans les options) et de trier par macro selon cette liste personnalisée.
    Je viens de tester avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:B" & Range("A65536").End(xlUp).Row).Sort Key1:=Range("A2"), Header:=xlYes, OrderCustom:=8
    ça marche bien chez moi (sur 2003).

    eric

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

Discussions similaires

  1. Attribuer les valeurs d'une liste déroulante en VBA
    Par SnakeCharmer dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/05/2008, 09h19
  2. Réponses: 2
    Dernier message: 20/02/2008, 12h30
  3. Réponses: 2
    Dernier message: 21/10/2007, 00h56
  4. Réponses: 1
    Dernier message: 20/03/2007, 09h24
  5. Réponses: 4
    Dernier message: 16/06/2005, 15h37

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