Filtre avec critères variable : récupération de données de 23:50:00 à 00:50:00 ?

Signaler
Messages postés
6
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
29 juin 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour tous le monde,

Mon problème est le suivant : J'exécute un filtre pour récupérer des données d'un colonne sur un feuille. Le filtre traitent des HEURES, jusqu'ici aucun problème: Si l'on prend comme premier critère >= 22:30:00 et deuxième critère <=23:30:00 (les données de 22:30:00 jusqu’à 23:30:00 sont récupérées)
Seulement si l'on prend comme premier critère >=23:30:00 et deuxième critère >=00:10:00 (les données récupérées s’arrêtent à 23:59:59)

Voici mon programme pour plus de clarté :

Private Sub CommandButton3_Click()

Dim NbrCases
Dim lig_fin
Dim HeureDeFin As Date
Dim HeureDebut As Date
Dim Plage As Date
Dim i

Dim UN As Date
Dim TopDépart As Date
Dim HeureDebutMesure As Date
Dim HeureFinMesure As Date

Dim DateDébut As Date
Dim Dif1 As Date
Dim M As Date
Dim Uneseconde As Date    
For i = 1 To 8

    If i = 1 Then
        UN = "00:30:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR70 "
    ElseIf i = 2 Then
        UN = "00:45:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR50 "
    ElseIf i = 3 Then
        UN = "01:00:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR50 "
    ElseIf i = 4 Then
        UN = "01:15:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR50 "
    ElseIf i = 5 Then
        UN = "01:30:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR50 "
    ElseIf i = 6 Then
        UN = "02:00:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR50 "
    ElseIf i = 7 Then
        UN = "02:30:00"
        Sheets(6).Select
        Range("H7").FormulaR1C1 = "Test T20 HR50 "
    ElseIf i = 8 Then Exit Sub
  
  End If

    Sheets(1).Select
    TopDépart = Range("B2").FormulaR1C1            '  N°1    : ex 14:33:20
    HeureDebutMesure TopDépart + UN              '  N°1+ N°2    "HeureDebutTop" prend pour valeur TopDépart additionner à UN> 15:03:20
    Plage ComboBox2.Text                         '"Plage" prend pour valeur ComboBox2 (00:10:00 , 00:20:00, 00:30:00, ....> le temps de récupération)
    DateDébut = Range("A2").Value                  'Inutil !!
    M = "23:59:59"
    Uneseconde = "00:00:01"
    If HeureDebutMesure > "23:59:59" Then          'Pour mettre en forme HeureDebutMesure si elle est supérieur a 23:59:59
        Dif1 = HeureDebutMesure - M
        HeureDebutMesure = Dif1 - Uneseconde
        DateDébut = DateAdd("d", 1, DateDébut)
    End If
        
    HeureFinMesure = HeureDebutMesure + Plage

    If HeureFinMesure > "23:59:59" Then
        Dif1 = HeureFinMesure - M
        HeureFinMesure = Dif1 - Uneseconde
        Range("B1").Select
        Selection.AutoFilter Field:=2, Criteria1:=">=" & HeureDebutMesure, Operator:=xlAnd, _
        Criteria2:=">=" & HeureFinMesure
        Else: Range("B1").Select
        Selection.AutoFilter Field:=2, Criteria1:=">=" & HeureDebutMesure, Operator:=xlAnd, _
        Criteria2:="<=" & HeureFinMesure
        
    End If

Next i

End Sub
     


Merci d'avance si je me suis mal exprimer n'hésiter pas à faire des remarques

2 réponses

Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
148
Bonjour,

En clair, si :
5<x<10

ça passe, mais si :
5<x
et
10<x

critère >=23:30:00 et deuxième critère >=00:10:00

c'est pas bon ?

C'est logique non.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
Moi, "j'adore" tous ces select ... (bien sûr ...)
Mais "j'adore" encore plus une boucle de 1 à 8 que l'on quitte à 8 avec un exit sub (je me demande quelle est la logique d'un tel "mécanisme"

Je crois que j'ai besoin de repos

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