autofilter

S

sarduken

Guest
Bonjour a tous
j aurai vraiment besoin de votre aide
j ai un tableau sous excel dont une colonne contient des dates au format dd/mm/yyyy. J ai un filtre sur l ensemble du tableau et je cherche a ne garder que les lignes correspondant a une date anterieure a une date donnée .Sous excel pas de pb,quand j'enregistre le code il me donne ca:


Selection.AutoFilter Field:=5, Criteria1:="<21/05/2003", Operator:=xlAnd

mon probleme c que la macro ne marche pas ensuite quand je l execute..
les données sont filtrées mais plus aucune ligne ne correspond a mon critere alors qu avant si !

Merci d'avance
Sarduken
 
T

Ti

Guest
ça vient de ce qu'Excel considère ta date comme une chaîne de caractère dans ce contexte. Pour remédier à cela, 2 solutions :

- soit, si tu veux toujours filtrer la même date, tu modifies ta ligne en :

Selection.AutoFilter Field:=5, Criteria1:=CDate("<21/05/2003")

- soit, et c'est mieux parce que plus souple, tu crées une variable Date qui conviendra mieux à Excel :

Dim LaDate As Date
LaDate = "21/05/2003"
Selection.AutoFilter Field:=5, Criteria1:=LaDate

Attention, j'ai testé cette option dans Excel XP, mais je ne te garantis pas son fonctionnement dans Excel 2000. La gestion des dates (tri, recherche via la méthode Find de VBA) est une des grandes améliorations de la version XP par rapport aux précédentes versions.
 
S

sarduken

Guest
merci Ti de ta reponse si rapide
j'ai Excel 2002 c la meme chose qu' XP non?
ta deuxieme solution marche bien mais seulement quand le critere est une égalité
dans le cas d'une inégalité :

Dim ladate As Date
ladate = "22/05/2003"
Selection.AutoFilter Field:=5, Criteria1:="<" & ladate

la ca marche plus j ai le meme pb qu avant
j ai compris que c t a cause du format mais je vois pas comment resoudre ce pb

a +
sarduken
 
T

Ti

Guest
Bon, en fait mon explication précédente n'était pas tout à fait juste. Cela tient à ce que nous parlons Français, mais que, dans VBA, tout se passe en Anglais (et je l'oublie tout le temps !). Donc tu dois transformer cette date au bon format :

- soit tu l'introduis directement au bon format :

Selection.AutoFilter Field:=5, Criteria1:="<05/21/2003"
(le mois vient en premier, puis le jour)

- soit, si tu gardes ta variable date, tu la transformes gràce à la méthode Format :

Dim LaDate As Date
LaDate = "29/05/2003"
Selection.AutoFilter Field:=2, Criteria1:="<" & Format(LaDate, "mm/dd/yyyy"), Operator:=xlAnd
End Sub
 

Discussions similaires

Réponses
8
Affichages
344
Réponses
2
Affichages
228

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 082
dernier inscrit
Narlock