Tri Colonnes en fonction de la date

Bonjour tout le monde,

Voici mon problème : j'ai un gros tableau avec beaucoup de colonnes et de lignes, j'aimerais faire un tri des lignes en fonction de la date se trouvant dans la colonne U.

Mise en situation : nous sommes mardi 25/06, je veux que toutes les lignes où la colonne U n'est pas égale à la date d'hier ( lundi 24 ) soit supprimé du tableau . Deuxième cas nous sommes lundi 24/06, il faut prendre la date de vendredi.

Pour résumer j'aimerais que ma macro garde dans la colonne U, que la date d'hier ou celle de vendredi (Si on est lundi ). Toutes les autres je veux qu'elles soient supprimées.

Je vous remercie d'avance !

Bonjour à tous !

Et....

Faire un tri n'est pas exactement la même chose que supprimer des enregistrements !

Vous devriez :

  1. préciser, dans votre profil, la nature de votre Excel ( 2019 ? 2021 ? 365 ? ...)
  2. joindre un classeur, anonymisé mais représentatif, accompagné d'exemples du résultat attendu.

Pardonnez moi !

Je travaille sur Excel 2016.

Voici un fichier type :

Il faudrait que la colonne A ne contienne seulement les dates d'hier, ou de vendredi si nous sommes lundi.

6test.xlsx (9.94 Ko)

Bonjour à tous de nouveau !

Une approche, via Power Query (nativement intégré dans Excel 2016) :

Remarques :

  1. Un tableau structuré (nommé tSource) a été inséré en Feuil1
  2. Si la source change, faire "Actualiser tout" pour mettre à jour le tableau.

Merci beaucoup de votre réactivité !

En effet le Power Query corresponds à ma demande.

Cependant j'ai déjà une macro qui réalise des taches sur ce fichier en amont, et d'autres tâches sont censées se faire après.

Est-ce possible de réaliser la même chose mais en VBA ?

Encore merci pour votre aide !!

Bonjour à tous de nouveau !

Alors il faudra attendre qu'une âme avec option "VBA" se penche sur votre demande !

Vous ne devriez pas patienter longtemps.

Bonjour,

Vous pouvez accéder aux (power) Queries à partir de la Range sur laquelle elles sont définies, il faut récupérer la .ListObject et dans cette liste les queries sont dans .QueryTable.

ListObject object (Excel) | Microsoft Learn

QueryTable.Refresh method (Excel) | Microsoft Learn

Ainsi, en supposant la table renvoyée par votre PowerQuery sur la worksheet n°1 (je n'ai pas pris le temps d'ouvrir votre classeur, je suppose que vous avez les connaissances pour adapter), vous pouvez écrire :

ThisWorkbook.Worksheets(1).Range("A1").ListObject.QueryTable.Refresh

Pour rafraichir la PowerQuery définie par JFL.

Bonjour camv_ol, le fil, le forum,

Est-ce possible de réaliser la même chose mais en VBA ?

Un essai :

Sub FiltreLesDates()
    Dim dlig As Integer, Cel As Range
    Dim Dat1 As Date, Dat2 As Date

    ' dernière ligne
    dlig = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    ActiveSheet.Range("$A$1:$A$" & dlig).AutoFilter Field:=1

    Call TrieDeLaColonneA

    Dat1 = Date ' aujourd'hui

    ' si lundi, utiliser vendredi, sinon hier
    If Format(Dat1, "W", 2) = 1 Then
        Dat2 = Dat1 - 2
    Else
        Dat2 = Dat1 - 1
    End If

    ' masque les lignes
    For Each Cel In ActiveSheet.Range("$A$2:$A$" & dlig)
        If Cel < Dat2 Then
            ActiveSheet.Rows(Cel.Row & ":" & Cel.Row).EntireRow.Hidden = True
        End If
    Next Cel
End Sub

Sub TrieDeLaColonneA()
Dim dlig As Long

    dlig = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row

    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add2 Key:=Range("A2:A" & dlig), _
         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A1:C2" & dlig)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Bizz

Merci à vous tous de m'avoir aidé :)

Bonne soirée !

Bonjour à tous de nouveau !

Je vous remercie de ce retour.

Rechercher des sujets similaires à "tri colonnes fonction date"