Tri par date

Bonjour à tous,

J'ai presque fini ma super macro VBA qui fait tout le travail souhaité, sauf une chose : un tri par date (qui se trouve dans une colonne bien entendu)

Description de la feuille et des données :

Une feuille avec 3000 lignes.

Chaque ligne représente une tache et ses 9 caractéristiques (colonne A : ID unique, ..., colonne J: date de mise à jour, colonne K: blabla)

Toutes les colonnes possèdent un filtre.

J'ai mis en place le mécanisme du "Worksheet_Calculate()" qui fait que lorsqu'on valide un filtre, je "catch" l’événement et peut exécuter quelques actions (pour l'instant c'est de la mise en page)

Donc ce que j'aimerais, c'est que dans la fonction "Worksheet_Calculate" un tri sur le résultat du filtre choisi.

J'ai tenté un

maSheet.Range("A2:K" & LastRow).sort <colonne J> <ascending> etc..

Mais je ne sais pas pourquoi, quand valide un filtre tout freeze au point de faire planter Excel..

Soit j'ai pas la bonne ligne de code, soit le résonnement est faux, soit il y a plus simple (en tout cas une autre méthode)

Je vous remercie par avance de l'aide consacrée.

Bonjour,

peut-être :

With Sheets("maSheet")
    .Activate
Range("K1").CurrentRegion.Sort Key1:=Range("K1"), Order1:=xlAscending, Header:= _
        xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End With

Par contre je pense que le tri doit être effectué avant que le filtre ne soit lancé.

Bonjour Xmenpl,

Merci de ton aide.

Malheureusement quand je mets ton code à l'endroit dont j'ai parlé, ça fait planté Excel aussi

As tu un filtrage déjà actif quand tu lances le tri ?

ce ne serait pas plus simple de faire un tableau croisé dynamique de ta base et virer les filtrages de ta base ?

Bah le plus souvent oui.

Par exemple, toutes les données sont affichées.

Je clique sur le filtre de la colonne B, je choisis "toto"

Toutes les lignes contenant "toto" dans la colonne B sont affichées et plus les autres.

Le seul truc que je souhaite c'est que celles qui sont affichées soient triées de par la date (colonne J) de la plus récente à la plus ancienne.

"ce ne serait pas plus simple de faire un tableau croisé dynamique de ta base et virer les filtrages de ta base ?"

Alors là, désolé mais je suis vraiment débutant en Excel et VBA, certes je suis un ancien développeur donc j'ai réussi à faire ma petite macro mais là ça dépasse mes connaissances.

Peut etre qu'en partageant le fichier ce serait plus simple.

Bah le plus souvent oui.

Par exemple, toutes les données sont affichées.

Je clique sur le filtre de la colonne B, je choisis "toto"

Toutes les lignes contenant "toto" dans la colonne B sont affichées et plus les autres.

Le seul truc que je souhaite c'est que celles qui sont affichées soient triées de par la date (colonne J) de la plus récente à la plus ancienne.

Si tu fais un tri sur des lignes filtrées çà va foirer

Donc

  • soit ton code vba fais le tri de toutes les lignes avant filtrage.
  • soit tu utilise un tableau croisé dynamique dans lequel sur pourra utiliser les filtres et tri que tu souhaites puisqu'il ne va
pas modifier ta base de données.

Personnellement j'utiliserai les tableaux croisés ( une base de données on ne touche pas ; sauf pour ajouter ou modifier des

saisie. )

Merci de ta proposition mais je sais absolument pas comment implémenter cela :/

Merci de ta proposition mais je sais absolument pas comment implémenter cela :/

Mets un fichier exemple de ta base avec juste quelques lignes ( en changeant les données confidentielles biensur )

je te ferai l'exemple d'un tableau croisé ( TCD ) avec les explications pour le faire toi même de ton coté.

Rechercher des sujets similaires à "tri date"