Bonjour tout le monde,
Je réalise une timbreuse sous Excel et j'ai un soucis de filtrage au niveau du temps(dates).
C'est une histoire d'Autofilter. Je désire n'afficher que les timbrage plus vieux que xDateHeure.
Le soucis c'est que quand j'applique mon Autofilter par VBA je n'ai aucun résultat. Une fois appliqué je clique dessus(sur l'entête de colonne) et le valide à la souris sans changer de paramètres et paf ! Les résultats désirés sont là.
Voici le code (A savoir que j'ai essayé d'appliquer la méthode de la date numérique mais ça ne foncitonne pas mieux...)
Cela fait maintenant près de 5 heures que je hurle à l'intérieur de moi-même, j'ai beau lutter, je n'y arrive pas...
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 Sub ajoutFactureDonneesBrutes(strDateDebut As String, strDateFin As String) 'Effacer les filtres en gérant l'erreur s'il n'y a pas de filtres déjà définis strDateDebut = CDate(strDateDebut) 'Actuellement stocké sous le format jj.mm.yyyy hh:mm:ss strDateFin = CDate(strDateFin) Worksheets("Données Brutes").Visible = True Worksheets("Données Brutes").Activate On Error Resume Next ActiveSheet.ShowAllData On Error GoTo 0 'N'afficher que le client sélectionné dans le tableau et les timbrages complets (Date Début et fin) iChampClient = ActiveSheet.ListObjects("DataBrutes").ListColumns("Client").Index iChampDateHeureFin = ActiveSheet.ListObjects("DataBrutes").ListColumns("Date Heure Fin").Index iChampDateHeureDebut = ActiveSheet.ListObjects("DataBrutes").ListColumns("Date Heure Début").Index 'ActiveSheet.ListObjects("DataBrutes").Range.AutoFilter Field:=iChampClient, Criteria1:=strClient ActiveSheet.ListObjects("DataBrutes").Range.AutoFilter Field:=iChampDateHeureDebut, Criteria1:=">" & strDateDebut , Operator:=xlFilterValues 'xlAnd ne fonctionne pas mieux. <--------------------------------- ActiveSheet.ListObjects("DataBrutes").Range.AutoFilter Field:=iChampDateHeureFin, Criteria1:="<" & strDateFin, Operator:=xlFilterValues 'clng(strDateDebut) non plus et clng(CDbl(strDateDebut) Pas mieux ... <-------------------------- 'Trier par de la date la moins récente à la plus récente ce nouveau tableau With ActiveSheet.ListObjects("DataBrutes").Sort .SortFields.Clear .SortFields.Add Key:=Range("DataBrutes[Date Heure Début]"), SortOn:=xlSortOnValues, Order:=xlAscending .Header = xlYes .Apply End With 'Vérifie que les filtres ont trouvés au moins un résultat de travail pour le client sélectionné If Range("A1", "A1000000").SpecialCells(xlCellTypeVisible).Count = 1 Then '... End If End Sub
Alors si quelqu'un de la communauté pouvait m'aider ça serait formidable !siouplait
Partager