Filtrer une colonne format date & heure avec un inputbox

bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 18 déc. 2023 à 21:02
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 19 déc. 2023 à 16:49

Bonjour,

Je tente de réaliser une filtre sur une colonne (première colonne) à parti d'un "Inputbox" pour y inscrire l'année à filtrer, mais sans succès.

J'ai chercher pour trouvé une solution, j'ai réussi à filtrer l'année en cours et l'année précédente, mais pas avec l'option que l'utilisateur entre une année à filtrer à partir de l'Inputbox.

Voici mon code:

'Filtrer les lectures à partir de l'année
        '****************************************
        DerLig = .Range("C" & Rows.Count).End(xlUp).Row
        DerCol = .Cells(2, .Cells.Columns.Count).End(xlToLeft).Column
        
        .AutoFilterMode = False
        
        'Ouvrir le filtrer
        '*****************
        .Range("A4:A" & DerLig).AutoFilter
        
        'Message pour choix de l'année. On peut traiter l'année en cours ou passée seulement
        '***********************************************************************************
        If MsgBox("Voulez-vous traiter l'année ne cours?", vbQuestion + vbYesNo, "Traitement année") = vbYes Then
            .Range("A5:A" & DerLig).AutoFilter field:=1, Criteria1:=13, Operator:=11, Criteria2:=0, SubField:=0
        ElseIf MsgBox("Voulez-vous traiter l'année passée?", vbQuestion + vbYesNo, "Traitement année") = vbYes Then
            .Range("A5:A" & DerLig).AutoFilter field:=1, Criteria1:=14, Operator:=11, Criteria2:=0, SubField:=0
        ElseIf MsgBox("Voulez-vous traiter une autre année?", vbQuestion + vbYesNo, "Traitement année") = vbYes Then
            Critere = InputBox("Année à traiter")
            .Range("A5:A" & DerLig).AutoFilter field:=1, Criteria1:=Array(0, Critere)
        Else
            .AutoFilterMode = False
        End If
        
        .Range(Cells(1, 1), Cells(DerLig, DerCol)).Copy

J'ai essayer aussi avec ce code pour le critère 1, mais sans succès!

criteria1:="=" & Critere

Merci pour votre aide!

Windows / Chrome 120.0.0.0

A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
19 déc. 2023 à 07:53

Bonjour,

Inputbox avec control format date et heure. Il y a les secondes, mais vous pouvez les enlever

Sub test()
    Critere = AskForValidDateTime
End Sub


Private Function AskForValidDateTime() As Date
    Dim IsValid As Boolean
    
    Do Until IsValid
        Dim Result As Variant
        Result = Application.InputBox("Wat is de tijd dat het monster genomen is?" & vbNewLine & "Gebruik UU:MM" & vbNewLine & "Voorbeeld: 09:30", "Tijdnotatie")
        
        
        Dim SplitDateTime() As String 'split date from time
        SplitDateTime = Split(Result, " ")
        If UBound(SplitDateTime) = 1 Then
            Dim SplitDate() As String
            'note the following code only works for dates entered in the format DD-MM-YYYY
            SplitDate = Split(SplitDateTime(0), "/")
            If UBound(SplitDate) = 2 Then
                Dim SplitTime() As String
                SplitTime = Split(SplitDateTime(1), ":")
                If UBound(SplitTime) = 1 Then
                    If Val(SplitTime(0)) < 24 And Val(SplitTime(1)) < 60 Then
                        IsValid = True
                        'note the following code only works for dates entered in the format DD-MM-YYYY
                        AskForValidDateTime = DateSerial(Val(SplitDate(2)), Val(SplitDate(1)), Val(SplitDate(0))) + TimeSerial(Val(SplitTime(0)), Val(SplitTime(1)), 0)
                        Exit Do
                    End If
                End If
            End If
        End If
        
        MsgBox "Een correcte tijdsnotatie is nodig om door te gaan. Klik op" & vbNewLine & "<Ok> om de tijd opnieuw in te vullen", vbOKOnly + vbExclamation, vbNullString
    Loop
End Function
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
Modifié le 19 déc. 2023 à 14:26

Bonjour f894009,

Ça ne fonctionne pas!

Petite précision que j'aurais du faire dès le début c'est que ma colonne qui contient les dates est sous format yyyy-mm-jj hh:mm.

Dans mon Inputbox, je demande à l'utilisateur d'entrer une année a filtrer dans le format yyyy.

Merci,

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
19 déc. 2023 à 16:49

Re,

Ça ne fonctionne pas!

Pourquoi?

Petite précision que j'aurais du faire

Ben, pas trop comprehensible votre phrase!

0