Macro Filtre Personnalisé avec Date
Fermé
titeroch
-
20 févr. 2008 à 14:45
m@rina Messages postés 17539 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 mars 2023 - 18 nov. 2009 à 12:57
m@rina Messages postés 17539 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 20 mars 2023 - 18 nov. 2009 à 12:57
A voir également:
- Macro Filtre Personnalisé avec Date
- Photo filtre gratuit - Télécharger - Retouche d'image
- Iphone 14 date de sortie - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
- Macro Recorder - Télécharger - Divers Utilitaires
6 réponses
m@rina
Messages postés
17539
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 mars 2023
11 056
20 févr. 2008 à 15:05
20 févr. 2008 à 15:05
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
m@rina
Messages postés
17539
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 mars 2023
11 056
21 févr. 2008 à 23:47
21 févr. 2008 à 23:47
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
m@rina
Messages postés
17539
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 mars 2023
11 056
22 févr. 2008 à 16:36
22 févr. 2008 à 16:36
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
m@rina
Messages postés
17539
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
20 mars 2023
11 056
18 nov. 2009 à 12:57
18 nov. 2009 à 12:57
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
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