Macro de Filtrage avec plage de dates

  • Initiateur de la discussion Initiateur de la discussion Barberousse113
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Barberousse113

Guest
Bonjour,

Un ami m'a passé un extract de SAP sur lequel je souhaiterais effectuer des macros de filtrage.
Le premier filtre que je dois utiliser est un des filtres automatiques.
Cependant je dois ensuite filtrer sur une plage de date : je m'explique.
Pour chaque ligne, j'ai un champ date au format (m)m/(d)d/yyyy.

Ce que je cherche à réaliser serait une macro demandant sur quelle mois et quelle année l'utilisateur veut effectuer le tri et ensuite lui retourner les cellulles avec un champ date faisant partie du mois demandé.

Si mon fichier vous serait utile, je le rajouterai, (j'ai préféré ne pas surcharger ds un premier temps.

D'avance grand merci

PS : Je suis un débutant (un peu boulet) en VBA, j'utilise Excel 2003 SP2 sous Windows XP
 
Re : Macro de Filtrage avec plage de dates

Re


Voici une macro issue de l'enregistreur de macro
(Enregistée pendant que je faisais le filtre automatique
sur CNF)

Sub Macro1()
Selection.AutoFilter
Selection.AutoFilter Field:=9, Criteria1:=">=01/09/2007", Operator:=xlAnd _
, Criteria2:="<30/09/2007"
End Sub
 
Re : Macro de Filtrage avec plage de dates

Je commence à y voir plus clair...
Cmt faire alors pour qu'il prenne automatiquement tout le mois ? Je ne peux pas faire "plus Un" dans la macro complète puisqu'il s'agit d'un string ? recours à un chgt de variable ???

Merci de ton aide
 
Re : Macro de Filtrage avec plage de dates

Re

En utilisant les deux macros réunies, on obtient:
Code:
Sub Macro1()
Dim X As String
Dim ANNEE As String
Dim MOIS As String
Dim Criter As String
Dim Criter2 As String
ANNEE = InputBox("Quelle année?", "Choix de l'année")
MOIS = InputBox("Quel mois?", "Choix du mois")
'renvoie le premier jour du mois (à cause du 1)
X = "1/" & MOIS & "/" & ANNEE
Select Case MOIS
Case 1, 3, 5, 7, 8, 10, 12
Criter2 = Format(CDate(X) + 30, "mm/dd/yyyy")
Case 4, 6, 9, 11
Criter2 = Format(CDate(X) + 29, "mm/dd/yyyy")
End Select
Criter = Format(X, "mm/dd/yyyy")
Range("H1").AutoFilter Field:=9, Criteria1:=">=" & Criter, Operator:=xlAnd _
, Criteria2:="<=" & Criter2
End Sub


Il reste à traiter le cas du mois de février (année bissextile ou pas)
 
Re : Macro de Filtrage avec plage de dates

Encore merci 🙂

je vais passer pour un boulet 🙂
Lorsque je choisis, par exemple 11 et 2007, j'obtiens le réglage de filtres custom suivant (voir image)

Problème de réglage de date ??? Ma version est anglophone et je ne peux pas modifier les données de base

BàT
 

Pièces jointes

  • untitled.GIF
    untitled.GIF
    8 KB · Affichages: 132
Re : Macro de Filtrage avec plage de dates

Re


Et en modifiant ainsi ces cinq lignes
(et en gardant le reste de la macro)


Criter2 = Format(CDate(X) + 30, "dd/mm/yyyy")
Case 4, 6, 9, 11
Criter2 = Format(CDate(X) + 29, "dd/mm/yyyy")
End Select
Criter = Format(X, "dd/mm/yyyy")
 
Re : Macro de Filtrage avec plage de dates

Re

A tester pour ce qui est du format date
Code:
Sub txxxxest()
Dim X As String
Dim ANNEE As String
Dim MOIS As String
Dim Criter As String
Dim Criter2 As String
ANNEE = InputBox("Quelle année?", "Choix de l'année")
MOIS = InputBox("Quel mois?", "Choix du mois")
'renvoie le premier jour du mois (à cause du 1)
X = "1/" & MOIS & "/" & ANNEE
MsgBox D_ENG(DateValue(X), "mm/dd/yyyy")
Select Case MOIS
Case 1, 3, 5, 7, 8, 10, 12
MsgBox D_ENG(DateValue(X), "mm/dd/yyyy")
Case 4, 6, 9, 11
MsgBox D_ENG(DateValue(X), "mm/dd/yyyy")
End Select
End Sub
Code:
Function D_ENG(D As Long, Optional formatZ As String) As String
'Auteur:  Laurent Longre
If formatZ = "" Then formatZ = "dd mmmm yyyy"
D_ENG = Evaluate("TEXT(" & D & ",""" & formatZ & """)")
End Function
Ensuite il faudra adapter à la macro de 15h00 en remplaçant

Criter2 = Format(CDate(X) + 29, "mm/dd/yyyy")
par
MsgBox D_ENG(DateValue(X), "mm/dd/yyyy")

etc...
 
Dernière édition:
Re : Macro de Filtrage avec plage de dates

Voilà, j'ai pas mal trituré la formule....
Je met une capture d'écran pour voir si tu y comprends mieux (NB : c'est une capture prise dans le fichier d'origine)

Pour arriver à ces changements, j'ai essayé de mettre + 60 (juste pour voir) ... le contenu du filtre semble cohérent mais pour les résultats... :S

(j'ai aussi adapté le numéro de colonne, mais bon, ça ne doit pas influer)
 

Pièces jointes

  • untitled.jpg
    untitled.jpg
    43.1 KB · Affichages: 33
  • untitled.jpg
    untitled.jpg
    43.1 KB · Affichages: 43
  • untitled.jpg
    untitled.jpg
    43.1 KB · Affichages: 39
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
29
Affichages
2 K
StanislasC
S
M
Réponses
10
Affichages
2 K
maxime45
M
J
Réponses
2
Affichages
2 K
J
Retour