VBA tri personnalisé sur une plage variable

Trishia

XLDnaute Nouveau
Bonjour,

Je souhaite effectuer un tri personnalisé sur une plage variable à l’aide de VBA...
Voici la macro :
ActiveWorkbook.Worksheets("Ville").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Ville").Sort.SortFields.Add Key:=Range("B2:B30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Petit, Moyen,Grand" _

Comment définir la plage variable ?
Habituellement j'utilise "Selection.CurrentRegion.Select"...

Merci d’avance de votre aide.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : VBA tri personnalisé sur une plage variable

Tout simple !!!
Tu utilises l'enregistreur de Macro ... tu fais ta sauce
Ensuite tu changes les paramètres que tu veux par des variables ... supposant que tu as créé des Sub en code VBA ??
j'ai déjà fait des graph complexes comme ça aussi
Sinon met ton fichier avec les infos , on verra
 

Trishia

XLDnaute Nouveau
Re : VBA tri personnalisé sur une plage variable

Bonjour,

J'ai utilisé l'enregistreur de macro ; voici le résultat :
ActiveWorkbook.Worksheets("Ville").Sort.SortFields .Clear
ActiveWorkbook.Worksheets("Ville").Sort.SortFields .Add Key:=Range("B2:B30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Petit, Moyen,Grand" _

Mon problème est justement le paramétrage des variables... Qu'écrire en remplacement de Range("B2:B30") ?
Merci.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : VBA tri personnalisé sur une plage variable

Bonjour tous
cela dépend si colonne Ou Ligne ; Ou les 2 ?
comme par ex : Range("A100:B" & Dlig) ou Range (col1 & Plig & ":" & col2 & Dlig)
et avant dans ton appli tu as affecté une valeurs à ces variables
Là comme ça je ne sais plus si on peut utiliser CELLS(x,y) dans ce cas au lieu de Range ? qq pourra le confirmer ou Fouiner sur le Web
c'est nettement plus pratique en gestion de variables
 

Trishia

XLDnaute Nouveau
Re : VBA tri personnalisé sur une plage variable

La plage varie en nombre de lignes.
Non, je n'ai pas affecté de valeurs à ces variables.

Pour un tri simple sur une plage variable, j'utilise cette macro :
Selection.CurrentRegion.Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Comment l'adapter pour un tri personnalisé ?
Merci.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : VBA tri personnalisé sur une plage variable

Au #3 tu écris > ActiveWorkbook.Worksheets("Ville").Sort.SortFields .Add Key:=Range("B2:B30"),
et là tu mets Range("G1")
?? je pige plus
Met un exemple de ton fichier , sinon quand on commence une macro en VBA on fait tout avec , donc les variables doivent être complétées soit via direct vba soit provenant de valeurs de cellules dans une feuille
 

Trishia

XLDnaute Nouveau
Re : VBA tri personnalisé sur une plage variable

Bonjour,

Ci-joint exemple de fichier + macro incluse.

Je souhaite effectuer un double tri :
1/ tri personnalisé sur la colonne B avec dans l'ordre : Moyen,Grand,Petit
2/ tri ascendant sur la colonne C.

Voici le résultat de l’enregistreur macro :
Sub Tri_personnalise()

ActiveWorkbook.Worksheets("Ville").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Ville").Sort.SortFields.Add Key:=Range("B2:B16"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Moyen,Grand,Petit", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Ville").Sort.SortFields.Add Key:=Range("C2:C16"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Ville").Sort
.SetRange Range("A1:C16")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub


Le problème est que le nombre de ligne varie.
Comment définir la plage variable (en rouge dans ma macro) ?
Merci.
 

Pièces jointes

  • Tri_personalise.xlsx
    8.2 KB · Affichages: 62

herve62

XLDnaute Barbatruc
Supporter XLD
Re : VBA tri personnalisé sur une plage variable

Bonjour
Ci joint le fichier actualisé
Le bouton TRI effectue l'opération quelque soit le nombre de lignes
j'ai supposé que cela commençait toujours à la ligne 2 et que les colonnes étaient B & C
si ce n'est pas le cas on peut ajouter des variables
 

Pièces jointes

  • Tri_perso.xlsm
    18.5 KB · Affichages: 424

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia