MAJ d'un filtre sur des dates en VBA

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

Staple1600

XLDnaute Barbatruc
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.
 

SkinDash

XLDnaute Nouveau
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.
 

SkinDash

XLDnaute Nouveau
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

Staple1600

XLDnaute Barbatruc
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:

SkinDash

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
2
Affichages
119

Statistiques des forums

Discussions
312 293
Messages
2 086 860
Membres
103 402
dernier inscrit
regishar