VBA - Effectuer un Filtre automatique date - date du jour + 60js

LORDDD

XLDnaute Occasionnel
Bonsoir à vous tous,

Je souhaiterez effectue un filtre automatique sur ma feuille avec les critaires suivants :

Mon tableau comporte 1 ligne par jour du 1er janvier au 31 décembre "1 classeur par année"

Début du filtre : maintenant
Fin du filtre : 60 jours plus tard

Controle :
1 :si date de début du classeur est supérieure à la du jour : filtrer du 1er janvier au 1er janvier +60
2 :si date du jour + 60 est supérieur à la date de fin du classeur ; filtrer de maintenant au 31/12

Je vous joint une feuille pour mieux comprendre.

Merci à vous d'avance :
 

Pièces jointes

  • a filter.xls
    196.5 KB · Affichages: 105

LORDDD

XLDnaute Occasionnel
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Bonsoir à vous tous,

Voici mon code, avec pour mes besoins des controles suivant mes conditions :

Tous fonctionne sauf le filtrage :
Pour trouver le code d'utilisation de filtrage, j'ai utilisé enregistrer une Macro, peut etre mon erreur vient ell de la...
Il filtre tout, il semble ne pas tenir compte de mes criteres

Code:
Sub Filtrer()
Dim Maintenant As Date
Dim Datedebutfiltre As Date
Dim Datefinfiltre As Date
Dim Datedebut As Date
Dim Datefin As Date
Datedebut = Cells(2, 3)
Datefin = Cells(3, 3)
Datefinfiltre = Datefin
'date du jour
Maintenant = Format(Now, "dd/mm/yyyy")
'Controle que la date du jour soit inferieure à la date debut
If Maintenant >= Datedebut Then
datefiltredebut = Maintenant
Else
datefiltredebut = Datedebut
End If
'Calcul date fin du filtre = debutfiltre + 60 jours
Datefinfiltre = datefiltredebut + 60

'Controle que la date du jour + 60 jours ne depasse pas la fin des date du tableau
If Datefin <= Datefinfiltre Then
Datefinfiltre = Datefin
End If
'effectuer le filtre
ActiveSheet.Range("$a$6:$s$372").AutoFilter field:=3, Criteria1:=">=datedebutfiltre", Operator:=xlAnd, Criteria2:="<=datefinfiltre"
End Sub

Merci à celui qui y jette un oeil juste avant Noël

Bien a vous
 

Modeste

XLDnaute Barbatruc
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Bonsoir LORDDD,

J'avais vu ton message ce matin (comme un certain nombre d'autres, visiblement)
En ce qui me concerne, un filtre automatique avec en en-tête, des titres "vides" je ne suis pas fan (en fait je pense qu'Excel ne l'est pas trop non plus :rolleyes:)

Te "satisferais-tu" d'une version qui masquerait les lignes sur "commande" et réafficherait tout, ensuite, sur demande aussi (avec des boutons dans la feuille)?

Edit: Salut chris :)
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Bonjour
Coucou Mosdeste

Pan fan non plus mais ce qui coinçait c'est le format des dates
Code:
Sub Filtrer()
Dim Datedebutfiltre As String
Dim Datefinfiltre As String
Dim Datedebut As Date
Dim Datefin As Date
Dim plage As Range

    With Worksheets("Hotel 1")
    Set plage = .Range("C7:C" & .Cells(60000, 3).End(xlUp).Row)
        If WorksheetFunction.Min(plage) > Date Then
           Datedebut = DateSerial(Year(Date) + 1, 1, 1)
           Datefin = Datedebut + 60
        ElseIf WorksheetFunction.Max(plage) < Date + 60 Then
            Datedebut = Date
            Datefin = DateSerial(Year(Date), 12, 31)
        Else
            Datedebut = Date
            Datefin = Datedebut + 60
        End If

'effectuer le filtre
        Set plage = .Range("A6:S" & .Cells(60000, 3).End(xlUp).Row)
        
        Datedebutfiltre = ">=" & Format(Datedebut, "mm/dd/yyyy")
        Datefinfiltre = "<=" & Format(Datefin, "mm/dd/yyyy")
        plage.AutoFilter Field:=3, Criteria1:=Datedebutfiltre, Operator:=xlAnd, Criteria2:=Datefinfiltre

    End With
End Sub
 

LORDDD

XLDnaute Occasionnel
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Bonjour Chris, et Modeste,

Avec quelques jour de retard, joyeux Noel à vous tous.

Merci de vos réponses je rentre au bureau ce matin, et decouvre vos messages.

Je vais regarder ton code Chris, par contre concernant le filtre avec l entete vide j'avais lu ca sur un post, mais effectivement sur mes documents que j utilise en manuel mon filte est tjs positionné sur la ligne de titre.

Je regarde tout cela, pour comprendre ton code et voir ce que j avais loupé dans le mien. Si j ai une question je me rapproche de toi.

Bonne fêstes a vous tous



J
 

LORDDD

XLDnaute Occasionnel
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Re Chris et les autres,

Un peu débordé aujourd'hui au bureau, mais j'ai pris 5 minutes pour comprendre ton code :

Code:
If WorksheetFunction.Min(plage) > Date Then      'le terme Date remplace maintenant()
           Datedebut = DateSerial(Year(Date) + 1, 1, 1)
           'transformation de la date si la date du jour est sup à la date minimum de la plage alors année =date jour +1, janvier , le 1er)
           Datefin = Datedebut + 60

Juste ci tu peux me confirmer mes annotations, pour que je puisse bien assimiler ce que tu as fait, comme ca je met dans mon pense bete pour mon prochain code...

Et j ai compris l'importance de bien expliquer le format de la date pour effectuer le filtre. Ce qui n'etait pas le cas dans mon code a moi.

Je vais de ce pas le mettre en place sur mon tableau final, et virer la ligne vide de filtrage, qui comme tu me le confirmes sert a rien.

Grand merci pour ton aide.
Et merci de ta proposition modeste.

Bonne soirée
:rolleyes:
 

chris

XLDnaute Barbatruc
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Bonjour

Oui c'est cela : j'aurais juste mis en commentaire "1er janvier de l'année qui suit la date courante" mais si ya formulation te parle davantage, pas de souci.

"Maintenant" ou "Now" contient l'heure et pas seulement la date ce qui peut avoir des effets de bord. Date() (dont VBA vire les parenthèses) correspond à la fonction AUJOURDHUI()
 

LORDDD

XLDnaute Occasionnel
Re : VBA - Effectuer un Filtre automatique date - date du jour + 60js

Encore milles merci pour tous ces truc et astuces
Le fait de ne pas être qu attentif, et grâce a vitre aide les expert,on avance plus vite.
Joyeuses fêtes de fin d année a vous tous
 

Discussions similaires

Statistiques des forums

Discussions
312 333
Messages
2 087 378
Membres
103 529
dernier inscrit
gonzi