Macro Filtre Personnalisé avec Date
titeroch
-
m@rina Messages postés 23929 Date d'inscription Statut Non membre Dernière intervention -
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!
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:
- Macro Filtre Personnalisé avec Date
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment faire un tri personnalisé sur excel - Guide
- Filtre whatsapp - Accueil - Messagerie instantanée
- Filtre teams - Accueil - Visio
6 réponses
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
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
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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