Adapter une macro de tri existante
Bonjour!
J'ai trouvé sur le forum une macro qui tri indépendamment chaque colonne d'une plage. Par exemple dans la macro trouvée, tri de A10:A30, puis tri de B10:B30, et etc jusqu'à la dernière colonne. C'est exactement ce que je recherche, mais je suis simplement trop nul débutant en vba pour adapter cette macro à une autre plage de ma convenance, je m'arrache les cheveux depuis plusieurs heures pour comprendre son fonctionnement..
Pour info le topic originel est ici : https://forum.excel-pratique.com/excel/macro-tri-colonnes-t22302.html
Merci à Dan pour la macro initiale
Sub trier()
'Macro Dan pour Aurelien le 25/03/11 - XL pratique
Dim Plage As Range
Dim i As Byte
Dim Dcl As Byte, Dlg As Long
Dcl = Cells(10, Columns.Count).End(xlToLeft).Column
Dlg = Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
For i = 1 To Dcl
Set Plage = Range(Cells(10, i), Cells(Dlg, i))
Plage.Sort Key1:=Cells(11, i), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Next
End Sub
Mes données à trier ne sont pas sur une plage A10:Z30 comme le posteur initial, mais je souhaite pouvoir régler une plage moi-même dans une (ou plusieurs) variable(s) en début de macro (Par exemple Plage = A52:CM100, ou cellule1=A52 et cellule2=CM100), et associer la macro à un bouton.
Je continue de chercher, mais toute aide est la bienvenue!
Salut et bienvenue sur le Forum,
J’ai tenté une modification du code de Dan afin de voir dans quelle direction partir. J’ai donc ajouté des variables et j’ai indiqué manuellement, directement dans le code, des valeurs correspondantes à la plage mise en place sur la feuille.
Ca a l’air de bien fonctionner.
Comment penses-tu alors indiquer les valeurs de tes variables ? Par un formulaire en début de macro ? Mais d’un autre côté, suivant la construction de ton fichier réel, peut-être que l’on pourrait s’y prendre autrement. Tu ne veux pas me montrer ton document ?
Cordialement.
Mais... mais c'est excellent, tout ca!
Ca marche, je comprend comment définir ma plage de données (Première_colonne; Première_ligne; Dcl : denière colonne; Dlg dernière ligne), c'est juste impeccable.
Je vais mettre tout cela en place, merci beaucoup!
Je place ici le code que tu as fourni, pour un accès plus facile si d'autres se posent la question. Sujet résolu!
Option Explicit
Sub trier()
'Macro Dan pour Aurelien le 25/03/11 - XL pratique
'Repris et adapté par Yvouille pour Charpy le 17/09/2014 - XL pratique
Dim Plage As Range
Dim i As Byte
Dim Dcl As Byte, Dlg As Long
Dim Première_colonne As Integer, Première_ligne As Integer
Dcl = 6
Dlg = 10
Première_colonne = 4
Première_ligne = 5
Application.ScreenUpdating = False
For i = Première_colonne To Dcl
Set Plage = Range(Cells(Première_ligne, i), Cells(Dlg, i))
Plage.Sort Key1:=Cells(Première_ligne, i), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Next
End Sub