Tri personnalisé de la sélection actuelle

Résolu
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

11 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. Fullreyny
     
    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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  4. Fullreyny
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  7. Fullreyny
     
    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
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Modifies cette ligne
    PremLi = plage.Cells(1, 1).Row

    Cdlmnt
    0
  9. Fullreyny
     
    Génial.
    ça marche nickel.
    Chapeau bas.
    Merci beaucoup
    0
  10. Fullreyny
     
    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
  11. ccm81 Messages postés 11033 Statut Membre 2 434
     
    plage.Sort Key1:=Range("F" & PremLi), Key2:=Range("E" & PremLi)

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