bonjour,
à un bouton j'affecte une macro de tri écrite automatiquement avec l'enregistreur de macro.
Avec 2003, je n'ai pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 'Code avec Office 2003 Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Key2:=Range("A5") _ , Order2:=xlAscending, Key3:=Range("D5"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _ xlSortNormal
En réalisant le même style d'opération sur d'autres colonnes avec Excel 2007, j'obtient un autre code... qui fonctionne pour les lignes inférieures à 42.
En effet avec le type d'écriture d'excel 2007, on obtient dans le code la plage complète (colonne) à trier alors qu'avec XL2003, on a que la première cellule à trier de spécifiée (fixe dans la plupart des cas).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ActiveWorkbook.Worksheets("Groupes de xxxx").Sort.SortFields.Clear 'ActiveWorkbook.Worksheets("Groupes de xxxx").Sort.SortFields.Add Key:= _ Range("C5:C42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal 'ActiveWorkbook.Worksheets("Groupes de xxxx").Sort.SortFields.Add Key:= _ Range("A5:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal 'With ActiveWorkbook.Worksheets("Groupes de xxxx").Sort ' .SetRange Range("A5:I42") ' .Header = xlGuess ' .MatchCase = False ' .Orientation = xlTopToBottom ' .SortMethod = xlPinYin ' .Apply 'End With
Enfin, ma question : Y-a-t-il un paramètre supplémentaire à spécifier avec XL2007 pour qu'il fasse comme 2003 ?
Merci.
Partager