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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
Public Sub SFilter3()
Dim sql As String
Dim varI As Variant
Dim StrFiltreType As String
Dim strFiltreNiveau As String
Dim strFiltreStatut As String
Dim filtre As String
Dim f As String
'filtre selon multicritères type, niveau ou statut
If Not IsNull(StrFiltreType) Then
For Each varI In Me!Filtre_TypeCours.ItemsSelected
If StrFiltreType <> "" Then StrFiltreType = StrFiltreType & " OR "
StrFiltreType = StrFiltreType & "[Type_cours]='" & Me!Filtre_TypeCours.ItemData(varI) & "'"
Next varI
End If
If Not IsNull(strFiltreNiveau) Then
For Each varI In Me!Filtre_NiveauCours.ItemsSelected
If strFiltreNiveau <> "" Then strFiltreNiveau = strFiltreNiveau & " OR "
strFiltreNiveau = strFiltreNiveau & "[Niveau_cours]='" & Me!Filtre_NiveauCours.ItemData(varI) & "'"
Me.Filtre_NiveauCours.Requery
Next varI
End If
If Not IsNull(strFiltreStatut) Then
For Each varI In Me!Filtre_Statut.ItemsSelected
If strFiltreStatut <> "" Then strFiltreStatut = strFiltreStatut & " OR "
strFiltreStatut = strFiltreStatut & "[Statut]='" & Me!Filtre_Statut.ItemData(varI) & "'"
Next varI
End If
' entre dates
If (Not IsNull(Me.Date_IN)) And (Not IsNull(Me.Date_OUT)) Then
f = "DateJour>=" & Format(Me.Date_IN, "\#mm\/dd\/yyyy\#") _
& " and DateJour<=" & Format(Me.Date_OUT, "\#mm\/dd\/yyyy\#")
End If
' conditions de filtre selon critères
If StrFiltreType <> "" Then StrFiltreType = "(" & StrFiltreType & ") AND "
If strFiltreNiveau <> "" Then strFiltreNiveau = "(" & strFiltreNiveau & ") AND "
If strFiltreStatut <> "" Then strFiltreStatut = "(" & strFiltreStatut & ") AND "
If f <> "" Then f = "(" & f & ") "
Forms!FN!SFN![Cours2].Report.Filter = StrFiltreType & strFiltreNiveau & strFiltreStatut & f
Forms!FN!SFN![Cours2].Report.FilterOn = True
Forms!FN!SFN![Cours2].Report.Requery
End Sub
Private Sub Selection_niveau_Click()
Call Filtre_periode
End Sub
Public Sub Filtre_periode()
Select Case Selection_niveau
Case 1:
Dim dateaujourdhui As Date
dateaujourdhui = Date
Me.Date_IN = dateaujourdhui
Me.Date_OUT = dateaujourdhui
Case 2:
Dim dtDebutSemaine As Date
Dim dtFinSemaine As Date
dtDebutSemaine = Date - Weekday(Date, vbMonday) + 1
dtFinSemaine = Date + 7 - Weekday(Date, vbMonday)
Me.Date_IN = dtDebutSemaine
Me.Date_OUT = dtFinSemaine
Case 4:
Dim dtDebutAnnee As Date
Dim dtFinAnnee As Date
dtDebutAnnee = DateSerial(Year(Date), 1, 1)
dtFinAnnee = DateAdd("yyyy", 1, dtDebutAnnee) - 1
Me.Date_IN = dtDebutAnnee
Me.Date_OUT = dtFinAnnee
End Select
Call SFilter3
End Sub |
Partager