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 :

problème avec le tri [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut problème avec le tri
    ]Bonjour à tous,

    Je vous post mon dernier souci de la journée.
    Je me lance dans le tri et le filtre en macro, j'ai un bouquin de VBA qui n'en parle pratiquement pas alors j'ai fait des recherches sur le forums j'ai pompé un tutoriel mais c'est pas exactement ma problématique du coup je demande de l'aide.

    Voici mon début de code
    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
    Sub filtre_principal()
    Dim Plagefiltre As Range, PlageBase As Range, cmptl As Long
    Dim Zone As Range, Message As String
     
    With ThisWorkbook.Worksheets("CC2012")
    Set PlageBase = .Range(.Cells(1, 1), .Cells(1, 1)).End(xlDown).Resize(, 39)
    End With
     
    With PlageBase
        '------------enlève les éventuels anciens filtres
            .AutoFilter
        '------------filtre la colonne St (5)
     
            .AutoFilter Field:=5, Criteria1:=Array("2", "1", "0", "3"), Operator:=xlFilterValues, visibledropdown:=True
            'cette alternance ("2", "1", "0", "3") est une liste de tri personnalisée
            .AutoFilter Field:=8, Criteria1:=xlAscending, Operator:=xlFilterValues, visibledropdown:=True
           ' tri dans l'ordre alphabétique
    End With
     
     
    End Sub
    le tri en fonction des valeurs 2'1'0'3 ne se fait pas (colonne 5) et le tri par ordre alphabétique non plus ... pourtant avec l'enregistreur de macro il me semblait que c'était xlAscending mais j'interprète facilement...

    Merci d'avance aux guides.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,


    Je n'ai pas testé mais cela devrait être quelque chose d'approchant
    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
    25
    26
    27
    28
    29
    Sub filtre_principal()
    Dim Plagefiltre As Range, PlageBase As Range, cmptl As Long
    Dim Zone As Range, Message As String
     
    With ThisWorkbook.Worksheets("CC2012")
        Set PlageBase = .Range(.Cells(1, 1), .Cells(1, 1)).End(xlDown).Resize(, 39)
    End With
        '------------enlève les éventuels anciens filtres
    PlageBase.AutoFilter
        '------------filtre la colonne St (5)
    PlageBase.AutoFilter Field:=5, Criteria1:=Array("2", "1", "0", "3"), Operator:=xlFilterValues, visibledropdown:=True
            'cette alternance ("2", "1", "0", "3") est une liste de tri personnalisée
     
           ' tri dans l'ordre alphabétique
     
    With ThisWorkbook.Worksheets("CC2012").AutoFilter.Sort
        .SortFields.Add Key:=Range _
            ("H:H"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
     
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
     
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut
    Bonjour Jérôme,

    Merci pour ta réponse, le code pour le tri par ordre alphabétique marche
    je n'ai pas tout copier de l' enregistreur de macro pour le tri personnalisé c'est pour ça que ça buguait. Après y a-t-il un moyen plus propre d'écrire ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       '------------filtre la colonne St (5)
    ActiveWorkbook.Worksheets("CC2012").AutoFilter.Sort.SortFields.Add Key:=Range _
            ("E4:E1001"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
            "2,1,0,3,A", DataOption:=xlSortNormal
            'cette alternance ("2", "1", "0", "3") est une liste de tri personnalisée

    je mets le code complet pour les gens comme moi qui débutent :

    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
    25
    26
    27
    28
    29
    30
    31
    Sub filtre_principal()
    Dim Plagefiltre As Range, PlageBase As Range, cmptl As Long
    Dim Zone As Range, Message As String
     
    With ThisWorkbook.Worksheets("CC2012")
        Set PlageBase = .Range(.Cells(1, 1), .Cells(1, 1)).End(xlDown).Resize(, 39)
    End With
        '------------enlève les éventuels anciens filtres
    PlageBase.AutoFilter
        '------------filtre la colonne St (5)
    ActiveWorkbook.Worksheets("CC2012").AutoFilter.Sort.SortFields.Add Key:=Range _
            ("E4:E1001"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
            "2,1,0,3,A", DataOption:=xlSortNormal
            'cette alternance ("2", "1", "0", "3") est une liste de tri personnalisée
     
           ' tri dans l'ordre alphabétique
     
    With ThisWorkbook.Worksheets("CC2012").AutoFilter.Sort
        .SortFields.Add Key:=Range _
            ("H:H"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
     
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
     
    End Sub

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

Discussions similaires

  1. problème avec un tri de tableau et autre
    Par chupinours dans le forum Langage
    Réponses: 7
    Dernier message: 30/10/2012, 00h23
  2. Problème avec mon tri
    Par welshjonathan dans le forum C
    Réponses: 1
    Dernier message: 27/05/2011, 11h20
  3. Problème avec le tri de Excel
    Par belangy dans le forum Excel
    Réponses: 13
    Dernier message: 26/02/2011, 07h49
  4. asp.net problème avec le tri dans un datagrid
    Par mekongboy dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 04/11/2008, 17h15
  5. Problème avec le tri
    Par fouyou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 05/07/2007, 11h26

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