Rapport de message :*
 

Tri de tableaux de longueurs variables sur différentes feuilles

Titre du sujet : Tri de tableaux de longueurs variables sur différentes feuilles
par GGlyon le 05/08/2009 13:50:49

 Bonjour à tous,

voilà donc mon problème qui ne semble pas être présent dans l'un des forums :
à partir d'une feuille (Finances), je veux lancer une macro qui, entre autres, trie par dates des tableaux qui sont présents sur les autres feuilles du classeur. Ces tableaux n'ont pas une longuer fixe et seront amener à évoluer. Après de nombreux essais avec "Sort" qui me renvoyaient des erreur d'application ou d'objet(voir premier code), j'ai trouvé un code qui semblait marcher (voir deuxième code). Le problème est qu'il me modifie aussi ma feuille de départ et que je ne voudrais pas passer par une fontion "Activate".

Premier code (juste la partie concernée):
For i = 3 To ActiveWorkbook.Sheets.Count
    For l = 4 To 69
        If ActiveWorkbook.Sheets(i).Range("B9").Value <> "" And ActiveWorkbook.Sheets(i).Range("B9").Value = ThisWorkbook.Sheets("Finances").Range("E" & l).Value Then
            'Recherche de la dernière cellule remplie pour les Factures
            DerniereFacture = ActiveWorkbook.Sheets(i).Columns(28).Find("*", , , , , xlPrevious).Row
            'Trier le tableau des factures par dates croissantes
            ActiveWorkbook.Sheets(i).Range(Cells(154, 27), Cells(DerniereFacture, 35)).Select
            Selection.Sort Key1:=Range("AA154"), Order1:=xlAscending

Deuxième code (juste la partie concernée) :
For i = 3 To ActiveWorkbook.Sheets.Count
    For l = 4 To 69
        If ActiveWorkbook.Sheets(i).Range("B9").Value <> "" And ActiveWorkbook.Sheets(i).Range("B9").Value = ThisWorkbook.Sheets("Finances").Range("E" & l).Value Then
            'Recherche de la dernière cellule remplie pour les Factures
            DerniereFacture = ActiveWorkbook.Sheets(i).Columns(28).Find("*", , , , , xlPrevious).Row
            'Trier le tableau des factures par dates croissantes
            ActiveWorkbook.Sheets(i).Activate
            Range(Cells(154, 27), Cells(DerniereFacture, 35)).Sort   Key1:=Range("AB154"), Order1:=xlAscending
            ActiveWorkbook.Sheets("Finances").Activate
J'espère que mon explication est compréhensible et que j'ai mis assez d'informations pour que vous puissiez me répondre.
Cordialement,
Gaël