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 -
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
-
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 -
Re,
Ça ne fonctionne pas!
Pourquoi?
Petite précision que j'aurais du faire
Ben, pas trop comprehensible votre phrase!