Tri personnalisé de la sélection actuelle
Résolu
Fullreyny
-
Fullreyny -
Fullreyny -
Bonjour,
Je cherche un moyen pour réaliser une macro permettant de trier selon la colonne F toute les lignes en cours de sélection.
exemple :
Je sélectionne les lignes ("2649:2674"), je clique sur mon bouton et hop, le tri ce fait entre 2649 et 2674, (qu'importe les lignes sélectionnées)
En gros je cherche une variable pour la sélection
Sub Macro7()
'
' Macro7 Macro
'
'
ActiveWorkbook.Worksheets("647515").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("647515").Sort.SortFields.Add Key:=Range( _
"F2649:F2674"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("647515").Sort
.SetRange Range("A2649:AD2674")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Si quelqu'un peu m'aider.
Ciao
Je cherche un moyen pour réaliser une macro permettant de trier selon la colonne F toute les lignes en cours de sélection.
exemple :
Je sélectionne les lignes ("2649:2674"), je clique sur mon bouton et hop, le tri ce fait entre 2649 et 2674, (qu'importe les lignes sélectionnées)
En gros je cherche une variable pour la sélection
Sub Macro7()
'
' Macro7 Macro
'
'
ActiveWorkbook.Worksheets("647515").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("647515").Sort.SortFields.Add Key:=Range( _
"F2649:F2674"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("647515").Sort
.SetRange Range("A2649:AD2674")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Si quelqu'un peu m'aider.
Ciao
11 réponses
-
Bonjour
Pour trier la plage sélectionnée selon la colonne F
Public Sub TrierSelection() Dim PremLi As String, plage As Range Set plage = Selection PremLi = plage.Cells(1, 0).Row plage.Sort key1:=Range("F" & PremLi) End Sub
Cdlmnt -
Bonjour et merci de vous intéresser au sujet.
J'ai essayé votre texte, mais la macro bug sur la ligne :
PremLi = plage.Cells(1, 0).Row -
1. As tu sélectionné ta plage avant de lancer la macro?
2. Essaies comme ceci
Public Sub TrierSelection() Dim PremLi As String, plage As Range Set plage = Range(Selection.Address) PremLi = plage.Cells(1, 0).Row plage.Sort key1:=Range("F" & PremLi) End Sub
Cdlmnt -
Bonjour.
J'ai essayé en sélectionnant les lignes, en sélectionnant uniquement une plage de cellules, mais rien n'y fait, Bug sur la ligne :
PremLi = plage.Cells(1, 0).Row
Cdlt -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Chez moi ça fonctionne
https://www.cjoint.com/?3CclxeICMnL
Si ça ne va toujours pas, peux tu envoyer la partie concernée de ton fichier au format excel 2003 (macro comprise) sur cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt -
La macro fonctionne effectivement en sélectionnant uniquement de E à F.
Moi je veux sélectionner les lignes.
Exemple : de ligne 1 à 39 sur le tableau que tu à joint.
Et comme pour moi si tu essais sur tu tableau la macro bug.
Si je peux éviter les doc joints pour le moment, c'est mieux.
Cdlt -
Modifies cette ligne
PremLi = plage.Cells(1, 1).Row
Cdlmnt -
-
Juste une petite information en plus si tu sais me donner la réponse CCM81.
Quelle serait la macro si je souhaite un deuxième niveau de tri personnalisé.
exemple trier par F en premier et par E en deuxième niveau. (comme avec le tri personnalisé) -
plage.Sort Key1:=Range("F" & PremLi), Key2:=Range("E" & PremLi)
Cdlmnt -