Filtrer une colonne format date & heure avec un inputbox

bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -

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

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    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
    1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
       

      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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    Re,

    Ça ne fonctionne pas!

    Pourquoi?

    Petite précision que j'aurais du faire

    Ben, pas trop comprehensible votre phrase!

    0