Bonjour,


Je rencontre un soucis lors de l'utilisation d'une macro VBA.

Je réalise un filtre avancé qui doit notamment filtrer en fonction des dates.

Je souhaite pouvoir obtenir la ligne correspondant à la date PRECISE (avec l'heure) voulue par exemple "21/12/18 00:01" ou toute les lignes comprises entre 2 dates " >21/12/18 00:01" et " <15/01/18 15:03". (ou juste toutes les lignes "> 25/03/18 18:06")

Le problème que je rencontre est que le filtrage "plus grand et/ou plus petit que" ne fonctionne qu'avec l'heure "00:00". J'aimerai pouvoir être plus précis que cela.


Voici le code de ma macro :

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub Filter5()
'
' Filter5 Macro
 
 
' Mémorise le contenu de F5 et G5
    dat1 = [F5].Value: dat2 = [G5].Value
' Si les deux cellules ne sont pas vide => on convertit dat1 en nombre
    If Len(dat1) > 0 And Len(dat2) > 0 Then
' On mémorise temporairement les valeurs
    [F5].Value = Left(dat1, 1) & Round(CDbl(CDate(Mid(dat1, 2))), 6)
    [G5].Value = Left(dat2, 1) & Round(CDbl(CDate(Mid(dat2, 2))), 6)
 
    End If
' Si F5 contient une date ET que G5 n'en contient pas ET que le premier caractère n'est pas un nombre
 
    If Len(dat1) > 0 And IsEmpty(dat2) And (IsNumeric(Left(dat1, 1)) = False) Then
 
    [F5].Value = Left(dat1, 1) & Round(CDbl(CDate(Mid(dat1, 2))), 6)
 
    End If
 
    If Len(dat2) > 0 And IsEmpty(dat1) And (IsNumeric(Left(dat2, 1)) = False) Then
 
    [G5].Value = Left(dat2, 1) & Round(CDbl(CDate(Mid(dat2, 2))), 6)
 
    End If
' On filtre avec les valeurs numériques des dates
 
    Sheets("FMEA").Range("B17:X8000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Sheets("FMEA").Range("B4:X5"), Unique:=False
    Range("D11").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(3,R[7]C[-1]:R[7000]C[-1])"
    Range("D12").Select
' On remet l'ancien contenu des cellules
 
    [F5].Value = dat1: [G5].Value = dat2
End Sub

Nom : Capture.PNG
Affichages : 188
Taille : 19,8 Ko

Sur le screen, si je filtre => n'affiche aucune cellule. Si je remplace le 00:15 par 00:00 => filtre correctement

Si quelqu'un a une idée, je suis preneur .

Pour info : Les cellules des colonnes que je souhaite trier ont des formules du type : =IF(ROW(I21)<16;"";IF(ISBLANK(DATA!E5);"";DATA!E5)) => je les copie depuis la feuille DATA et elles ont le format JJ/MM/AAAA hh:mm. Je suis obligé de convertir avec la macro, juste avant de filtrer car lorsqu'on utilise un filtre avancé via une macro VBA, la date est considérée comme étant au format US (MM/JJ/AAAA hh:mm)