CQE,
Je te fais parvenir un semblant d'explication. Cela risque peut-etre de te paraitre assez confu mais c'est un debut.
Le probleme avec Excel c'est que les dates sont conservees sous un format special dont pour avoir la date d'aujourd'hui la fonction now() renvoie la date avec l'heure sous forme de nombre decimal par exemple:
30/01/2006 21:27 38747.89
hors si tu utilise une date dans une cellule cela sera un chiffre entier :
31/01/2006 sera 38748.00
donc pour que cela fonctionne dans ton filtre: il faut que tu enleve la decimale de ton chiffre avec la fonction int(now()) tu obtiens cela.
Je joins un fichier pour essayer d'expliquer .
Ouvrir un nouveau classeur et taper
des donnees dates dans 'A5:A20' en mettant entetete colonne 'mesdates' (sans guillemets) en A5. Dans A2 saississez 'mesdates' (sans guillemets) Ne Tapez rien dans A3
'enlevelefiltre et filtre avec date egale ou plus grande qu'aujourd'hui
'remarquer que la date du jour obtenue
'par now() a ete transformee en entier par la fonction int()
'AFFICHE DATES>=AUJOURD'HUI
'====================
Sub plusgrandaujourdhui()
If FilterMode = True Then
ActiveSheet.ShowAllData
End If
Range('a3').Value = '>' & Int(Now())
Range('A5:A20').AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range('A2:A3'), Unique:=False
End Sub
'AFFICHE DATES<=AUJOURD'HUI
'====================
Sub pluspetitQuaujourdhui()
If FilterMode = True Then
ActiveSheet.ShowAllData
End If
Range('a3').Value = '<' & Int(Now())
Range('A5:A20').AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range('A2:A3'), Unique:=False
End Sub
=============
Si vous utilisez ce code , il faudra remplacer
Range('A5:A20')
par les coordonnees de la zone a filtrer incluant l'en tete.
Range('A2:A3')
sera a remplace par les coordonnees du critere de filtre. Ces 2 cellules devront comprendre dans la premiere l'entete de la colonne a filtrer.
Le reste devrait se faire tout seul.
Message édité par: sunnyland, à: 30/01/2006 12:56