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 :

VBA - Filtrer sur date de plus de deux mois


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut VBA - Filtrer sur date de plus de deux mois
    Bonjour à tous, je sèche sur l'écriture de mon VBA... J'aimerai à partir du code, filtrer les dates de + de deux mois par rapport à la date du jour.

    Je m'explique, j'ai une extraction de commandes avec donc des dates. Ces dates sont dans la colonne O. Je fais une extraction tous les jours. Je souhaite donc que dans ma macro, un filtre s'effectue sur la colonne O, pour ne garder que les lignes où la date est au moins vieille de + de deux mois par rapport à ma date du jour.
    Je souhaite absolument le faire par VBA.

    Pouvez-vous m'aider?
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la fonction date renvoie la date du jour
    la fonction dateadd() permet d'effectuer des additions/soustractions de dates

    Il te suffit donc de retrancher deux mois à la fonction date, pour obtenir ta borne, à appliquer en Criteria1 de ton filtre automatique : utilise l'enregistreur de macro en réalisant manuellement ton filtre automatique, tu auras la syntaxe à laquelle ajouter ta borne de date

    petit cadeau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub toto()
        MsgBox DateAdd("m", -2, Date)
    End Sub
    EDIT : puisque tes commandes sont issues d'une extraction, il serait encore plus intéressant de directement indiquer ce critère dans ta requête ! On traite un problème le plus en amont possible

  3. #3
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut
    Merci pour ta réponse !! Je vais la tester !!
    Et non je dois extraire toutes les commandes !! Je crée ensuite des feuilles suivant des critères, comme celui-ci !! Mais je dois avoir aussi toutes les autres !!

    Merci à toi

  4. #4
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut
    J'ai ainsi renseigné le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$A$1:$S$3814").AutoFilter Field:=15, Criteria1:="<=" & dater, Operator:=xlAnd
    Quand je lance ma macro, je n'ai aucune ligne qui reste à l'affiche sur mon fichier Excel. Or, quand je vais vérifier la date dans mon filtre personnalité sur la cellule O1, il suffit que je fasse OK direct, pour que finalement ça marche. En gros ça me met bien le bon filtre sur la colonne, mais il faut que j'aille dans le filtre et que je le valide à la main pour qu'il m'affiche les données.

    Sauriez-vous me dire pourquoi et comment contourner ça?

    Merci

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    quand tu utilises une date dans un Autofilter, il faut passer par sa valeur telle qu'elle est stockée par excel, c'est à dire son Numéro de Série

    on l'obtient simplement en convertissant la date au format Long, via la fonction de conversion Clng()

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub toto()
        With ActiveSheet.Range("A1").CurrentRegion
            .AutoFilter
            .AutoFilter 15, "<=" & CLng(DateAdd("m", -2, Date))
        End With
    End Sub

    Voici un excellent tutoriel pour bien comprendre le fonctionnement des Dates entre Excel et VBA
    http://didier-gonard.developpez.com/...-excel-et-vba/

  6. #6
    Membre confirmé
    Femme Profil pro
    Ingénieur supply chain
    Inscrit en
    Mai 2015
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur supply chain
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 125
    Par défaut
    Super ça fonctionne !

    Merci de votre aide

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

Discussions similaires

  1. [MySQL-5.6] Selection d' items sur date la plus recente
    Par ysarius dans le forum Requêtes
    Réponses: 8
    Dernier message: 22/11/2015, 01h19
  2. [BO Info] Filtrer la date la plus récente d'un objet de la requête BI 4
    Par Bubul756 dans le forum SAP Business Objects
    Réponses: 1
    Dernier message: 13/04/2015, 10h45
  3. [AC-2007] Recherche enregistrement sur date la plus récente
    Par pilou27 dans le forum IHM
    Réponses: 10
    Dernier message: 24/03/2014, 08h39
  4. Filtrer sur date
    Par pierrot67 dans le forum Débuter
    Réponses: 3
    Dernier message: 17/10/2007, 23h02
  5. VBA : calcul sur date
    Par stefane26 dans le forum Excel
    Réponses: 2
    Dernier message: 29/06/2007, 11h23

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