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 :

Sur AutoFilter, le filtre < date ne fonctionne pas (tablerau vide).


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Sur AutoFilter, le filtre < date ne fonctionne pas (tablerau vide).
    Bonjour à tous,

    J'ai lu cette discussion et j'ai moi aussi le même problème :

    Je déclare une variable jourCtrl au format date :

    DIM jourCtrl as date (exemple aujourd'hui "01/11/2019")

    Puis dans le programme, j'ai un tableau tout simple à 7 colonnes. Les deux colonnes qui portent des dates sont F & G.

    J'utilise donc le code "standard" suivant (ce code est exactement le même que celui généré avec le générateur de macro...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("A1:G1").select
    ActiveSheet.Range("A1:G1000").AutoFilter Field:=6, Critérial1:= _
    '             "<=" & jourCtrl, Operator:=xlAnd
    ActiveSheet.Range("A1:G1000").AutoFilter Field:=7, Criterial2:= _
    '             ">" & jourCtrl, Operato:=xlAnd
    En exécutant ce bout de code, RIEN A FAIRE, le code renvois un tableau vide ! (il y a toutefois bien des dates qui répondent aux deux critères…).

    Je suis ravi que la solution du "STOP" satisfasse 3DPas mais pour moi elle ne fonctionne pas - LOL ! J'ai un grand nombre de contrôles du même type à faire et je ne peux interrompre à chaque fois la macro avec un STOP...

    De plus, je suis persuadé qu'il existe une astuce beaucoup plus simple que le code transmis par SOGEDIC avec LONG et DOUBLE.

    Bref, je suis bien ennuyé et j'aimerai savoir où je fais une erreur dans mon code ???

    Merci à vous et à vous lire...

    Bien amicalement,

    Holevilain.

  2. #2
    Membre à l'essai Avatar de 3DPas
    Homme Profil pro
    Concepteur 3D
    Inscrit en
    Septembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Concepteur 3D
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2018
    Messages : 6
    Points : 10
    Points
    10
    Par défaut La solution en 4 étapes
    Bonjour,

    La solution n'est pas le "stop", si vous voulez pouvoir filtrer des dates dans un tableau vous êtes obligé de mettre vos colonnes en formatage standard "General".

    1. Passage de la colonne en standard.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Columns(Tbl.ListColumns("DateEntree").Index).NumberFormat = "General"
    2. Filtrer en prenant soin de convertir votre date en double:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim DateDeb As Double
     
    DateDeb = CDbl(CDate(strDateDebut)) 'Actuellement stocké sous le format jj.mm.yyyy hh:mm:ss <--- strDateDebut est la date à filtrer
     
    'filtrage sur la colonne "DateEntree" puis ensuite la colonne "DateSortie"
    .AutoFilter Tbl.ListColumns("DateEntree").Index, ">=" & DateDeb
    3. Faites ce que vous voulez avec les données filtrées.

    4. Effacer le filtre et remettre le formatage de la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'suppression du filtrage
    .AutoFilter
     
    'Remettre le formatage de la colonne comme avant :
    .Columns(Tbl.ListColumns("DateSortie").Index).NumberFormat = "dd.mm.yyyy hh:mm:ss"
    Avant, j'avais moi aussi un résultat de filtrage vide, maintenant ça fonctionne. Je vous prie d'essayé la solution de Theze car elle fonctionne super bien.

    Suivez la démarche de Theze dans l'ordre car ça doit fonctionner...

    Merci de nous tenir informé quand à la résolution de votre problème afin de pouvoir mieux vous aider.

    Cordialement,

    3DPas

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour à tous,

    Je m'en veux d'avoir douté car vous aviez raison !

    Pour filtrer un tableau sur des dates, il faut effectivement que les colonnes soit au format GENERAL et que la variable date soit au format DOUBLE (j'imaginais que l'on pouvais faire plus simple, mais c'est bien le protocole...). Une fois de plus, un grand merci à 3DPass, Theze et tous les autres. Vos réponses sont toujours très réactives, précises, concises et JUSTE !

    A bientôt car "je vais revenir" (comme disais un certain acteur) : j'ai besoin d'un autre coup de pouce sur un tableau croisé dynamique...

    Bien à vous.

    Holevilain.

  4. #4
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Chez moi tout fonctionne sans reformater les colonnes

    Encore merci pour m'avoir permis de pouvoir filtrer via les dates avec la variante Double et CDbl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub Planning_Pose_Filtrer_En_Cours()
    Dim Date_Cherchee As Double
    Dim Tableau As Range
    Dim f As Variant
    Application.ScreenUpdating = False
        Set f = Sheets("Data_Planning")
        Set Tableau = f.Range("TS_Data_Planning")
            Call Liberer_filtre_TS(Sheets("Data_Planning").Range("TS_Data_Planning"))
            Date_Cherchee = CDbl(CDate((Date - Weekday(Date, vbMonday) + 1) - 7))
            Call Filtrer_TS(Tableau, "Date_Début", ">=" & Date_Cherchee)
            f.Range("Cell_Date_Planning") = Date_Cherchee
            ActiveWindow.ScrollRow = 10  'Jusqu'à la ligne
            ActiveWindow.ScrollColumn = 10  'Jusqu'à la colonne
    Application.ScreenUpdating = True
    End Sub

    Citation Envoyé par 3DPas Voir le message
    Bonjour,

    La solution n'est pas le "stop", si vous voulez pouvoir filtrer des dates dans un tableau vous êtes obligé de mettre vos colonnes en formatage standard "General".

    1. Passage de la colonne en standard.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Columns(Tbl.ListColumns("DateEntree").Index).NumberFormat = "General"
    2. Filtrer en prenant soin de convertir votre date en double:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim DateDeb As Double
     
    DateDeb = CDbl(CDate(strDateDebut)) 'Actuellement stocké sous le format jj.mm.yyyy hh:mm:ss <--- strDateDebut est la date à filtrer
     
    'filtrage sur la colonne "DateEntree" puis ensuite la colonne "DateSortie"
    .AutoFilter Tbl.ListColumns("DateEntree").Index, ">=" & DateDeb
    3. Faites ce que vous voulez avec les données filtrées.

    4. Effacer le filtre et remettre le formatage de la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'suppression du filtrage
    .AutoFilter
     
    'Remettre le formatage de la colonne comme avant :
    .Columns(Tbl.ListColumns("DateSortie").Index).NumberFormat = "dd.mm.yyyy hh:mm:ss"
    Avant, j'avais moi aussi un résultat de filtrage vide, maintenant ça fonctionne. Je vous prie d'essayé la solution de Theze car elle fonctionne super bien.

    Suivez la démarche de Theze dans l'ordre car ça doit fonctionner...

    Merci de nous tenir informé quand à la résolution de votre problème afin de pouvoir mieux vous aider.

    Cordialement,

    3DPas

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

Discussions similaires

  1. [2014] Filtre Max sur date ne fonctionne pas.
    Par africanism dans le forum Développement
    Réponses: 3
    Dernier message: 19/07/2018, 13h29
  2. comparaison sur date ne fonctionne pas
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/11/2012, 09h30
  3. [XL-2003] Filtre Elaboré : Sélection >= sur 1 date ne fonctionne pas
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/02/2011, 13h45
  4. Req SQL sur champ texte = date ne fonctionne pas acd "/"
    Par chapeau_melon dans le forum WinDev
    Réponses: 2
    Dernier message: 07/03/2008, 09h24
  5. Réponses: 9
    Dernier message: 18/02/2008, 11h00

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