insertion date du jour dans filtre personnalisé

C

cqe

Guest
Je souhaite faire un filtre personnalisé (est inférieur à date du jour) en VBA sur une colonne contenant des dates et suis en peu perdu.
La date du jour est contenu dans une variable.
Quelqu'un peut-il m'aider sur le code à utiliser ?
 

sunnyland

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
5
Affichages
195

Statistiques des forums

Discussions
312 321
Messages
2 087 243
Membres
103 497
dernier inscrit
JP9231