XL 2021 Trier tableau

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

julienha

XLDnaute Occasionnel
Bonjour,

Dans le fichier joint, j'aimerais trier le tableau A1:L19 (avec la fonction trier par éventuellement) avec les critères ci-dessous:
- la colonne L en ordre décroissant si toutes les valeurs de la colonne K sont égales à "Put"
- la colonne L en ordre croissant si toutes les valeurs de la colonne K sont égales à "Call"
- sinon trier la colonne J en ordre décroissant

Merci par avance
 

Pièces jointes

Bonjour,

Dans le fichier joint, j'aimerais trier le tableau A1:L19 (avec la fonction trier par éventuellement) avec les critères ci-dessous:
- la colonne L en ordre décroissant si toutes les valeurs de la colonne K sont égales à "Put"
- la colonne L en ordre croissant si toutes les valeurs de la colonne K sont égales à "Call"
- sinon trier la colonne J en ordre décroissant

Merci par avance
Bonjour,
Transformez votre tableau en tableau structuré (sans lignes vides) et les tris et filtres deviendront un jeu d'enfant.
Voir exemple en PJ.
Nota : dans un tableau structuré, les formules se propagent automatiquement à chaque ajout de ligne ou de colonne.
Cordialement,
 

Pièces jointes

Bonjour julienha, Gégé-45550,

Pour ceux dont la version Excel n'accepte pas la fonction TRIER voici une solution VBA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With Range("A1:L" & Application.Match([9^9], [A:A]))
    .Columns(13).Insert xlToRight 'colonne auxiliaire
    .Columns(13) = "=(ROW()>1)*(RC[-2]<>""Put"")"
    .Columns(13) = .Columns(13).Value 'supprime les formules
    If Application.Sum(.Columns(13)) = 0 Then
        .Sort .Columns(12), xlDescending, Header:=xlYes
    Else
        .Columns(13) = "=(ROW()>1)*(RC[-2]<>""Call"")"
        .Columns(13) = .Columns(13).Value 'supprime les formules
        If Application.Sum(.Columns(13)) = 0 Then
            .Sort .Columns(12), xlAscending, Header:=xlYes
        Else
            .Sort .Columns(10), xlDescending, Header:=xlYes
        End If
    End If
    .Columns(13).Delete xlToLeft
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro est dans le code de la feuille et se déclenche quand on modifie une cellule quelconque.

A+
 

Pièces jointes

Bonjour,
Transformez votre tableau en tableau structuré (sans lignes vides) et les tris et filtres deviendront un jeu d'enfant.
Voir exemple en PJ.
Nota : dans un tableau structuré, les formules se propagent automatiquement à chaque ajout de ligne ou de colonne.
Cordialement,
Merci. En fait, j'aimerais que les données se trient automatiquement.
De plus, les données sont actualisées par des copié-collé.
 
Bonjour à tous

Bizarre de trier des - et + en colonne J, mais bon...
Merci bcp pour l'aide.
Est-il possible d'ajouter un filtre pour ne pas prendre en compte les valeurs nulles?
De plus, j'aimerais ajouter un critère de tri par date décroissante (colonne M) (cf fichier joint)
Merci par avance
 

Pièces jointes

Bonsoir julienha, le forum,

Voyez le fichier joint et cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With [Tableau1].ListObject.Range 'tableau structuré
    derlig = Application.Match([9^9], .Columns(1).EntireColumn)
    If IsNumeric(derlig) Then Rows(derlig + 1 & ":" & Rows.Count).Delete 'RAZ
    .Columns(14).Insert xlToRight 'colonne auxiliaire
    .Columns(14) = "=N(RC[-3]<>""Put"")"
    .Columns(14) = .Columns(14).Value 'supprime les formules
    If Application.Sum(.Columns(14)) = 0 Then _
        .Sort .Columns(12), xlDescending, Header:=xlYes: GoTo 1 'tri sur colonne L
    .Columns(14) = "=N(RC[-3]<>""Call"")"
    .Columns(14) = .Columns(14).Value 'supprime les formules
    If Application.Sum(.Columns(14)) = 0 Then _
        .Sort .Columns(12), xlAscending, Header:=xlYes: GoTo 1 'tri sur colonne L
    .Columns(14) = "=N(RC[-3]<>""Date"")"
    .Columns(14) = .Columns(14).Value 'supprime les formules
    If Application.Sum(.Columns(14)) = 0 Then _
        .Sort .Columns(13), xlDescending, Header:=xlYes: GoTo 1 'tri sur colonne M
    .Sort .Columns(10), xlDescending, Header:=xlYes 'tri sur colonne J
1   .Columns(14).Delete xlToLeft
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Les lignes vides du tableau structuré sont supprimées.

Les dates en colonne M sont triées quand on entre le mot Date dans toute la colonne K.

A+
 

Pièces jointes

Dernière édition:
Bonjour
Est-il possible d'ajouter un filtre pour ne pas prendre en compte les valeurs nulles?
Je rappelle qu'un tableau structuré ne doit JAMAIS contenir de lignes entièrement vides qui font perdre 95% des avantages du tableau structuré...

VB:
=EXCLURE(TRIER(Tableau1;SI(OU(NB.SI(Tableau1[C/P];"Put")=NBVAL(Tableau1[C/P]);NB.SI(Tableau1[C/P];"Call")=NBVAL(Tableau1[C/P]));12;10);SI(NB.SI(Tableau1[C/P];"Call")=NBVAL(Tableau1[C/P]);-1;1));NB.SI(Tableau1[Strike];""))
 
Bonjour

Je rappelle qu'un tableau structuré ne doit JAMAIS contenir de lignes entièrement vides qui font perdre 95% des avantages du tableau structuré...

VB:
=EXCLURE(TRIER(Tableau1;SI(OU(NB.SI(Tableau1[C/P];"Put")=NBVAL(Tableau1[C/P]);NB.SI(Tableau1[C/P];"Call")=NBVAL(Tableau1[C/P]));12;10);SI(NB.SI(Tableau1[C/P];"Call")=NBVAL(Tableau1[C/P]);-1;1));NB.SI(Tableau1[Strike];""))
Merci bcp mais la formule ne fonctionne pas (fichier en pf avec la formule en A22)
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
157
Réponses
7
Affichages
339
  • Question Question
Microsoft 365 tri dans Excell
Réponses
19
Affichages
528
  • Question Question
Microsoft 365 Traitement
Réponses
7
Affichages
79
Réponses
15
Affichages
519
Réponses
12
Affichages
527
Retour