MAJ d'un filtre sur des dates en VBA

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 !

SkinDash

XLDnaute Nouveau
1.jpgBonjour,

J'ai un souci sur une macro ou j'ai un filtre qui se fait sur des dates (je vous mets ma ligne de code):


Code:
Worksheets(1).Rows("1:1").AutoFilter Field:=Rows(1).Find("Annee", lookat:=xlWhole).Column, Criteria1:=">=" & CDate(Format(g, "mm/dd/yyyy")), Operator:=xlAnd, Criteria2:="<=" & CDate(Format(h, "mm/dd/yyyy"))

Ici "g" et "h" sont des innput box ou l'utilisateur saisi une date au format jj/mm/aaaa.

Aucun souci pour la prise en compte du filtre, quand je clic sur ma colonne "Annee" le filtre est bien pris en compte (Capture d'écran, dans l'exemple filtre du 01/01/2014 - 31/12/2014), cependant je suis obligé de cliquer sur "OK" pour que le filtre se mette à jour.

Je ne peux pas poster le fichier qui fait plus de 60MO.

Est-ce que quelqu'un à déjà eu ce souci d'un filtre qui ne se met pas à jour ?

merci
 

Pièces jointes

  • 1.jpg
    1.jpg
    41.7 KB · Affichages: 69
  • 1.jpg
    1.jpg
    41.7 KB · Affichages: 61
Re : MAJ d'un filtre sur des dates en VBA

Bonsoir à tous

SkinDash
Sur mon fichier de test ici, cela fonctionne
Code:
Sub TestOK()
Dim Annee$, col&
Annee = "2015"
col = Rows("1:1").Find(Annee, After:=Cells(1, 1), LookAt:=xlWhole, SearchOrder:=xlByColumns).Column

g = InputBox("date début?", "Titre", Date)
h = InputBox("date fin?", "Titre", Date + 30)

[A1].CurrentRegion.AutoFilter col, ">=" & CDate(Format(g, "mm/dd/yyyy")), 1, "<=" & CDate(Format(h, "mm/dd/yyyy"))
End Sub
Sur le tien, je te laisse faire les essais et ajustements nécessaires.
 
Re : MAJ d'un filtre sur des dates en VBA

Sinon toujours le même problème 🙁 même avec ce code, je suis obligé de mettre un point d’arrêt dans la macro sur la ligne de filtre et d'aller valider le filtre à la main comme montré sur la capture d'écran. Il se met bien sur "entre" avec les deux dates saisies dans les input box, mais il ne filtre pas si je ne valide pas à la main.
 
Re : MAJ d'un filtre sur des dates en VBA

Après plusieurs test, voici ou j'en suis: (J'ai mis en pièce jointe fichier exemple dans mon message suivant)

Capture d'écran 1: Ce que j'ai après avoir lancé le filtre.

Capture d'écran 2: Alors que le filtre est bien pris en compte.

Capture d'écran 3: Alors que le filtre est bien pris en compte.

Capture d'écran 4: Voila ce que j'ai (le résultat attendu normalement) après avoir cliqué sur le "OK" de la capture d'écran 3.

Je bloque, je comprends pas pourquoi le filtre ne fonctionne pas du 1er coup.
 

Pièces jointes

  • 4.jpg
    4.jpg
    64.9 KB · Affichages: 44
  • 3.jpg
    3.jpg
    67.6 KB · Affichages: 51
  • 2.jpg
    2.jpg
    69.5 KB · Affichages: 48
  • 1.jpg
    1.jpg
    60.9 KB · Affichages: 41
  • 4.jpg
    4.jpg
    64.9 KB · Affichages: 43
  • 3.jpg
    3.jpg
    67.6 KB · Affichages: 49
  • 2.jpg
    2.jpg
    69.5 KB · Affichages: 48
  • 1.jpg
    1.jpg
    60.9 KB · Affichages: 46
  • 4.jpg
    4.jpg
    64.9 KB · Affichages: 42
  • 3.jpg
    3.jpg
    67.6 KB · Affichages: 39
  • 2.jpg
    2.jpg
    69.5 KB · Affichages: 40
  • 1.jpg
    1.jpg
    60.9 KB · Affichages: 45
Re : MAJ d'un filtre sur des dates en VBA

Bonsoir à tous

SkinDash
Avec cette modif, cela fonctionne sur ton fichier joint
Code:
Private Sub CommandButton1_Click()
Dim col&
col = Rows("1:1").Find("Année", After:=Cells(1, 1), LookAt:=xlWhole, SearchOrder:=xlByColumns).Column
g = CDate(InputBox("date début?", "Titre", Date))
h = CDate(InputBox("date fin?", "Titre", Date + 30))
[A1].CurrentRegion.AutoFilter col, ">=" & CLng(g), 1, "<=" & CLng(h)
End Sub
NB: Il faut qu'en C1 on ait bien : Année

Petite question, à quoi correspond le "1" au milieu de cette ligne:
Le 1 correspond à Operator:=xlAnd
(c'est juste une écriture simplifiée)
 
Dernière édition:
Re : MAJ d'un filtre sur des dates en VBA

Bonsoir à tous

SkinDash
Avec cette modif, cela fonctionne sur ton fichier joint
Code:
Private Sub CommandButton1_Click()
Dim col&
col = Rows("1:1").Find("Année", After:=Cells(1, 1), LookAt:=xlWhole, SearchOrder:=xlByColumns).Column
g = CDate(InputBox("date début?", "Titre", Date))
h = CDate(InputBox("date fin?", "Titre", Date + 30))
[A1].CurrentRegion.AutoFilter col, ">=" & CLng(g), 1, "<=" & CLng(h)
End Sub
NB: Il faut qu'en C1 on ait bien : Année


Le 1 correspond à Operator:=xlAnd
(c'est juste une écriture simplifiée)


Au top !

Merci beaucoup pour ton aide 🙂

Bonne soirée
 
- 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

Discussions similaires

Réponses
8
Affichages
449
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
392
Réponses
10
Affichages
699
Retour