XL 2019 VBA Tri personnalisé

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CYRIL CAMPAS

XLDnaute Junior
Bonjour la communauté !

j'ai besoin de vos lumières car je ne m'en sors pas.... je vous explique ce que j'aimerai pouvoir faire : j'ai un fichier Excel avec dans la colonne A, une liste de machines par numéro et dans la colonne B les codes clients.

j'aimerai pouvoir trier la colonne A par machine (j'ai crée une macro pour ça et ça fonctionne sans soucis), mais ensuite j'aimerai que par machine, ça me trie les codes clients par ordre croissant, et ça je ne sais pas faire !

Les 2 macros du fichier :

1/ ajouter une ligne (va directement en bas du tableau pour trouver la première ligne vide

2/ trier dans l'ordre (trie la colone A par ordre croissant à partir de la cellule A4)

est-il doc possible d'avoir une macro qui regroupe chaque machine en fusionnant les cellules pour le numéro de machines n'apparaisse qu'une seule fois et qui pour chaque machine me trie la colone B par ordre croissant ?

merci par avance à vous !
 

Pièces jointes

Solution
Bonjour la communauté !

j'ai besoin de vos lumières car je ne m'en sors pas.... je vous explique ce que j'aimerai pouvoir faire : j'ai un fichier Excel avec dans la colonne A, une liste de machines par numéro et dans la colonne B les codes clients.

j'aimerai pouvoir trier la colonne A par machine (j'ai crée une macro pour ça et ça fonctionne sans soucis), mais ensuite j'aimerai que par machine, ça me trie les codes clients par ordre croissant, et ça je ne sais pas faire !

Les 2 macros du fichier :

1/ ajouter une ligne (va directement en bas du tableau pour trouver la première ligne vide

2/ trier dans l'ordre (trie la colone A par ordre croissant à partir de la cellule A4)

est-il doc possible d'avoir une macro qui regroupe...
Bonjour,

j'aimerai pouvoir trier la colonne A par machine (j'ai crée une macro pour ça et ça fonctionne sans soucis)
Pourquoi créer une macro pour trier un tableau selon une colonne ?
Le tri Excel "manuel" ne convient pas ?

mais ensuite j'aimerai que par machine, ça me trie les codes clients par ordre croissant, et ça je ne sais pas faire !
Normalement il suffit, là aussi, d'utiliser le tri Excel "manuel". 😉
 
Bonjour
VB:
Sub Trier()

    With ActiveWorkbook.Worksheets("Tableau des temps")
        .Sort.SortFields.Clear
        NBlig = ActiveWorkbook.Worksheets("Tableau des temps").Range("A4").CurrentRegion.Rows.Count
        .Sort.SortFields.Add2 Key:=Range("A4:A" & NBlig), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("D4:D" & NBlig), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .Sort
            .SetRange Range("A3").CurrentRegion
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .Apply
        End With
    End With
End Sub

Pas une bonne idée de fusionner : tu auras des difficulutés ensuite pour cxploiter : utilise une MFC pour masquer la répétition

Tu devrais travailler en tableau structuré ce qui simplifierait l'ajout d'une ligne
 
Bonjour la communauté !

j'ai besoin de vos lumières car je ne m'en sors pas.... je vous explique ce que j'aimerai pouvoir faire : j'ai un fichier Excel avec dans la colonne A, une liste de machines par numéro et dans la colonne B les codes clients.

j'aimerai pouvoir trier la colonne A par machine (j'ai crée une macro pour ça et ça fonctionne sans soucis), mais ensuite j'aimerai que par machine, ça me trie les codes clients par ordre croissant, et ça je ne sais pas faire !

Les 2 macros du fichier :

