Posez votre question Signaler

Erreur 1004 Apply

apark - Dernière réponse le 22 janv. 2012 à 23:40
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,
Lire la suite 

Erreur 1004 Apply »

Suggestions
4 réponses
Réponse
+0
moins plus
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+
apark - 22 janv. 2012 à 00:06
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
Ajouter un commentaire
Réponse
+0
moins plus
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 !!
apark - 22 janv. 2012 à 23:40
Salut Paf,

ca march nickel,

merci beuacoup
:)
Ajouter un commentaire
Ce document intitulé « erreur 1004 Apply » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?