Tri personnalisé de la sélection actuelle

Résolu/Fermé
Fullreyny - 27 févr. 2015 à 15:11
 Fullreyny - 2 mars 2015 à 16:33
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

11 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
27 févr. 2015 à 15:28
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
0
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
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
27 févr. 2015 à 17:00
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
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
2 mars 2015 à 11:12
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
0
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
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
2 mars 2015 à 11:32
Modifies cette ligne
PremLi = plage.Cells(1, 1).Row

Cdlmnt
0
Génial.
ça marche nickel.
Chapeau bas.
Merci beaucoup
0
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é)
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
2 mars 2015 à 16:18
plage.Sort Key1:=Range("F" & PremLi), Key2:=Range("E" & PremLi)

Cdlmnt
0
Merci infiniment. je vais gagner du temps grâce à toi.
@+
0