Bonjour,

Loin d'être un expert en VBA et SQL, je viens chercher de l'aide pour simplifier mon code au sein d'un formulaire de traitement statistique. L'objectif de celui-ci est de fournir des agrégats en fonction de certains critères. Mon problème est qu'il y a environ 50 agrégats dans mon formulaire.

Pour l'instant, chacun est calculé de façon indépendante (une fonction par agrégat). La fonction en question ressemble à ça :

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
Public Function CompteSA() As Long
    Dim R_Cpt As String
    R_Cpt = "SELECT COUNT (T_IdentiteStructure.IDS) as Result "
    R_Cpt = R_Cpt & " FROM T_IdentiteStructure,T_CategorieJuridique,T_GrpCJ,T_LienCJ,T_Membre"
    R_Cpt = R_Cpt & " WHERE T_IdentiteStructure.CodeCJ = T_CategorieJuridique.CodeCJ"
    R_Cpt = R_Cpt & " AND T_CategorieJuridique.CodeCJ = T_LienCJ.CodeCJ"
    R_Cpt = R_Cpt & " AND T_LienCJ.CodeGrpCJ = T_GrpCJ.CodeGrpCJ"
    R_Cpt = R_Cpt & " AND T_GrpCJ.LibGrpCJ =  'SA'"
    R_Cpt = R_Cpt & " AND T_IdentiteStructure.Membre = T_Membre.CodeM"
    If cboMembre.Value <> "" Then
        R_Cpt = R_Cpt & " AND T_IdentiteStructure.Membre=" & cboMembre.Value & ""
    End If
    'Lancement de la requête
    Dim db As dao.Database: Set db = CurrentDb
    Dim r As dao.Recordset: Set r = db.OpenRecordset(R_Cpt)
    If r.RecordCount <> 0 Then
        result = r![result]
      Else
        result = 0
    End If
    r.Close: Set r = Nothing
    Set db = Nothing
    'Affectation du résultat de la requête
    CompteCJ = result
End Function

Ma question :
est-il possible de mettre des variables dans la partie SQL ? par exemple, dans la ligne suivante, est -il possible de changer 'SA' par une variable:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
R_Cpt = R_Cpt & " AND T_GrpCJ.LibGrpCJ =  'SA'"
Pour avoir une ligne de type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
R_Cpt = R_Cpt & " AND T_GrpCJ.LibGrpCJ =  VARIABLE "
Avec dans mon événement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Public VARIABLE AS String
 
Private Sub txtCompteSA_AfterUpdate()
VARIABLE = 'SA'
Call MAJ_SF
End Sub