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 :

Tri dynamique VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juin 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Juin 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Tri dynamique VBA
    Bonjour,

    Je suis novice en VBA et voilà ma situation. Je désire faire une macro avec boucle qui puisse trier les données en fonction de la colonne B sur les données présentes dans la colonne A jusqu'à qu'une cellule vide est présente.
    Par exemple jusqu'a la cellule "a12";"a18","f6"...

    J'arrive seulement de trier dynamiquement une plage de cellules.

    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
    Sub Trier()
    '
    ' Trier Macro
    Range("B1").Select
    mylastrow = Cells(1, 1).End(xlDown).Row
     
     
     
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B1:B" & mylastrow), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("A1:C" & mylastrow)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Points : 505
    Points
    505
    Par défaut
    Bonjour,

    Je ne comprend pas où est le problème, car d'après tes explications, le code que tu as donné réalises ce que tu demandes... Essaye d'être plus précis dans ce que tu demandes.

    Par ailleurs, merci de lire ceci : règles du forum

    Et de bien vouloir mettre le code entre les bonnes balises (les balises [code] [ /code], représentées par un gros bouton #) avec une indentation qui facilite la compréhension.

    Cdt,
    Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    essayes 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
    Sub Trier()
    Dim mylastrow As Range, Dcel As Range, x As Long
    Set Dcel = Cells(Rows.Count, 1).End(xlUp)
    For x = 1 To Dcel(1, 2).Row
      Set mylastrow = Cells(x, 1).End(xlDown)
      ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
      ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(x, 2), mylastrow(1, 2)), _
          SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
      With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range(Cells(x, 1), mylastrow(1, 3))
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
      End With
      x = mylastrow.Row + 1
    Next x
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  4. #4
    Candidat au Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juin 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Juin 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup casefayere cela fonctionne parfaitement.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Content pour toi,
    je voulais passer par des tris spécifiques aux tableaux structurés mais j'ai trouvé plus simple de faire comme ça,

    et si tu veux, lis-bien toutes les remarques de ma signature (en bas des messages),

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

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

Discussions similaires

  1. [XML] Tri Dynamique Firefox
    Par stela86 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 11h16
  2. probleme de tri dynamique de tableau
    Par K_!!! dans le forum ASP
    Réponses: 21
    Dernier message: 15/02/2006, 16h44
  3. [XSLT] Tri dynamique
    Par gregb34 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 06/02/2006, 12h52
  4. tri dynamique avec XSLT
    Par JohnBlatt dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/09/2005, 12h30
  5. [XSLT] séparation après tri dynamique
    Par MatMeuh dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 26/10/2004, 14h56

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