Tri automatique

Bonjour,

Je souhaiterais savoir s'il est possible de programmer différentes formules de tri automatique sur un même tableau.

Exemple : mon tableau contient une colonne "Dates", une colonne "Négociateur" et une colonne " Montants". J'ai régulièrement besoin de le trier soit par date, soit par négo, soit par montants. Existe t-il une formule qui me permettrait de cliquer par exemple sur "Dates" pour que le tri se fasse automatiquement par dates ? Idem pour les négociateurs et les montants.

Merci

Bonjour Valionne,

n'ayant jamais utilisé cette façon de faire, je ne pourrai pas te l'expliquer en détail mais tu peux organiser ton tableau en autant de listes déroulantes : à créer depuis le menu Validation de données.

Tu pourras ainsi faire tous les tris à partir de n'importe quelle colonne!

A+

Bonjour Curulis57,

Merci pour le tuyau mais la validation de données ne répond malheureusement pas à mes besoins.

Bonjour,

Une proposition à étudier.

Un double clic dans un en-tête du tableau effectue un tri ascendant.

Cdlt.

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Not Intersect(Target, Me.ListObjects(1).HeaderRowRange) Is Nothing Then
        With Me.ListObjects(1)
            Cancel = True
            Application.ScreenUpdating = False
            .Sort.SortFields.Add .ListColumns(Target.Column).DataBodyRange, _
                                 xlSortOnValues, _
                                 xlAscending
            .Sort.Apply
            .Sort.SortFields.Clear
        End With
        With Me
            .[A1:C1].Value = ""
            .Cells(1, Target.Column) = ChrW(228)
        End With
    End If

End Sub

Bonsoir Jean-Eric,

Merci beaucoup pour votre réponse, cette solution correspond parfaitement à ce dont j'ai besoin !!

Ne maîtrisant pas Excel, auriez-vous la gentillesse de m'expliquer comment entrer cette macro dans mon tableau ?

Pour info :

  • les dates se trouvent en colonne P (lignes 4 à 200) et le titre en ligne 3
  • les négos se trouvent en colonne Q (lignes 4 à 200) et le titre en ligne 3
  • les montants se trouvent en colonne R (lignes 4 à 200) et le titre en ligne 3

Merci beaucoup !!!


Bonsoir Jean-Eric,

Merci beaucoup pour votre réponse, cette solution correspond parfaitement à ce dont j'ai besoin !!

Ne maîtrisant pas Excel, auriez-vous la gentillesse de m'expliquer comment entrer cette macro dans mon tableau ?

Pour info :

  • les dates se trouvent en colonne P (lignes 4 à 200) et le titre en ligne 3
  • les négos se trouvent en colonne Q (lignes 4 à 200) et le titre en ligne 3
  • les montants se trouvent en colonne R (lignes 4 à 200) et le titre en ligne 3

Merci beaucoup !!!

Re,

Je t'ai proposé un exemple, basé sur l'utilisation d'un tableau dynamique (Excel 2007+).

Pour poursuivre, il faudrait que tu joignes un petit fichier représentatif de tes données, avec quelques lignes,

que je voie la structure de tes données? et ainsi adapter ma proposition.

Cdlt.

Re,

Tu trouveras ci-joint une copie de mon tableau. J'ai mis en vert les 3 colonnes concernées par le tri : dates résa / négo / sessions

J'espère que cela te conviendra.

Encore merci pour ton aide.

16exemple.xlsx (66.86 Ko)

Re,

Une nouvelle proposition à étudier.

J'ai supprimé une colonne pour effectuer le tri sur les 2 tableaux.

Cdlt.

C'est parfait ! C'est exactement ce que je souhaitais, merci beaucoup !!

En revanche, le tableau que je t'ai envoyé n'était qu'une copie de celui que j'utilise car celui que j'utilise se trouve sur un classeur contenant beaucoup d'onglets que je ne souhaite pas diffuser sur le web. Pourrais-tu me dire "la formule" que je dois rentrer sur mon tableau d'origine et comment la rentrer car j'ai tenté un copier-coller mais bien évidemment cela ne fonctionne pas.

D'avance merci.


C'est parfait ! C'est exactement ce que je souhaitais, merci beaucoup !!

En revanche, le tableau que je t'ai envoyé n'était qu'une copie de celui que j'utilise car celui que j'utilise se trouve sur un classeur contenant beaucoup d'onglets que je ne souhaite pas diffuser sur le web. Pourrais-tu me dire "la formule" que je dois rentrer sur mon tableau d'origine et comment la rentrer car j'ai tenté un copier-coller mais bien évidemment cela ne fonctionne pas.

D'avance merci.

Bonjour,

Il va donc falloir copier la procédure VBA dans ton vrai classeur.

C'est une procédure évènementielle donc liée à une feuille précise.

Pour cela tu ouvres ton classeur.

ALT F11 pour ouvrir l'éditeur VBE.

Dans la fenêtre en haut à gauche, Le nom de ton fichier est visible avec une arborescence et un dossier 'Microsoft Excel Objets'.

Un double-clic sur ce dernier affichera toutes les feuilles de ton classeur.

Tu détermines la feuille (le module de feuille) pour la recopie de la procédure.

Ensuite tu sélectionnes la procédure ci-dessous (j'ai effectué une modification!), Ctrl C pour copier, un double-clic sur la feuiille de destination de ton classeur dans VBE, puis Ctrl V.

Tu enregistres le classeur en xlsm (classeur Excel avec macros).

A te relire, certainement.

Cdlt.

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lCol As Long, lRow As Long
Dim rng As Range

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("O3:Q3")) Is Nothing Then
        Application.ScreenUpdating = False
        Cancel = True
        lCol = Target.Column
        lRow = Cells(Rows.Count, "O").End(xlUp).Row
        Set rng = Range("B3:W" & lRow)
        With rng
            .Sort key1:=Target.Offset(1, 0), order1:=xlAscending, Header:=xlYes
        End With
        [O1:Q1] = ""
        Cells(1, Target.Column) = ChrW(228)
    End If

    Set rng = Nothing

End Sub

Bonjour Jean-Eric,

C'est génial merci beaucoup !! Cela fonctionne parfaitement !

Juste une petite chose, le tri ne s'effectue que jusqu'à la ligne 17 or mon tableau intègre des données jusqu'à la ligne 200. Peux-tu me dire comment modifier cela dans la procédure VBA que tu m'as transmise ?

Merci beaucoup

Re,

La plage de tri est basée sur le nombre le lignes non-vides de la colonne O.

Si le choix de cette colonne n'est pas adapté, quelle colonne utiliser ?

lRow = Cells(Rows.Count, "O").End(xlUp).Row

Cdlt.

Ok, cela explique tout ! Je n'avais rentré les dates que dans 17 lignes de la colonne O c'est pour cela que le tri ne se faisait que sur ces lignes. Mais suite à ton explication, j'ai rentré les données manquantes et en effet le tri se fait parfaitement sur l'ensemble des lignes.

Merci encore pour tout, tu m'as énormément aidée.

Excellente journée à toi.

Re,

J'ai l'impression que ce sujet n'est pas clos.

Bonne journée à toi.

Cdlt.

Rechercher des sujets similaires à "tri automatique"