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 par ordre croissant une colonne de tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Points : 102
    Points
    102
    Par défaut Trier par ordre croissant une colonne de tableau
    Bonjour le forum,

    Sorry d'avance pour cette question. Elle me paraissait simple mais pourtant j'ai pas vraiment su trouver clairement ce que je cherchais sur internet et via l'enregistreur de macro.


    Voilà c'est tout con mais je voudrais pouvoir trier par ordre croissant, une colonne dont le nom est dans une variable, d'un tableau/ListObject dont le nom est dans une variable.


    Merci d'avance pour l'aide et déso pour la question toute simple

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Quelque chose 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
    18
    19
    20
    21
    Sub Tri()
        Dim Tablo As String
        Dim Entete As String
     
        Tablo = ActiveWorkbook.Worksheets("Feuil1").Range("G1")     'nom du tableau
        Entete = ActiveWorkbook.Worksheets("Feuil1").Range("G2")    'nom de l'entête à trier
     
        Range(Tablo & "[#All]").Select
        ActiveWorkbook.Worksheets("Feuil1").ListObjects(Tablo).Sort.SortFields. _
            Clear
        ActiveWorkbook.Worksheets("Feuil1").ListObjects(Tablo).Sort.SortFields. _
            Add Key:=Range(Tablo & "[" & Entete & "]"), SortOn:=xlSortOnValues, Order:=xlAscending _
            , DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").ListObjects(Tablo).Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    On pourrait éliminer le Select...
    MPi²

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Points : 102
    Points
    102
    Par défaut Boucler sur des feuilles pour trier par ordre croissant
    Re,

    Merci à toi, c'est exactement ce que je cherchais Je mets si dessous le code retravailler qui permet de boucler sur des feuilles pour trier certain tableaux:


    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
        Dim Tablo As String
        Dim EnTete As String
        Dim XLBook As Excel.Workbook
        Dim i As String
        Dim Feuille As Worksheet
     
     
        Workbooks(Prenom & " " & Nom & ".xlsm").Activate
        Set XLBook = ActiveWorkbook
     
        For Each Feuille In XLBook.Worksheets
            If InStr(1, Feuille.Name, "Calcul") <> 0 Then 'C'est qu'on est sur une bonne page
     
                Tablo = "Tableau" & Replace(Feuille.Name, " ", "") & "Provisoire"
                EnTete = "Date"
     
                Feuille.ListObjects(Tablo).Sort.SortFields. _
                    Clear
                Feuille.ListObjects(Tablo).Sort.SortFields. _
                    Add Key:=Range(Tablo & "[" & EnTete & "]"), SortOn:=xlSortOnValues, Order:=xlAscending _
                    , DataOption:=xlSortNormal
     
     
                With Feuille.ListObjects(Tablo).Sort
                    .Header = xlYes
                    .MatchCase = False
                    .Orientation = xlTopToBottom
                    .SortMethod = xlPinYin
                    .Apply
                End With
            End If
        Next Feuille
    J'ai par contre une petite question (que je pourrais tester moi même mais je la pose tout de même): est-ce que ces cellules sont "fictivement" mise dans un certain ordre ou l'ordre qu'elles ont après le tri est leur ordre "réel" ... ? Je m'explique: si je pose cette question, c'est parce que lorsqu'on annule le filtre, les données se remettent dans leur position d'origine. Donc Excel "retient" ces anciennes positions... Donc lorsque l'on parcours le tableau trié avec un For...each .. Est-ce que l'on parcours bien les cellules dans l'ordre croissant ?


    Merci à toi quoi qu'il en soit

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la réponse à ta question est ... dans la question.

    si on annule le filtre
    donc si tu filtres et que derrière tu parcoures les lignes ... sans retirer le filtre... à ton avis ?

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Points : 102
    Points
    102
    Par défaut
    Bonjour Joe,


    A mon avis c'est bon, mais de fait, j'aurais plutôt du utiliser l'exemple des filtres ... lorsque l'on filtre un tableau et que l'on veut parcourir l'ensemble des cellules restantes, il faut préciser ".SpecialCells(xlCellTypeVisible)", ce qui, pour un utilisateur débutant, n'est pas quelque chose d'évident (par en terme de difficulté mais en terme d'évidence/logique).

    Et ici de même, si on supprime le filtre, tout revient comme ... D'où ma question: est-ce qu'un tri n'est qu'un artifice visuel ou le array dans lequel les valeurs du tableau sont encodées est lui aussi trié ?


    Bien à toi

    C.

  6. #6
    Membre actif
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Points : 242
    Points
    242
    Par défaut
    Bonjour,
    Je comprends ta question
    A priori (j'ai refait le est pour être certain), le TRI est conservé même après la "mort" du filtre/tri,
    contrairement au filtre qui lui disparait effectivement.

    Pas d'artifice donc, ça attaque les données en dur, et parfois ca joue des tours sur les formules.

    :-)

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Je te renvoie à une autre de tes phrases : fait le test, tu verras et comprendras

    le forum ne doit pas te faire perdre la capacité de comprendre par toi-même comment ça fonctionne, surtout que tu n'es plus vraiment un débutant

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Points : 102
    Points
    102
    Par défaut
    Re Djohn92,


    Merci pour la confirmation :p


    Re joe.levrai,


    Je sais, je sais mais une pointe de paresse s'imposait :p

  9. #9
    Membre actif
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Points : 242
    Points
    242
    Par défaut
    Sympa. C'est typiquement ce genre de phrase qui pourrait me faire péter un cable.

    Traduire :
    "Vous, vous pouvez vous casser le ***, mais moi, non, je regarde"

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bof, moi je me dis que la paresse nous amène à devenir bon programmeur ce qui nous permet de développer des outils qui travaillent pour nous
    Autre façon de voir la chose...
    Mais je te comprends Djohn92
    MPi²

  11. #11
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    bah, on est tous paresseux à un moment

    la preuve, j ai pas eu le courage d'expliquer et l'ai renvoyé à ses tests

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

Discussions similaires

  1. [PR-2010] Supprimer les doublons d'une listbox et la trier par ordre croissant
    Par Antonin Boloch dans le forum Project
    Réponses: 2
    Dernier message: 07/05/2014, 16h56
  2. Trier par ordre croissant des valeurs dans un tableau
    Par ftrap dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/06/2013, 10h35
  3. creation de nouvelles feuilles et les trier par ordre croissant
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/09/2012, 23h53
  4. Trier par ordre croissant
    Par hitchcoke dans le forum Langage
    Réponses: 12
    Dernier message: 04/08/2009, 14h15
  5. Réponses: 2
    Dernier message: 17/06/2007, 19h17

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