Tri de la dernière colonne

Résolu
Merlinn - 20 mai 2014 à 15:04
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 - 20 mai 2014 à 16:19
Bonjour, je suis un grand débutant sur VBA depuis ce matin j'ai bien progressé en cherchant un peut partout mais la je bloque. Donc j'ai un tableau qui au fur et à mesure des semaines possèdera plus colonnes. J'ai réussi à écrire quelques chose pour selectionner la derniere colonne mais je ne sais pas écrire que je souhaite trier la derniere colonne par ordre décroissant. J'ai fat un petit coup d'enregistreur pour voir la forme de la formule du tri mais impossible de la remanier comme je le souhaite. Merci.

Sub Macro1()
'Tri de la dernière colonnes
Cells(1, Columns.Count).End(xlToLeft).Offset(, 0).Select
ActiveCell.EntireColumn.Select

ActiveWorkbook.Worksheets("Pareto").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Pareto").Sort.SortFields.Add Key:=Range("AG1"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Pareto").Sort
.SetRange Range("A2:AG23")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub

2 réponses

jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 344
20 mai 2014 à 15:47
Bonjour,

Sub Macro1()

'Tri de la dernière colonnes
Cells(1, Columns.Count).End(xlToLeft).Offset(, 0).Select
    ActiveWorkbook.Worksheets("Pareto").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Pareto").Sort.SortFields.Add Key:=ActiveCell, _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Pareto").Sort
        .SetRange Selection.CurrentRegion
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
End Sub

1
Merlinn Messages postés 64 Date d'inscription dimanche 20 avril 2008 Statut Membre Dernière intervention 3 juin 2014
20 mai 2014 à 16:08
Merci c'est super !

".SetRange Selection.CurrentRegion" Signifie que que l'action va être mené sur la zone selectionnée ? Et quelle est la différence entre "ActiveCell" et "Selection.CurrentRegion" ?

Car le premier c'est les cellules actives et le second me semble identique en traduisant litteralement.

Désolé si je pose pas mal de question mais je galère tellement que je prend vraiement goût à en apprendre

Merci encore une fois Jordane45
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 344
20 mai 2014 à 16:14
Bonjour,

ActiveCell : comme son nom l'indique : LA Cellule Active
CurrentRegion : Région "courante". ( zone en cours ) .. c'est à dire la plage de cellules qui correspond à votre "tableau".( ce qui revient à faire le raccourci clavier :[ CTRL ] +[ * ] sous Excel )

Si vous exécutez le code en mode pas à pas et que vous regardez au fur et à mesure ce qu'il se passe... vous devriez mieux comprendre le code.

Vous pouvez également utiliser l'aide ( F1 ) en ayant au préalable sélectionné un mot : (comme currentRegion par exemple ).
Cela vous indique :
Range.CurrentRegion, propriété :
Cette propriété renvoie un objet Range qui représente la zone en cours. Celle-ci est une plage limitée par toute combinaison de lignes et de colonnes vides. Type de données en lecture seule.

Remarques :
Cette propriété est utile pour de nombreuses opérations qui étendent automatiquement la sélection de façon à y inclure toute la zone en cours


0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 344
20 mai 2014 à 16:19
PS: n'oubliez pas de mettre votre discussion en RESOLU ( lien se trouvant sous le titre de votre question).
Si vous ne trouvez pas le lien ... dites le moi... je le passerai en résolu moi même.
0
Rejoignez-nous