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 3 colonnes en gardant les lignes correspondantes [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut Trier 3 colonnes en gardant les lignes correspondantes
    Bonjour,

    Le titre n'étant pas très très explicite, je vous expose mon soucis :

    J'ai 3 Colonnes : A,B et C avec en A des dates, en B des nombres, et en C des dates

    J'aimerais trier la colonne 1 du plus ancien au plus récent, et j'aimerais que la colonne B et C suivent la même ligne qui change.

    Exemple :

    21/09/2015 ||||| 62 ||||| 13/10/2015
    15/01/2015 ||||| 423 ||||| 12/01/2015
    02/03/2015 ||||| 116 ||||| 16/02/2015


    Résultat souhaité :

    15/01/2015 ||||| 423 ||||| 12/01/2015
    02/03/2015 ||||| 116 ||||| 16/02/2015
    21/09/2015 ||||| 62 ||||| 13/10/2015


    Voici mon 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
    Option Explicit
     
    Sub TriDates()
     
            Columns("A:C").Select
        ActiveWorkbook.Worksheets("izi").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("izi").Sort.SortFields.Add Key:=Range("A2:A1039652" _
            ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("izi").Sort
            .SetRange Range("A1:B1039652")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
    End Sub
    Ca marche pour la colonne B, elle suit bien sa date, mais pas la C.... Sûrement parce que c'est des dates en colonne C je sais pas trop...

    Pourriez vous m'aider svp ?

    Merki !

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    as-tu controlé cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .SetRange Range("A1:B1039652")
    , ça ne serait pas "A...:C..." ? et j'aurais traduit comme ç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
    Sub TriDates()
    Dim dL As Range
    With ActiveWorkbook.Worksheets("izi")
      Set dL = .Range("A" & .Rows.Count).End(xlUp)
      .Sort.SortFields.Clear
      .Sort.SortFields.Add Key:=Range("A2", dL), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .Sort
      .SetRange Range("A1", dL(1, 3))
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
    End With
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éprouvé Avatar de LawNasK
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 144
    Par défaut
    Bonjour,

    Tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SetRange Range("A1:B1039652")
    Tu dis donc à ta fonction de tri de ne trier que les colonnes A et B.

    Essaye avec :



    Edit : Même si l'enregistreur de macro le fait, tu n'es pas obligé de sélectionner les cellules à trier. De la même façon, tu peux étendre ton With

    La page MSDN de Range.Sort, au passage

  4. #4
    Membre confirmé Avatar de backx3
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 173
    Par défaut
    Ouais c'est bien ça z'êtes trop forts ....

    Merci beaucoup !

    Je vais prendre ton code, il a l'air d'être mieux parce que au moins je suis sur de prendre toute la plage et il sera sans doute plus rapide à l'execution !

    Merci beaucoup en tout cas.



    J'suis grillé ! Aha
    J'vais jeter un coup d'œil à ta méthode Law, merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/06/2012, 18h17
  2. Comparer deux colonnes puis supprimer les lignes en trop
    Par Theka dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/07/2011, 14h38
  3. Repérer les colonnes vides et les lignes mal renseignées
    Par mouncefdi dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/04/2009, 20h06
  4. Rechercher date dans colonne et renvoi la ligne correspondante
    Par rickgoz dans le forum Macros et VBA Excel
    Réponses: 36
    Dernier message: 28/10/2008, 19h29
  5. [Tableaux] Trier un tableau en gardant les associations
    Par benja507 dans le forum Langage
    Réponses: 5
    Dernier message: 22/10/2008, 12h42

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