Filtre de date avec condition sous vba

S_D

XLDnaute Nouveau
Bonjour,
je suis novice en programmation vba
Je cherche à pouvoir effectuer un filtre de date sur une colonne grace à des valeurs que l'on rentre dans des inputbox (date1 supérieure ou égale à x, date2 inférieure ou égale à y)

Le problème est que quelle que soient les méthodes utilisées, le filtre retourne 0 résultats, voici ce que j'ai déjà essayé :

J'ai essayé d'entrer une macro qui utilise le filtre, après execution 0 résultats et si j'analyse la valeur utilisée pour le filtre de la colonne date, c'est un chiffre du genre 40589 qui est utilisé, j'ai essayé d'utiliser plusieurs fonctions comme format(date1, "mm-dd-yyyy"), cdate, de changer les formats, les types, de stocker la valeur sur une cellule puis de l'utiliser, etc : echec
Voici le code employé
Sub filtredate()
Dim date1 As Date
Dim date2 As Date
Dim message1 As String
Dim message2 As String

'selection date
message1 = "date debut?"
date1 = InputBox(message1)
message2 = "date fin?"
date2 = InputBox(message2)

ActiveSheet.Range("A1:V5075").AutoFilter Field:=15, Criteria1:=">=" & Format(date1, "mm-dd-yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(date2, "mm-dd-yyyy")

End Sub

J'ai ensuite essayé avec le filtre élaboré, toujours 0 résultats
Code employé :
Sub datefiltre2()
Dim date1 As string
Dim date2 As string
Dim message1 As String
Dim message2 As String

message1 = "date debut?"
date1 = InputBox(message1)
message2 = "date fin?"
date2 = InputBox(message2)

Range("A1:V1").Select
Selection.Copy
Range("X6955").Select
ActiveSheet.Paste
Columns("AM:AM").Select
Range("AM6924").Activate
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AL6955").Select
Selection.Copy
Application.CutCopyMode = False
Selection.Copy
Range("AM6955").Select
ActiveSheet.Paste
Application.CutCopyMode = False


Range("AL6956").Select
ActiveCell.FormulaR1C1 = ">=" & Format(date1, "mm-dd-yyyy")
Range("AM6956").Select
ActiveCell.FormulaR1C1 = "<=" & Format(date2, "mm-dd-yyyy")
Range("$A$1:$V$6953").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("$X$6955:$AT$6956"), Unique:=False
End Sub

J'ai essayé de faire le filtre manuellement, en entrant manuellement les dates et en enregistrant les actions sous forme de code, des résultats sont retournés. Quand j'execute le code enregistré en reprenant le fichier de base, 0 résultats

A noter que le format de date sur la feuille est mm-jj-aaaa, que la colonne date est sur la colonne O

J'ai beau essayer plusieurs méthodes, tant que j'essaie d'automatiser ce filtre, aucun résultat n'est retourné.
Quelqu'un aurait une astuce pour contourner ce problème ?

Cordialement
 

S_D

XLDnaute Nouveau
Re : Filtre de date avec condition sous vba

Rebonjour,
comme recommandé j'ai mis date1=cdate(inputbox(message1) et date2=cdate(inputbox(message2) à la ligne 8 et 10
le filtre est donc executé mais toujours les mêmes résultats, excel essaie toujours d'utiliser le filtre avec un chiffre du genre 40596 si l'on regarde le filtre appliqué sur la colonne O

Deux détails qui ont peut etre leur importance :
dans une inputbox je rentre 02-22-2011 par exemple, le même format que la colonne date
les cellules de la colonne date sont comme figées, si l'on formate les cellules, tout les formats, personnalisé ou pas n'ont aucun effet visuels sur les cellules
 

S_D

XLDnaute Nouveau
Re : Filtre de date avec condition sous vba

Bonsoir, après quelques recherches je crois que ce qui pose problème est le format de cellule :
la cellule date est comme figée, aucun format ne s'y applique, la multiplier par 1 ne change rien, etc...

quelqu'un aurait une idée de comment contourner ces cellules 'figées' ?

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 073
Membres
104 019
dernier inscrit
pascal la