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 :

Question concernant les tris [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut Question concernant les tris
    Bonjour à tous,

    J'aimerais pouvoir trier automatiquement cette liste :
    Nom : Tri1.png
Affichages : 258
Taille : 3,5 Ko

    Dans cet ordre :
    Nom : Tri2.png
Affichages : 239
Taille : 3,6 Ko

    Quelle est selon vous la meilleure méthode VBA ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Une solution avec la liste des valeurs à partir de A2 (attention, utilisation de la colonne B, à modifier si déjà occupée)
    Sub Tri()
    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
        Application.ScreenUpdating = False
        DerLig = [A10000].End(xlUp).Row
        Range("B2:B" & DerLig).FormulaR1C1 = "=RC[-1]&"" aaa"""
        Range("A2:B" & DerLig).Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2:B" & DerLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("A2:B" & DerLig)
            .Header = xlGuess
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Columns(2).Delete
    End Sub
    Cdlt

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par atk_49 Voir le message
    Quelle est selon vous la meilleure méthode VBA ?
    Bonjour,

    Est-ce un choix de ta part que les valeurs 621.721.821 soient considérées comme des nombres et non du texte ?
    Si non, onglets données -> convertir -> texte puis tri normal fera l'affaire (l'enregistreur de macro te donnera 90% du code)

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    @ARTURO83

    Merci pour cette solution, je vais la tester.
    A quoi correspond cette formule ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2:B" & DerLig).FormulaR1C1 = "=RC[-1]&"" aaa"""
    @halaster08

    Je n'ai pas d'obligation concernant les formats, je peux donc les convertir en texte, je vais tester aussi.

    Merci.

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    A quoi correspond cette formule ?
    Range("B2:B" & DerLig).FormulaR1C1 = "=RC[-1]&"" aaa"""


    On ajoute " aaa" derrière chaque valeur, ce qui donne:
    Pièce jointe 480321

    Il ne reste plus qu'à faire un tri sur la colonne B et de la supprimer après le tri

    Cdlt

  6. #6
    Membre confirmé
    Homme Profil pro
    Comptable
    Inscrit en
    Juin 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2019
    Messages : 22
    Par défaut
    Bonjour,

    En convertissant les nombres en texte, cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub TriParValeur()
     
    Range("A1").CurrentRegion.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 2), TrailingMinusNumbers:=True
    Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
    End Sub
    Essaies et dis-moi !

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    J'ai choisi la méthode donné par halaster08,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Sub Tri()
    Dim i As Integer
        With ThisWorkbook.Sheets("Feuille")
             i = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A4:AL" & i).Sort Key1:=.Range("C1"), Order1:=xlDescending, DataOption1:=xlSortNormal, Key2:=.Range("D1"), Order2:=xlAscending, DataOption2:=xlSortNormal, Key3:=.Range("E1"), Order3:=xlAscending, DataOption3:=xlSortNormal
            .Range("A4:AL" & i).Sort Key1:=.Range("A1"), Order1:=xlAscending, DataOption1:=xlSortNormal, Key2:=.Range("B1"), Order2:=xlAscending, DataOption2:=xlSortOnValues
        End With
        MsgBox "Opération terminée"
    End Sub
    J'ai dû étager les deux fonctions .sort car on ne peux pas utiliser plus de 3 critères de tri à la fois.

    Merci !

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

Discussions similaires

  1. question concernant les fichier.bin
    Par argon dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 27/08/2005, 17h44
  2. Questions concernant les études supérieures et travails
    Par Vivian Pennel dans le forum Etudes
    Réponses: 25
    Dernier message: 21/06/2005, 15h23
  3. Réponses: 11
    Dernier message: 21/06/2005, 10h16
  4. [Débutant] Deux questions concernants les vues
    Par 13obscur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/04/2005, 14h29
  5. Réponses: 7
    Dernier message: 10/09/2004, 14h28

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