Trier Date

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
Loqman
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 17 avril 2019
Version d'Excel : Excel 2016

Message par Loqman » 6 mai 2019, 11:27

Bonjour à tous!

J'ai un petit problème sur un fichier, en effet je n'arrive pas à trier les dates de mon fichier.
J'aimerais pouvoir via un UserForm et un programme VBA pouvoir choisir de "telle date à telle date" et que ça puisse supprimer toutes les lignes non associés a ces dates.


Merci d'avance le forum!


Cordialement
xxx.xls
(66 Kio) Téléchargé 10 fois
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'457
Appréciations reçues : 206
Inscrit le : 13 juin 2016
Version d'Excel : 2013 FR 64 bits

Message par thev » 6 mai 2019, 11:50

Bonjour,

Une partie de tes dates est au format texte (alignement à gauche) et non au format nombre (alignement à droite). De plus, tes dates au format texte sont au format anglo-saxon.
Ne pas oublier qu'une date dans Excel est un nombre = nombre de jours depuis le 1er janvier 1900.
La constitution de ta feuille de dates est à revoir.
L
Loqman
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 17 avril 2019
Version d'Excel : Excel 2016

Message par Loqman » 6 mai 2019, 11:55

je l'ai ai réglés en "jj/mm/aaaa hh:mm", moi je voudrais juste que le programme puisse par exemple trier les dates de 2018 et supprimer celle de 2019 par exemple :)

Cordialement
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'015
Appréciations reçues : 302
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 6 mai 2019, 11:55

Bonjour,

Tes dates sont au format US (mm/dd/yyyy) donc, Excel en Français ne considère en dates valides (jj/mm/aaaa) que celles dont le jour en date US est inférieur à 13 (le mois pour Excel Français), les autres étant considérées comme du texte.
Une petite procédure pour transformer les dates du format US au format FR :
Sub Test()
    
    Dim Plage As Range
    Dim Cel As Range
    Dim T
    Dim LaDate As Date
    
    'défini la plage sur la colonne B de la feuille active à partir de B2
    With ActiveSheet: Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
    
    For Each Cel In Plage
        
        T = Split(Cel.Value, "/")
        
        'reconstruit la date au format Français (jj/mm/aaaa hh:mm)
        LaDate = CDate(DateSerial(Split(T(2), " ")(0), T(0), T(1)) & " " & Split(T(2), " ")(1))
        
        'et la met dans la colonne E
        Cel.Offset(, 3).Value = LaDate
        
    Next Cel
    
End Sub
Tout ça bien évidemment si tu utilise Excel en Français avec ces dates en Anglais sinon, donne plus d'explications !
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
L
Loqman
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 17 avril 2019
Version d'Excel : Excel 2016

Message par Loqman » 6 mai 2019, 12:12

Ah oui! en effet je viens de voir le problème des dates qui ne sont pas française, je viens de mettre le programme que vous m'avez envoyé (merci bcp!!!). Maintenant, j'aimerais savoir s'il était possible d'avoir un user form et d'y mettre des dates indiqués et qu'il me supprime les dates qui ne sont pas indiquées.
Par exemple, je souhaite sélectionner seulement les dates de 2019 et supprimer toutes les autres.

Cordialement!
L
Loqman
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 17 avril 2019
Version d'Excel : Excel 2016

Message par Loqman » 6 mai 2019, 12:13

fichiers avec programme
xxx (3).xlsm
(32.54 Kio) Téléchargé 4 fois
L
Loqman
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 17 avril 2019
Version d'Excel : Excel 2016

Message par Loqman » 6 mai 2019, 13:28

SVP qqlun peut m'aider??
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'015
Appréciations reçues : 302
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 6 mai 2019, 14:43

Sur ton UserForm, tu poses deux TextBox nommés "TextBox1" et "TextBox2" (noms par défaut, "TextBox1" pour la date de début et "TextBox2" pour la date de fin) et un bouton nommé "CommandButton1" puis tu colles le code ci-dessous dans le module de l'UserForm. Les dates inférieures à TextBox1 et supérieure à TextBox2 auront leur ligne entière supprimée donc, par prudence, faire un test sur une copie de la feuille. Attention, les dates sont sensées être valides en colonne B (tu les as remplacé par les dates issues de mon code précédant). Le code s'exécute sur la feuille active :
Private Sub CommandButton1_Click()
    
    Dim Plage As Range
    Dim I As Long
    
    If TextBox1.Text = "" Or TextBox2.Text = "" Then Exit Sub
    
    With ActiveSheet: Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
    
    If TestDate(TextBox1.Text) = False Then MsgBox "Date non valide pour la date de début !": Exit Sub
    If TestDate(TextBox2.Text) = False Then MsgBox "Date non valide pour la date de fin !": Exit Sub
    
    Application.ScreenUpdating = False
    
    Plage.NumberFormat = "general"
    
    For I = Plage.Count To 1 Step -1

        If Plage(I, 1).Value < CDbl(CDate(TextBox1.Text)) Or Plage(I, 1).Value > CDbl(CDate(TextBox2.Text)) Then
        
            Plage(I, 1).EntireRow.Delete
            
        End If
        
    Next I

    Plage.NumberFormat = "m/d/yyyy h:mm"
    
    Application.ScreenUpdating = True
    
End Sub

Function TestDate(LaDate As String) As Boolean

    Dim DateTest As Date
    
    TestDate = True
    
    On Error Resume Next
    DateTest = CDate(LaDate)
    
    If Err.Number <> 0 Then
    
        Err.Clear
        TestDate = False
        
    End If
    
End Function
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
L
Loqman
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 17 avril 2019
Version d'Excel : Excel 2016

Message par Loqman » 6 mai 2019, 14:46

ça marche! merci!
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'577
Appréciations reçues : 557
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 6 mai 2019, 14:52

Bonjour,
@ Theze
Il semble que ta procédure de conversion modifie aussi les dates valides !... :oops:
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message