Erreur 1004 Apply

apark -  
 apark -
Bonjour,

j'essaie de faire un code qui trie les colonnes 2 par 2.
colonne i : tickers
colonne i+1 : returns

la colonne i se répète mais l'avantage de le présenter comme cela est purement visuel

l'erreur que j'obtiens est une erreur d'exécution 1004 ,
référence de tri non valide. Vérifiez qu'elle se trouve bien parmi les données à trier et que la zone à trier n'est pas identique ou vide

voici mon code

Sub essaitri()

l = Selection.End(xlDown).Row
l = l

Dim k As Integer

For k = 1 To l Step 2

Range(Cells(k, 1), Cells(k + 1, 1)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Feuil16").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil16").Sort.SortFields.Add Key:=Range( _
Cells(k + 1, 2), Cells(k + 1, 497)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Feuil16").Sort
.SetRange Range(Cells(k, 1), Cells(k + 1, 497))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply

End With
Next k

le programme bloque au niveau de l'avant dernière ligne "Apply"

je vous remercie d'avance pour votre aide

cdt,

2 réponses

Paf
 
bonsoir,

pas tout compris le code par rapport au besoin! et en plus j'ai une erreur dès
ActiveWorkbook.Worksheets("Feuil16").Sort.SortFields.Clear 

Les colonnes ont elles toujours le même nombre de lignes ?
Y a t il des entêtes de colonnes ?
le tri doit s'effectuer sur la colonne i ou i+1 ?
le tri doit être croissant ou décroissant ?
Quelle version excel ?

A+
0
apark
 
Salut,

les colonnes ont toujours le même nombre de lignes
entêtes: colonne i : ticker
colonne i+1 : return

le tri s'effectue sur la colonne i+1
(on réordonne du plus grand au plus petit, il faut que les tickers en face se mettent dans le bon ordre pour correspondre au bon return)

excel 2007

merci
0
Paf
 
re bonsoir

solution proposée:
dercol = Cells(1, 1).End(xlToRight).Column  
Dim k As Integer  
For k = 1 To dercol Step 2  
     derlig = Cells(1, k).End(xlDown).Row  
     Range(Cells(1, k), Cells(derlig, k + 1)).Sort Key1:=Cells(1, k + 1), _  
        Order1:=xlDescending, Header:=xlGuess, _  
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _  
        DataOption1:=xlSortNormal  
Next k  


quel que soit le nombre de lignes ou de colonnes, à partir de la première colonne (1) , on prends les deux colonnes (1 et 2) on fait un tri décroissant basé sur la colonne 2 puis on passe aux deux suivantes .... jusqu'aux dernières colonnes.

A vérifier sur des données sauvegardées, on ne sait jamais !!

A +

edit: réalisé sur 2003.
re edit : penser à déclarer les variables derlig et der col

et re edit : j'ai oublier de préciser le feuille . donc à adapter si pas lancer depuis la feuille à trier !!
0
apark
 
Salut Paf,

ca march nickel,

merci beuacoup
:)
0