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 :

Filtrer "Heure inférieure à" dans un tableau [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut Filtrer "Heure inférieure à" dans un tableau
    Bonjour,
    J'ai un tableau Excel avec une colonne date et une colonne heure.
    Dans ma macro, ou même avec le filtre élaboré, je n'arrive pas a filtrer les heures supérieur à 14:00 par exemple.
    quand je les sélectionne dans le filtre les heures une par une ça fonctionne par contre avec un filtre automatique personnalisé ça ne donne aucune ligne en résultat.
    dans la macro, c'est pareil, j'ai tenté le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Crit = heure_fin
    LeCrit = CDbl(TimeValue(Crit))
    ActiveSheet.Range("$B:$H").AutoFilter Field:=2, Criteria1:= _
           ">=" & LeCrit, Operator:=xlAnd
    avec heure_fin=14:00:00
    sachant que dans la colonne 2 j'ai bien mes heures que je visualise dans le tableur présenté sous la forme hh:mm:ss
    si quelqu'un a la solution je suis preneur.
    MERCI

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    Crit = "10:54:21"
    ActiveSheet.Range("A:H").AutoFilter Field:=2, Criteria1:="<" & CLng(LeCrit)
    End Sub
    edit autant pour moi clng fonctionne avec les dates

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    Crit = TimeValue("10:54:21")
    ActiveSheet.Range("A:H").AutoFilter Field:=2, Criteria1:="<" & CDbl(Crit)
    End Sub
    et M... nuit de garde ca m'a pas fait du bien
    bon allez on recomence

    donc on filtre les heures supérieurs a 14:00:00 c'est bien ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
     Crit = TimeValue("14:00:00")
     ActiveSheet.Range("A:H").AutoFilter Field:=2, Criteria1:=">" & CDbl(Crit)
     End Sub
    puré c'est laborieux ce matin

    et oui ce qui m'a induit en erreur
    le tritre du post
    FILTRER "HEURE INFERIEUR A" DANS UN TABLEAU
    et après dans la question on a
    je n'arrive pas a filtrer les heures supérieur à 14:00 par exemple.
    je suis rassuré je suis pas tout seul dans le brouillard
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    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,

    il s'agit aussi de savoir le .Value exact de la cellule : Est-ce une date complète ou juste les heures.

    Car tu peux très bien avoir formaté ta cellule (hh:mm:ss) de sorte que le .text t'affiches uniquement l'heure.

    Et suivant le cas, on ne procède pas du tout de la même manière sur le criteria

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Peut-etre comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$B:$H").AutoFilter Field:=2, Criteria1:="<=" & CDate(fin), Criteria2:=">=" & CDate(fin)

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour docmarti

    heu... encore une fois je comprends pas tes critères tout du moins leur utilité
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Oups. Je pensais que CEA FRANCE recherchait l'egalite. Je viens de voir qu'il recherche Plus grand ou egal.
    Donc ce serait plutot la syntaxe suivante.


    Je mets CDate plutot que CDbl car les valeurs dans le range sont de type Date.

    Ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$B:$H").AutoFilter Field:=2, Criteria1:=">=" & Format(CDate(Crit), "h:mm:ss")
    Il faudrait que CEA FRANCE envoie un fichier .xlsx avec quelques donnees pour pouvoir etre precis.

  7. #7
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    mauvaise nouvelle, ça ne fonctionne pas (Erreur d'execution 13 : Incompatibilité de type... )
    pour détailler le problème, j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Crit = TimeValue(heure_fin)
        LeCrit = CDbl(Crit)
    quand je pointe sur Crit en execution pas à pas j'ai Crit="14:00:00" et ça plante sur la ligne suivante...
    j'avais déclaré les variables :
    Dim Crit As String
    Dim LeCrit As Double
    est ce ça qui plante ?

    ps : ma zone ne contient bien que l'heure. il n'y a pas la date (même en changeant le format d'affichage)

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour docmarti

    heu... encore une fois je comprends pas tes critères tout du moins leur utilité
    Je me sers des 2 criteres avec les operateurs ">=" et "<=" pour remplacer l'operateur de comparaison "=" qui ne fonctionne pas pour trouver une date exacte.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/07/2014, 10h15
  2. [LV 8.6] stocker l'heure dans un tableau
    Par Quent' dans le forum LabVIEW
    Réponses: 3
    Dernier message: 27/07/2010, 12h08
  3. Réponses: 4
    Dernier message: 20/07/2010, 15h35
  4. Filtrer des indicateurs dans tableau croisé
    Par mvarnoux dans le forum Deski
    Réponses: 7
    Dernier message: 01/07/2010, 15h37
  5. [AC-2003] Filtrer les enregistrements dans un tableau
    Par chougadosu dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/06/2010, 13h15

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