Rester sur la cellule modifiée après un tri

Résolu
fadmaam Messages postés 35 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,

J'ai un code pour trier plusieurs colonnes (tri sur les colonnes A et C) lorsqu'on modifie ou on ajoute une ligne. Le problème est que dès que l'on encode quelque chose, la macro trie le tout mais reste sur la cellule où la modification a été faite. Serait-il possible que la macro retrouve la cellule que l'on vient de modifier et se positionne sur celle-ci ? Par ex, si je modifie la cellule A2 et que celle-ci se retrouve en A82 après le tri, il faudrait que la cellule active soit la A82.
Je précise que je n'y comprends pas grand chose à VBA...

Etant au boulot, je n'ai pas accès à cjoint.com, je mets donc le code tel quel.

Merci d'avance pour vos idées ;-)

fadmaam

Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ref As Range
Set ref = ActiveCell
Range("A2:AC1000").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Select Case ref.Value
End Select
End Sub

2 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    Attention dans votre texte, vous parlez des colonnes de A à C
    mais dans la macro, vous avez A à AC
    j'ai retenu le premier cas, si ce n'est pas ça, dites le moi
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column > 3 Or Target.Row = 1 Then Exit Sub
        Valeur = Target
        Range("A2:C1000").Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
        Set C = Columns("A:C").Find(Valeur, LookIn:=xlValues)
        C.Select
    End Sub

    Cdlt
    0
    1. fadmaam Messages postés 35 Statut Membre
       
      Bonjour,

      Merci pour votre réponse.
      Je me suis peut-être mal exprimé pour les colonnes... En fait, je trie les colonnes de A à AC mais sur base des colonnes A, en premier, et C ensuite.
      Cela change-t-il quelque chose à votre code ?

      fadmaam
      0
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Voilà
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.ScreenUpdating = False
        If Target.Column > 29 Or Target.Row = 1 Then Exit Sub
        Valeur = Target
        Range("A2:AC" & [A10000].End(xlUp).Row).Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
        Set C = Columns("A:AC").Find(Valeur, LookIn:=xlValues)
        C.Select
    End Sub

    Cdlt
    0
    1. fadmaam Messages postés 35 Statut Membre
       
      Je suis désolé mais ça bugge... "Sort method class range failed"


      fadmaam
      0
    2. fadmaam Messages postés 35 Statut Membre
       
      Bon, ben ça marche dans un fichier et pas dans l'autre. Je vais investiguer ;-)

      Un tout grand merci en tous cas !


      fadmaam
      0
    3. Frenchie83 Messages postés 2254 Statut Membre 339
       
      Quelle version d'excel avez-vous?
      0
    4. fadmaam Messages postés 35 Statut Membre
       
      Excel 2010
      0
    5. Frenchie83 Messages postés 2254 Statut Membre 339
       
      Bonjour
      Avez-vous copier le programme au bon endroit? il faut qu'il soit impérativement dans le module de la feuille concernée. Exemple: si votre tableau est dans la "Feuil1" le programme doit se trouver dans le module "Feuil1".
      La première ligne de votre tableau est-ce la même que celle du fichier qui fonctionne?
      Si malgré cela, ça ne fonctionnait toujours pas, mettez un extrait de votre fichier sans données personnelles sur cjoint .com et copier le lien ici.
      Cdlt
      0