Bonjour,

Je suis en train de bosser sur un formulaire Access qui vient taper dans une BD.

J'ai deux zones de liste représentant des Portefeuilles et des marchés, et deux zones de texte avec les dates. Tout cela me permet de "filtrer" les infos que je veux et de les afficher dans un sous-formulaire.

Mon problème : dans le sous-formulaire j'ai un champ [Date Opération], qui contient des dates journalières.

Je souhaiterais, via un Groupe d'option, regrouper ces dates par jour, ou semaine, ou mois, ou année. (au choix, donc 4 options)

En SQL j'utilise Format([Date Opération];"mmm-yy") pour regrouper par mois.

Comment est-ce que je dois retranscrire ça en VBA?

Voici une partie de mon code:

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
39
40
41
42
43
'On retourne les valeurs filtrées
    strSQL = "SELECT Portefeuille, Marché, [Ss - Jacent], [SommedeNb Opé], [SommedeNombre de lot], [Date Opération]" _
    & "FROM [Recap Deals] WHERE (Portefeuille Like '" & vZoneListe1 & "*' and Marché like '" & vZoneListe2 & "*')"
    'On affecte le filtre au Sous Formulaire SF_Recap
 
 
'Sur Date Début
If TxtDateDébut <> "" Then
    strSQLDateDébut = " AND ([Date Opération]>=" & DateAuFormatUS(Me.TxtDateDébut) & ")"
End If
 
'Sur Date Fin
If TxtDateFin <> "" Then
    If TxtDateFin >= TxtDateDébut Then
        If strSQLDateDébut <> "" Then
            strSQLDateFin = " AND ([Date Opération]<=" & DateAuFormatUS(Me.TxtDateFin) & ")"
        Else
            strSQLDateFin = " WHERE ([Date Opération]<=" & DateAuFormatUS(Me.TxtDateFin) & ")"
        End If
    Else
    MsgBox ("La Date de fin ne peut pas être inférieur à la date de début")
    Me.TxtDateFin.Value = Me.TxtDateDébut.Value
    End If
End If
 
 
'Sur Groupe d'Option Time Periode
If Me.ChoixTimePeriod = 1 Then
strSQLTimePeriod = " "
 
ElseIf Me.ChoixTimePeriod = 2 Then
strSQLTimePeriod = "GROUP BY "
 
ElseIf Me.ChoixTimePeriod = 3 Then
strSQLTimePeriod = "GROUP BY format([Date Opération],'mmm-yy')"
 
ElseIf Me.ChoixTimePeriod = 4 Then
strSQLTimePeriod = "GROUP BY format([Date Opération],'yyyy')"
End If
 
strSQL = strSQL & strSQLTimePeriod & strSQLDateDébut & strSQLDateFin
 
Me.SF_Recap.Form.RecordSource = strSQL
Merci par avance pour votre aide !