Macro Filtre Personnalisé avec Date

titeroch -  
m@rina Messages postés 23929 Date d'inscription   Statut Non membre Dernière intervention   -
Bonjour,

J'ai un tableau excel où il y a une colonne date.

Je souhaite demander à l'utilisateur une date de début et une date de fin et il me fait le filtre automatique sur la colonne entre ces 2 dates.

J'ai essayé en enregistrant une macro automatiquement mais ca m'affiche un tableau vide lorsque je la fais tourner ensuite.

De plus, comment faire pour mettre en critère mes résultats inputbox?

Voici la macro que j'ai actuellement:

Sub filtre()

Dim Datemin As Date
Dim Datemax As Date

Datemin = InputBox("entrer la date inférieure format 3-mars")
Datemax = InputBox("entrer la date supérieure format 3-mars")

Selection.AutoFilter Field:=11, Criteria1:=">=Datemin", Operator:=xlAnd, Criteria2:="<= & Datemax"
ActiveWindow.SmallScroll Down:=-96

End Sub


Merci d'avance!
A voir également:

6 réponses

m@rina Messages postés 23929 Date d'inscription   Statut Non membre Dernière intervention   11 465
 
Bonjour,

C'est un problème que j'ai rencontré et qui est dû au format date de VBA qui est en anglais et notre format en français.

J'avais résolu en déclarant les variables en Long au lieu de Date, et ça marche. C'est le plus simple.
Sinon, tu peux aussi ajouter :

Datemin = Format(datedebut, "mm/dd/yy")
Datemax = Format(datefin, "mm/dd/yy")

m@rina
1
TiteRoch
 
Je ne suis pas une pro de VBA et je ne vois pas où tu ajoutes les 2 lignes que tu m'as ajouté?

Peux tu me montrer ce que ca donnerait au niveau de ma macro?

J'ai essayé autre chose mais ca ne fonctionne qu'avec un seul critère. Si je met les 2 ca me donne un tableau vide...
Les instructions en italiques sont celles qui font que le tableau devient blanc ( en fait c'est quand je lui dis de me trouver les lignes entre telle ou telle date...)

Sub Macro2()

Dim Date_min As Date
Dim Date_max As Date
Dim d As Double
Dim d_bis As Double

Date_min = "03/03/08"
Date_max = "09/03/08"
d = CDbl(Date_min)
d_bis = CDbl(Date_max)

Selection.AutoFilter Field:=11, Criteria1:=">=" & d, Operator:=xlAnd, Criteria2:="<= & d_bis"

'End Sub
0
m@rina Messages postés 23929 Date d'inscription   Statut Non membre Dernière intervention   11 465
 
Bonsoir,

Le problème que je rencontrais était via une Userform. Sans passer par Userform, ça paraît fonctionner convenablement.

Dans ta macro, je vois pas l'intérêt du double Dim... Par ailleurs, il te manque simplement un guillemet dans le deuxième critère, ce qui donne :

Sub Macro2()

Dim Date_min As Date
Dim Date_max As Date

Date_min = "03/03/08"
Date_max = "09/03/08"

Selection.AutoFilter Field:=11, Criteria1:=">=" & Date_min, Operator:=xlAnd, Criteria2:="<=" & Date_max

End Sub


m@rina
0
TiteRoch
 
Merci bcp, ça fonctionne ! :)

Par contre, maintenant j'ai un petit pb car il prend les dates sous la forme mm/jj/aa .

J'ai adapté en notant dans mon inputbox que je voulais sous le format ci dessus mais c'est pas très pratique pour les utilisateurs...

Avez vous une idée pour régler ce pb?

Et encore Merci!

Sub Macro2()

Dim Date_min As Date
Dim Date_max As Date

Date_min = InputBox("entrer la date inférieure format mm/jj/aa")
Date_max = InputBox("entrer la date supérieure format mm/jj/aa")

Selection.AutoFilter Field:=11, Criteria1:=">=" & Date_min, Operator:=xlAnd, Criteria2:="<=" & Date_max

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 23929 Date d'inscription   Statut Non membre Dernière intervention   11 465
 
Bonjour,

Personnellement, quand un formulaire est destiné à plein d'utilisateurs, je verrouille la manière d'entrer des dates en utilisant le contrôle Calendrier. Ou alors, tu utilises plusieurs textbox, un pour le jour, un pour le mois, un pour l'année (ou seulement jour et mois s'il s'agit toujours de l'année en cours, ou mois et année si ça suffit).

m@rina
0
ytonlo
 
LE CHAMP A FILTRER EST LA 7EME COLONNE DU FICHIER
LES DONNEES SONT AU FORMAT DATE JJ/MM/AAAA HH:MM:SS
POUR EXCEL 2007 J'AI DEFINI UN EMPLACEMENT TABLEAU NOMME ("test")

EXCEL 2007
Sub Macro2()

Dim Date_min
Dim Date_max
Dim d
Dim d_bis

Date_min = InputBox("entrez la date")
Date_max = InputBox("entrez la date")

d = Format(Date_min, "GENERAL date")
d_bis = Format(Date_max, "GENERAL date")


ActiveSheet.ListObjects("test").Range.AutoFilter field:=7, Criteria1:=">=" & d, Operator:=xlAnd, Criteria2:="<=" & d_bis


END SUB


EXCEL 2003

Sub Macro2()

Dim Date_min
Dim Date_max
Dim d
Dim d_bis

Date_min = InputBox("entrez la date")
Date_max = InputBox("entrez la date")

d = Format(Date_min, "GENERAL date")
d_bis = Format(Date_max, "GENERAL date")

ACTIVESHEET.CELLS.AUTOFILTER field:=7, Criteria1:=">=" & d, Operator:=xlAnd, Criteria2:="<=" & d_bis

End Sub
0
m@rina Messages postés 23929 Date d'inscription   Statut Non membre Dernière intervention   11 465
 
Bonjour,

Heureusement que TiteRoche avait résolu son problème depuis longtemps... Paske presque 2 après pour une réponse... ça fait long !! :D

m@rina
0