1/ ajouter une ligne (va directement en bas du tableau pour trouver la première ligne vide

2/ trier dans l'ordre (trie la colone A par ordre croissant à partir de la cellule A4)

est-il doc possible d'avoir une macro qui regroupe chaque machine en fusionnant les cellules pour le numéro de machines n'apparaisse qu'une seule fois et qui pour chaque machine me trie la colone B par ordre croissant ?

merci par avance à vous !
Bonjour,
Regarde si cela convient
 

Pièces jointes

Bonjour,

Je pense qu'il y a plein de solutions à ton souci.
Personnellement, je transformerai ton "tableau des temps" en tableau Excel (Onglet "Accueil", "Mettre sous forme de tableau". Dans le fichier que je te joins il y a une macro Trier2, que j'ai juste enregistré par l'enregistreur de macro, en utilisant la fonctionnalité de "tri personnalisé" qui permet d'avoir plusieurs clés de tri. Enfin, pour n'afficher qu'un seul code machine (je n'ai pas fait de fusion contrairement à ta demande), j'ai utilisé une mise en forme conditionnelle sur la colonne "Machines".
Voila, c'est juste une piste parmi d'autres
Bonne journée
Laurent
 

Pièces jointes

Bonjour,


Pourquoi créer une macro pour trier un tableau selon une colonne ?
Le tri Excel "manuel" ne convient pas ?


Normalement il suffit, là aussi, d'utiliser le tri Excel "manuel". 😉
parce que les utilisateurs de mon fichier ne sont pas des champions, le but c'est que ça se fasse tout seul car le nombre de datas que je vais y implémenter va etre exponentiel !
 
Bonjour
VB:
Sub Trier()

    With ActiveWorkbook.Worksheets("Tableau des temps")
        .Sort.SortFields.Clear
        NBlig = ActiveWorkbook.Worksheets("Tableau des temps").Range("A4").CurrentRegion.Rows.Count
        .Sort.SortFields.Add2 Key:=Range("A4:A" & NBlig), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("D4:D" & NBlig), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .Sort
            .SetRange Range("A3").CurrentRegion
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .Apply
        End With
    End With
End Sub

Pas une bonne idée de fusionner : tu auras des difficulutés ensuite pour cxploiter : utilise une MFC pour masquer la répétition

Tu devrais travailler en tableau structuré ce qui simplifierait l'ajout d'une ligne
Bonjour ! je viens de tester, la macro plante à partir de NBlig, tu peses que ça peut venir d'ou ?
 
Bonjour,

Je pense qu'il y a plein de solutions à ton souci.
Personnellement, je transformerai ton "tableau des temps" en tableau Excel (Onglet "Accueil", "Mettre sous forme de tableau". Dans le fichier que je te joins il y a une macro Trier2, que j'ai juste enregistré par l'enregistreur de macro, en utilisant la fonctionnalité de "tri personnalisé" qui permet d'avoir plusieurs clés de tri. Enfin, pour n'afficher qu'un seul code machine (je n'ai pas fait de fusion contrairement à ta demande), j'ai utilisé une mise en forme conditionnelle sur la colonne "Machines".
Voila, c'est juste une piste parmi d'autres
Bonne journée
Laurent
Bonjour Laurent, déjà merci pour les idées, je viens de regarder et ça réponds quasi parfaitement à ma demande, la seule chose c'est qu'en fin de tableau je n'ai plus les menus déroulant, est-ce lié à la macro ?
 
Bonjour ! je viens de tester, la macro plante à partir de NBlig, tu peses que ça peut venir d'ou ?
Sur ton fichier exemple cela ne plante pas (je ne poste jamais sans tester)

On peut d'ailleurs simplifier cette ligne du fait du With

Tu as peut-être plusieurs classeurs ouverts donc on peut assurer le With à ce classeur
Code:
Sub Trier()

    With ThisWorkbook.Worksheets("Tableau des temps")
        .Sort.SortFields.Clear
        NBlig = .Range("A4").CurrentRegion.Rows.Count
        .Sort.SortFields.Add2 Key:=Range("A4:A" & NBlig), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Sort.SortFields.Add2 Key:=Range("D4:D" & NBlig), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .Sort
            .SetRange Range("A3").CurrentRegion
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .Apply
        End With
    End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
145
Réponses
12
Affichages
516
  • Question Question
Microsoft 365 Macro VBA - Excel
Réponses
12
Affichages
576
  • Question Question
Microsoft 365 tri dans Excell
Réponses
19
Affichages
488
Réponses
2
Affichages
36
  • Question Question
Power Query tri powerquery
Réponses
9
Affichages
880
Réponses
7
Affichages
616
Retour