VBA MACRO FILTRE SUR DATE par Worksheet_Change(ByVal Target As Range)

chris6999

XLDnaute Impliqué
Bonjour

Je ne parviens pas à réaliser un filtre sur une valeur de type date.

Lorsque je saisis une date en B1 je souhaite faire un filtre sur cette date en fonction des valeurs de la colonne 1.

If Target.Address(0, 0) = "B1" Then
If Target.Value = "" Then
Range("$A$3:$B$3").AutoFilter Field:=1
Else
Range("$A$3:$B$3").AutoFilter Field:=1, Criteria1:="=" & Target.Value & "*"
End If
End If

Pouvez-vous me dire comment il faut s'y prendre.

Merci
 

Pièces jointes

  • TEST FILTRE DATE.xlsm
    16.4 KB · Affichages: 38

Lone-wolf

XLDnaute Barbatruc
Bonsoir chris6999, mapomme :)

Si les dates sont valides essaie comme ceci Criteria1:="=" & Format([B1], "dd/mm/yyyy" ou [B1].Value2

Moi je ferais comme ceci

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If [B1] = "" Then 
        Range("$A$3:$B$3").AutoFilter
    Else
        Range("$A$3:$B$3").AutoFilter Field:=1, Criteria1:=">=" &Format([B1].Value,"dd.mm.yyyy"),    Operator:=xlAnd, _
        Criteria2:="<=" & Format([B1].Value, "dd.mm.yyyy")
    End If
End Sub
 
Dernière édition:

chris6999

XLDnaute Impliqué
Bonjour

J'avais beaucoup d'espoir en lisant ta proposition car il me semblait bien que j'étais confronté à un pb de format.
Mais non malheureusement cela ne fonctionne pas non plus.
Mes dates sont pourtant bien valides...

Merci encore
 

Lone-wolf

XLDnaute Barbatruc
Re

Et comme ceci

VB:
Private Sub Worksheet_Change(ByVal R As Range)
 
    If R.Address = "$B$1" And R = "" Then
        Range("A3:B26").AutoFilter
    Else
        Range("A3:B26").AutoFilter Field:=1, Criteria1:="=" & Format(R.Value, "dd.mm.yyyy")
    End If
End Sub

filtre.gif


Sinon prend au moins la version Excel 2010 LOL ;):D
 

Lone-wolf

XLDnaute Barbatruc
Re

Un autre test comme ceci, qui sait?? :rolleyes:

VB:
Private Sub Worksheet_Change(ByVal R As Range)
Dim DateRepere As Date

    If R.Address = "$B$1" And R = "" Then
        Range("A3:B26").AutoFilter
    Else
        DateRepere = DateSerial(Year(R.Value), Month(R.Value), Day(R.Value))
        Range("A3:B26").AutoFilter Field:=1, Criteria1:="<" & CLng(DateRepere)
    End If
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Voir fichier joint ?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address(0, 0) = "B1" Then
      If Target.Value = "" Then
         Range("A3:B3").AutoFilter Field:=1
      Else
         On Error Resume Next
         Range("A3:B3").AutoFilter Field:=1, Criteria1:="=" & CDate(Range("b1"))
         On Error GoTo 0
      End If
   End If
End Sub
 

Pièces jointes

  • chris6999- test filtre date- v1.xlsm
    17.8 KB · Affichages: 47

chris6999

XLDnaute Impliqué
Bonsoir à tous,

Voir fichier joint ?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address(0, 0) = "B1" Then
      If Target.Value = "" Then
         Range("A3:B3").AutoFilter Field:=1
      Else
         On Error Resume Next
         Range("A3:B3").AutoFilter Field:=1, Criteria1:="=" & CDate(Range("b1"))
         On Error GoTo 0
      End If
   End If
End Sub

Bonjour

Je viens de tester ton fichier mais chez moi le filtre ne fonctionne pas.
Je crois que je vais laisser tomber...
Merci encore pour votre aide à tous les deux
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, chris6699, Lone-Wolf, mapomme

@Lone-wolf
Tu te compliques la tâche ;)
VB:
Private Sub Worksheet_Change(ByVal R As Range)
    If R.Address = "$B$1" And R = "" Then
        Range("A3:B26").AutoFilter
    Else
        Range("A3:B26").AutoFilter Field:=1, Criteria1:="<" & CLng(R)
    End If
End Sub

Test OK sur Excel 2013
 

Discussions similaires

Réponses
1
Affichages
233

Statistiques des forums

Discussions
312 095
Messages
2 085 250
Membres
102 836
dernier inscrit
Ali Belaachet