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
Test OK également sur XL2K3 (j'ai modifié encore un peu pour rester dans le thème de l'écriture "raccourcie" -> ByVal R as Range)
VB:
Private Sub Worksheet_Change(ByVal R As Range)
If R.Address = "$B$1" And R = "" Then
AutoFilterMode = 0
Else
[A3].AutoFilter 1, "<" & CLng(R)
End If
End Sub
@chris6999
Sur ton vrai fichier, où tu testes nos réponses:
•Le code est bien mis dans le code de la feuille ?
(pas dans un module Standard)
•Les dates en colonne A sont bien au format Date et B1 aussi ?
•Il y a des formules en colonne A ou ce sont des valeurs saisies?
Test OK également sur XL2K3 (j'ai modifié encore un peu pour rester dans le thème de l'écriture "raccourcie" -> ByVal R as Range)
VB:
Private Sub Worksheet_Change(ByVal R As Range)
If R.Address = "$B$1" And R = "" Then
AutoFilterMode = 0
Else
[A3].AutoFilter 1, "<" & CLng(R)
End If
End Sub
@chris6999
Sur ton vrai fichier, où tu testes nos réponses:
•Le code est bien mis dans le code de la feuille ?
(pas dans un module Standard)
•Les dates en colonne A sont bien au format Date et B1 aussi ?
•Il y a des formules en colonne A ou ce sont des valeurs saisies?
Oui bien sûr le code est sur la feuille.
Il n'y a rien d'autre que des dates et le format est OK.
Aucun formule saisie.
Le pb je crois c'est que je souhaite filtrer sur la valeur saisie. Quand j'utilise le code proposé il fait remonter les dates inférieures à la date attendue.
Du coup j'ai borné comme suit avec un criteria2 et cela fonctionne nickel
Test OK également sur XL2K3 (j'ai modifié encore un peu pour rester dans le thème de l'écriture "raccourcie" -> ByVal R as Range)
VB:
Private Sub Worksheet_Change(ByVal R As Range)
If R.Address = "$B$1" And R = "" Then
AutoFilterMode = 0
Else
[A3].AutoFilter 1, "<" & CLng(R)
End If
End Sub
@chris6999
Sur ton vrai fichier, où tu testes nos réponses:
•Le code est bien mis dans le code de la feuille ?
(pas dans un module Standard)
•Les dates en colonne A sont bien au format Date et B1 aussi ?
•Il y a des formules en colonne A ou ce sont des valeurs saisies?
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
Une dernière petite question qui me turlupine...
Comme je fais pour positionner ce code Private Sub Worksheet_Change(ByVal R As Range) alors que j'ai déjà qq chose du type
Private Sub Worksheet_Change(ByVal Target As Range)....
Car dans mon projet réel B1 n'est pas le seul critère de filtre porposé
...
Private Sub Worksheet_Change(ByVal R As Range)
If R.Address = "$B$1" Then
[A3:B3].AutoFilter
If R <> "" Then [A3:B3].AutoFilter 1, "=" & R
End If
'pour un autre filtre
If R.Address = "$C$1" Then
[A3:B3].AutoFilter
If R <> "" Then [A3:B3].AutoFilter 2, R
End If
End Sub
Nota : dans cet exemple, les filtres sont indépendants.