Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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?
 

Si...

XLDnaute Barbatruc
Bon_jour

Mes versions (la seconde étant plus élaborée : filtre par année, trimestre, N° de semaine et autres).

edit : fichier supprimé (mauvaise version). Voir plus loin ...
 
Dernière édition:

chris6999

XLDnaute Impliqué

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é
 

chris6999

XLDnaute Impliqué

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
 

Pièces jointes

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

Discussions similaires

Réponses
1
Affichages
277
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…