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 -
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
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:
- Rester sur la cellule modifiée après un tri
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Proteger cellule excel - Guide
2 réponses
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
Cdlt
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
Voilà
Cdlt
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
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
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
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