Je cherche à faire un tri automatique croissant de 3 colonnes distinctes a,b,c, par une macro Worksheet.
Exemple dans la première colonne (A) j'ai les noms, dans la deuxième colonne (B) j'ai les prénoms et dans la troisième colonne (C) j'ai un code, au moment du tri il faut que ces trois colonnes soient liées pour ne pas séparer les noms, prénoms,et code et le tri devraient s'effectuer automatiquement après avoir taper le code.
Merci de votre aide, je n'ai pas trouvé mon bonheur sur le forum et pourtant j'en ai passé du temps, ou alors je n'ai pas posé la bonne question pour une réponse positive
essaye ceci, à placer dans le module de la feuille concernée :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Count = 1 Then Range("A1").CurrentRegion.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes, Orientation:=xlTopToBottom
End Sub
Merci Pierrot93 de ton implication, mais en fait je pense que je me suis mal exprimer ou alors ma question à été mal interprété, en tout les cas ta macro fonctionne mais le seul hic c'est que le tri croissant doit se faire par le nom et pas par le code comme actuellement, par contre le top départ du tri s’effectue après avoir valider le code
tu peux mettre une concaténation en colonne D (=a2&b2&c2)pour que tout soit lié et trier sur celle ci; ceci dit, quand on clique sur une cellule de la colonne C, et que l'on clique ensuite sur A-Z pour le tri croissant , si les colonnes sont contigues et ont un titre , ça trie correctement...
Ou alors je n'ai pas encore compris, ce qui m'arrive souvent
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Count = 1 Then Range("A1").CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, Orientation:=xlTopToBottom
End Sub
Merci gosselien et Pierrot93 pour votre investissement mais en fait Pierrot93 ta macro ne fonctionne plus, quand il y a une ligne vide
Du coup j'ai réussi à trouver une autre macro qui fonctionne selon mes critères, je la met en ligne au cas ou quelqu'un serait éventuellement intéressée
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long
If Target.Count > 1 Then Exit Sub
If Target.Column = 3 Then
DerLig = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:C" & DerLig).Sort Range("A1"), xlAscending
End If
End Sub