IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-03] Comment filtrer de date à date en vba?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut [E-03] Comment filtrer de date à date en vba?
    Bonjour, je voudrais filtrer les données de ma feuille en filtrant sur la colonne A de date à date.

    En fait j'ai 12 boutons correspondant chacun à un mois de l'année, donc sur le bouton janvier, il faut que sa filtre du 01/01/2009 au 31/01/2009, pour février, du 01/02/2009 au 28/02/2009...

    Avec l'assistant, j'obtient le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Selection.AutoFilter Field:=1, Criteria1:=">=01/01/2009", Operator:=xlAnd _
            , Criteria2:="<01/02/2009"
    Quand j'intègre sa dans mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       ActiveSheet.Range("$A$5:$K$55555").AutoFilter Field:=1, Criteria1:=">=01/01/2009", Operator:=xlAnd _
            , Criteria2:="<01/02/2009"
    Sa ne me filtre rien, comment cela se fait-il?

    Ou comment je peux dire du 1er Janvier 2009 au 31 Janvier 2009?

    Merci

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    essaye de filtrer en comparant a DateSerial(année,mois,jour)
    Je n'ai jamais essayé je ne sais pas si ca marchera

  3. #3
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Ba en fait avant je passé par de l'exadécimal ou je ne sais pas trop quoi...

    Je définissait mes variables comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dateDébut As Long, dateFin As Long
    Ensuite je mettais par exemple pour le mois de Janvier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dateDébut = 39814
    dateFin = 39844
    Sa correspondait aux dates mais je ne sais plus comment j'ai trouvé sa...

    Et ensuite je faisais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveSheet.Range("$A$5:$K$55555").AutoFilter _
            Field:=1, Criteria1:=">= " & dateDébut, _
            Operator:=xlAnd, Criteria2:="<=" & dateFin
    J'étais persuadé que sa marché mais apparament sa na filtre pas comme je le souhaite, sa fonctionne pour le mois de janvier, mais pour les autres je ne sais pas sa ne marche pas je crois... enfin je n'ai pas la bonne plage de date filtrée....

    Ce que je voudrais faire c'est pouvoir enregistrer mes variables en tant que date, et mettre directement dedans quelque chose du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim dateDébut As Date, dateFin As Date
     
    dateDébut=01/01/2009
    dateFin =31/01/2009
     
     
       ActiveSheet.Range("$A$5:$K$55555").AutoFilter _
            Field:=1, Criteria1:=">= " & dateDébut, _
            Operator:=xlAnd, Criteria2:="<=" & dateFin
    Mais sa ne marche pas

  4. #4
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut
    Bon j'ai procédé autrement mais sa ne fonctionne pas non plus...

    Déclaration des variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dateDébut As Date, dateFin As Date
    Définition des variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dateDébut = DateSerial(LAnnée, LeMois, 1)
    dateFin = DateSerial(LAnnée, LeMois, DaysInMonth(LeMois, LAnnee))
    Avec DayInMonth comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As Integer
     
        DaysInMonth = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(nYear, nMonth, 1))))
     
    End Function
    Après au niveau de mon filtre, je l'adapte comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Historique des pannes").Range("A3:N3").AutoFilter
    Sheets("Historique des pannes").Range("A3:N3").AutoFilter Field:=1, Criteria1:=">=" & Format(dateDébut, dd - mmmm - yy), Operator:=xlAnd, Criteria2:="<" & Format(dateFin, "dd-mmmm-yyyy")
    Sachant que le format des dates à filtré est le suivant: 14-mars-01 (voir pièce jointe).

    Qu'est ce qu'il faut encore que j'adapte pour que cela fonctionne?
    Images attachées Images attachées  

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bojour,
    je viens de tester avec excel 2007 en mettant ça tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Selection.AutoFilter
        ActiveSheet.Range("$A$1:$A$7").AutoFilter Field:=1, Operator:= _
            xlFilterValues, Criteria2:=Array(1, "2/2/2009")
    tout le mois de février apparait

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. filtrer avec une date variable en vba excel
    Par jords dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/06/2012, 23h35
  2. [PowerShell] Comment filtrer des fichiers sur leur date de création
    Par Gusss dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 04/01/2010, 10h39
  3. Critère de date à date SQL et VBA
    Par BRUNO71 dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/09/2008, 20h57
  4. comment Filtrer sur la date
    Par pierrot67 dans le forum Bases de données
    Réponses: 11
    Dernier message: 27/04/2007, 12h20
  5. Réponses: 3
    Dernier message: 12/07/2006, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo