Find en ordre croissant

Bonjour,

Mon but est de filtrer les résultats par rapport à la date d'aujourd'hui et afficher le résultat en colonne E , j'arrive à le faire seulement il ne me l'affiche pas dans l'ordre croissant :(

Merci pour votre aide

ici

Un fichier pour exemple

11testordre.xlsm (22.62 Ko)

Bonjour,
Un exemple avec les données mises sous forme de tableaux structurés.
Cdlt.

5testordre.xlsm (16.83 Ko)
Public Sub CopyData()
Dim lo As ListObject, lo2 As ListObject, r As Range, Cell As Range

    Set lo = Range("t_Data").ListObject
    Set lo2 = Range("t_Résultat").ListObject

    With lo2
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set r = .InsertRowRange.Cells(1)
    End With

    For Each Cell In lo.ListColumns(2).DataBodyRange
        If Cell.Value = VBA.Date Then
            With r
                .Value = Cell.Offset(, -1).Value
                .Offset(, 1).Value = Cell.Offset(, 1).Value
                Set r = .Offset(1)
            End With
        End If
    Next Cell

End Sub

Bonjour,

Autre solution, sans passer par un tableau structuré( qui est quand même préférable) au cas ou les données seraient directement importées.

Sub test()
    Dim Y, c
    Y = 2
    If IsDate(Range("B1")) Then Range("A1:C1").Insert Shift:=xlDown 'insertion d'une loigne en début de tableau
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    With Worksheets("Feuil1").Range("B1:B" & DerLig)
        Set c = .Find(Date, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                Range("E" & Y).Value = Range("A" & c.Row).Value
                Range("F" & Y).Value = Range("C" & c.Row).Value
                Y = Y + 1
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
End Sub

Cdlt

Merci Jean-Eric,

Je dois avouer que j'ai un peu de mal à comprendre.

Comment dois je faire pour ma recherche ?

Je dois remplir la colonne de droite ?

2

Bonjour Arturo,

MAGNIFIQUE Merci beaucoup :)

Je garde ta source mais j'aimerais quand même comprendre la source de Jean-Eric

Re,
Exécute la procédure CopyData !?
Le tableau Résultat va se remplir avec les données de la date du jour.
Cdlt.

Merci Jean-Eric

Arturo ==> pourquoi ajoute une ligne ? je dis ça car j'ai mon vrai fichier avec des titres et le tableau démarre à la ligne 2

Bonjour…

On a toujours intérêt à utiliser les Tableaux (structurés) !

Avec TO l’original à jour (trié) et TR le récepteur :

Sub Ce_jour()
 ‘réinitialise le second
 If Application.CountA([TR]) > 0 Then [TR].Delete
 ‘filtre le premier selon la date du jour (propre au Tableau)
 [TO].AutoFilter 2, 1, Operator:=11
 ‘copie les colonnes voulues
 Union([TO[Titre1]], [TO[Titre3]]).Copy [TR].Item(1, 1)
 ‘annule le filtre
 [TO].AutoFilter
End Sub

Parce que le find saute la première ligne, donc en insérant une ligne en début la recherche commence au bon endroit, d'ailleurs le plus simple, c'est de le vérifier en mettant en commentaire cette ligne et de laisser la tableau tel quel,(le fichier que vous aviez déposé commençait à la ligne 1.)

Re ...

Avec tri préalable

Tri

tri tableau

puis filtre

Sub Ce_jour()
    If Application.CountA([TR]) > 0 Then [TR].Delete
    [TO].AutoFilter 2, 1, Operator:=11
    [TO[Titre1]].Copy [TR].Item(1, 1)
    [TO].AutoFilter
End Sub

Merci à vous tous, bien gentil votre aide.

Arturo ok, donc je peux ne pas ajouter de ligne en laissant les titres ?

Arturo ok, donc je peux ne pas ajouter de ligne en laissant les titres ?
Je n'ai jamais dit ça, le code vérifie si la cellule B1 contient une date, si c'est le cas, alors il ajoute une ligne pour décaler le tableau vers le bas, sinon il passe outre, ce n'est qu'une vérification. Vous, ne changez rien à votre tableau, c'est le code qui s'en charge.

Bonjour à tous !

Pour vous inciter à utiliser une version récente d'Excel .......:

=TRIER(INDEX(FILTRE(Tableau1;Tableau1[Colonne2]=AUJOURDHUI());SEQUENCE(NB.SI(B2:B7;AUJOURDHUI());1);{1.3});2)

Merci JFL mais je n'utilise que très très très rarement les formules

Bonjour,
C'est bientôt Noël !

=FILTRE(FILTRE(t_Data;t_Data[Column2]=AUJOURDHUI());{1.0.1})

Cdlt.

Rechercher des sujets similaires à "find ordre croissant"