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 de tri [XL-2007]


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
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Problème de tri
    Bonjour,

    Dans la dernière partie du programme j'ai un tri qui ne se passe pas comme je le souhaiterai...
    J'ai une ligne vide en haut du tableau.
    Ma ligne d'entête de colonnes est la ligne 2.
    Lorsque je tris, il ne tient pas compte de ma ligne d'entête et la trie avec les autres colonnes....
    Est-ce que quelqu'un pourrait regarder où est le bug.
    J'ai fait un certain nombre d'essai non concluant et je ne sais plus quoi faire...
    D'avance merci
    VIPNO



    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    'Effacer la feuille ETP_par_Personne_2012
    Sheets("ETP_par_Personne_2012").Activate
    Ligne2 = Range("A1").End(xlDown).Row + 1          'efface à partir des +n lignes écrites ici 1
                                                        ' pour que la ligne compte il faut que la 1° cellule soit non vide
    DerLigne2 = Range("A65536").End(xlUp).Row + 1       ' test la premiere ligne vide
     
                                                            ' A modifier pour changer le nombre de colonnes
     Range("A" & Ligne2 & ":V" & DerLigne2).ClearContents   ' efface des colonnes A à V
                                                            ' colonne A non vide pour fonctionner
     
     ' Copie des données de Traitement_par_Projet_2012 dans Feuille ETP_par_Personne_2012
     'Definie la derniere ligne Projet
    Sheets("Traitement_par_Projet_2012").Activate
    Ligne = Range("AA1").End(xlDown).Row + 1
    DerLigne = Range("AA65536").End(xlUp).Row + 1
     
    Worksheets("Traitement_par_Projet_2012").Range("AF" & Ligne & ":AF" & DerLigne).Copy
    ActiveSheet.Paste Destination:=Worksheets("ETP_par_Personne_2012").Range("A" & Ligne & ":A" & DerLigne)
    Worksheets("Traitement_par_Projet_2012").Range("AA" & Ligne & ":AE" & DerLigne).Copy
    ActiveSheet.Paste Destination:=Worksheets("ETP_par_Personne_2012").Range("B" & Ligne & ":F" & DerLigne)
    Worksheets("Traitement_par_Projet_2012").Range("AG" & Ligne & ":AV" & DerLigne).Copy
    ActiveSheet.Paste Destination:=Worksheets("ETP_par_Personne_2012").Range("G" & Ligne & ":V" & DerLigne)
     
     Sheets("ETP_par_Personne_2012").Activate ' On travaille sur la Feuille ETP_par_Personne_2012
     
     ' Tri des données par Personne, Domaine, Activite,
            Range("A" & Ligne & ":V" & DerLigne).Select
            ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Clear
       ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("A2") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("B2") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("C2") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("E2") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("F2") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort
            .SetRange Range("A:V")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Sheets("ETP_par_Personne_2012").Activate ' On travaille sur la Feuille ETP_par_Personne_2012

  2. #2
    Membre averti
    Homme Profil pro
    Artisan
    Inscrit en
    Février 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Artisan
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2012
    Messages : 32
    Par défaut re : problème de tri
    Slt, Je ne suis pas sûre d'avoir la bonne solution, car mes connaissance sur le vba sont peut être moins bonnes que les tiennes.

    Mais comme personnes ne t'a répondu...

    Je crois que ce qui pêche dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Tri des données par Personne, Domaine, Activite,
            Range("A" & Ligne & ":V" & DerLigne).Select
    As tu essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Tri des données par Personne, Domaine, Activite,
            Range("A2:V" & DerLigne).Select
    pour que ta ligne de référence soit sélectionnée à partir de A2.

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Toujours pas
    Bonjour,
    Merci pour ta réponse mais j'avais malheureusement essayé et cela ne changé rien...
    Merci quand même
    Cordialement,
    VIPNO

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Par défaut
    Il me semble qu'il faut que tu fasse référence à toutes les cellules de la colonne dans "Key"

    Essaye avec ça :

    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
           ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Clear
       ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("A2:A" & DerLigne) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("B2:B" & DerLigne) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("C2:C" & DerLigne) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("E2:E" & DerLigne) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort.SortFields.Add Key:=Range("F2:F" & DerLigne) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("ETP_par_Personne_2012").Sort
            .SetRange Range("A1:V" & DerLigne)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

  5. #5
    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 : 51
    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,

    Es tu sur de pouvoir faire plus de 3 tris?

    Ci dessous une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A2").Sort key1:=Range("A2"), order1:=xlDescending, _
        key2:=Range("B2"), order1:=xlAscending, _
        key3:=Range("C2"), order1:=xlAscending, Header:=xlYes

  6. #6
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Peuffff...
    Bonjour à tous,
    Merci à tous pour vos réponses.
    Les solutions proposées par Ratus et par Franck ne fonctionnent pas.
    En ce qui concerne le nombre de tri, 'ai essayé sur une autre feuille et je tenais avec 5 mais j'avais mis un_0 en deuxième ligne devant chaque mot et cela fonctionnait. Par contre pour ce tri je suis sur la feuille définitive et je ne peux pas le faire.

    J'essaye sur 3 tris mais par contre j'ai vraiment besoin de 5 tris. Est ce qu'il n'y a pas une solution pour en faire 5. ???
    VIPNO

  7. #7
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Tri à 5 ?
    Bonjour,
    Effectivement la méthode de jfontaine fonctionne avec 3 en mettant tout en Ascending.
    Merci beaucoup pour cette commande qui est beaucoup plus simple....
    Mais je vois pas trop comment passer de 3 à 5 tris.
    Peut être qu'il faut que je concatène A,B,C pour refaire un key1 avec...
    Cordialement,
    VIPNO

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

Discussions similaires

  1. [MySQL] Problème de tri
    Par pounie dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/10/2005, 13h09
  2. Problème de tri avec analyse croisée
    Par drthodt dans le forum Access
    Réponses: 2
    Dernier message: 18/10/2005, 16h23
  3. [TToolBar] Problème de tri
    Par titiyo dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/09/2004, 09h21
  4. [Collections] Problème de tri
    Par feti2004 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 03/08/2004, 16h45
  5. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 10h44

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