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

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
 
S

sarduken

Guest
cool la deuxieme partie de ta reponse correspond exactement a ce que je veux faire ( c le Format qu'il me manquait)
ca a l air de marcher maintenant Encore merci Ti
 

Discussions similaires

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