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

Staple1600

XLDnaute Barbatruc
Re

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?
 

chris6999

XLDnaute Impliqué
Re

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?

Bonjour

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

Range("A3:B26").AutoFilter Field:=1, Criteria1:=">=" & CLng(R), Operator:=xlAnd, Criteria2:="<=" & CLng(R)

Merci encore à tous pour votre aide.

Bonne journée
 

chris6999

XLDnaute Impliqué
Re

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?
 

chris6999

XLDnaute Impliqué
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

Regarde la pièce jointe 1011166

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

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é
...
 

Si...

XLDnaute Barbatruc
Re
Bonjour SI
Ta proposition est un peu trop compliquée pour mon projet actuel.
si tu veux saisir la date:
VB:
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.
 

Pièces jointes

  • test filtreS.xlsm
    16.4 KB · Affichages: 17

Si...

XLDnaute Barbatruc
Re

Merci, à ceux* qui ont téléchargé mon fichier (#13) de ne m'avoir pas signalé qu'il n'était pas fonctionnel au niveau du filtre des dates.

Je le remplace (ici) par la bonne version.

*vraiment pas sympas :mad::mad:
 

Pièces jointes

  • Tableau Filtre VBA (Date ou autres Variants) .xlsm
    39.4 KB · Affichages: 16

Discussions similaires

Réponses
1
Affichages
258

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 678
dernier inscrit
bibitm