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

Résolu
fadmaam Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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
fadmaam Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
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
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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
fadmaam Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Je suis désolé mais ça bugge... "Sort method class range failed"


fadmaam
0
fadmaam Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Bon, ben ça marche dans un fichier et pas dans l'autre. Je vais investiguer ;-)

Un tout grand merci en tous cas !


fadmaam
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
Quelle version d'excel avez-vous?
0
fadmaam Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Excel 2010
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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