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 :

Macro AutoFilter pour les dates >= J+7


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut Macro AutoFilter pour les dates >= J+7
    Bonjour à tous,

    Je travaille sur une macro, j'essaye de faire un filtre en ne séléctionnant que les lignes supérieures à une date donnée (J+7).
    La syntaxe semble correcte, cependant le filtre ne s'exécute pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=9, Criteria1:=">=" & Left(Now() + 7, 10), Operator:=xlOr, Criteria2:="="
    Si je clique sur "Personnaliser" après le passage de la macro, la sélection du critère est correcte, le problème est juste qu'elle ne s'exécute pas lors du déroulement, et m'affiche uniquement les champs vides.



    Merci d'avance pour votre aide.

    Cordialement,
    Nicolas

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 124
    Par défaut
    Salut
    J'ai deja vu passer pas mal de sujet traitant des filtres et des date, tu devrais faire une recherche sur le forum.
    La personne ici ne nous a pas fait profité d'une quelconque réponse donc du coup, impossible de savoir si celle qui lui a été apportée était efficace.
    En espérant que cela résolve ton problème
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    Bonjour Qwazerty,

    Merci pour ta réponse, malheureusement cela ne résoud pas mon problème, j'ai peur de ne pas être assez compétent pour adapter le code fournit Ormonth. En revanche, mon problème semble être le même que celui rencontré par l'auteur du sujet, donc à priori en rapport avec le format.

    Quelqu'un aurait peut être une solution ?

    Cordialement,
    Nicolas

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 124
    Par défaut
    Salut
    Essais comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub essaiFiltre()
    Selection.AutoFilter Field:=9, Criteria1:=">=" & Format(CStr(Date + 7), "mm/dd/yyyy")
    End Sub
    Si ça fonctionne et que tu veux plus d'infos dis le moi.

    Il faudrait voir un peu plus de ton code afin de supprimer le Selection et le remplacer par les cellules concernées
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Et en supprimant le critère 2 qui a un opérateur, mais pas d'argument?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=9, Criteria1:=">=" & Left(Now() + 7, 10)
    A mon avis, ce n'est pas un problème de date US.
    En prime, tu pourrais manipuler ta plage avec autre chose que l'objet Selection...

    Cordialement,

    PGZ

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 124
    Par défaut
    Salut pgz
    J'avais testé de cette manière, mais le filtrage n'est pas bon, toutes les date sont masquée, il semblerait qu'il faille systématiquement passer par un marquage US dans les filtres génère via vba.
    L'ayant mentionné au dessus, je ne peu que plussoyé la remarque sur le Selection
    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    Parfait, avec ton code cela fonctionne, merci beaucoup Qwazerty.

    Bonjour pgz,
    Pour répondre à ta suggestion le critère 2 me permet de sélectionner les lignes n'ayant pas de date.

    En revanche, à propos de l'objet Selection, vous voulez dire que je peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("A:I").AutoFilter Field:=9, Criteria1:=">=" & Format(CStr(Date + 7), "mm/dd/yyyy"), Operator:=xlOr, Criteria2:="="
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Columns("A:I").Select
        Selection.AutoFilter Field:=9, Criteria1:=">=" & Format(CStr(Date + 7), "mm/dd/yyyy"), Operator:=xlOr, Criteria2:="="
    c'est bien ça ?
    Quel est l'intêret, la requête s'exécute peut être plus vite c'est ça ?


    Merci encore pour votre temps.
    Nicolas

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Citation Envoyé par Nicolas Plan Voir le message
    c'est bien ça ?
    Quel est l'intêret, la requête s'exécute peut être plus vite c'est ça ?
    C'est bien cela. Le fait de faire .Select modifie effectivement la sélection. Si tu veux seulement filtrer, pourquoi sélectionner? En fait les 2 codes ne font pas la même chose, même si dans les 2 cas le résultat "principal" est obtenu.

    Tu vois?

    PGZ

  9. #9
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    Effectivement, pratique !

    Merci

    Bien cordialement,
    Nicolas

  10. #10
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    Si je peux me permettre de solliciter à nouveaux vos compétences, je souhaiterais ouvrir un message proposant 2 choix (boutons) à l'ouverture du fichier excel :

    1. Mise à jour des données
    2. Consultation

    J'ai beau rechercher ici et sur google, je ne tombe jamais sur ce que je recherche, faute de bons termes je pense.

    Je sais déjà crééer une macro en autoexécution, ce que je cherche c'est la syntaxe du style OpenMessage( "Mise à jour des données", "Consultation" )
    et à assigner au bouton MAJ ma macro développée précédemment.

    Cordialement,
    Nicolas Plan

  11. #11
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Tu pourrais utiliser un MsbBox, masi tu n'as pas le choix du texte des boutons. Par contre, tu peux utiliser une UserForm.

    PGZ

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    Bonjour,

    Je vais l'incrusté dans ce sujet je suis désolé
    Au fait je doit faire la même chose qu'ici sauf que j'ai une column qui contien des valeur en texte il y en a qui correspondent à des Date et d'autres non.
    Ce que je voulais faire c'est en gros je veux filter les lignes qui ont une date qui remonte à plus de 2 ans mon soucis c'est que la colonne contient des valeur hétérogène

    voilà ce que j'ai pu faire pour l'instant merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Activate()
     
    Range("B7").AutoFilter Field:=2, Criteria1:=">=" & Format(DateAdd("yyyy", -2, Now), "dd/mm/yyyy")
     
     
    End Sub

  13. #13
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Par défaut
    Pas certain d'avoir tout compris, mais à priori la solution serait de mettre toute ta colonne en format date avant de faire ton filtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Columns("B:B").NumberFormat = "dd/mm/yyyy"

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2006, 08h13
  2. Besoin d'aide pour les dates
    Par Aurore_atmo dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/07/2006, 15h37
  3. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 17h26
  4. Filtre pour les dates
    Par aliwassem dans le forum Bases de données
    Réponses: 11
    Dernier message: 21/02/2006, 11h48
  5. implanter des calendriers pour les dates
    Par student007 dans le forum Access
    Réponses: 7
    Dernier message: 24/10/2005, 19h24

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