Bonjour à tous,

Je rencontre un problème quant à l'utilisation d'une variable VBA dans une requête SQL :

- j'ai une table nommée "T_Page_1" dont tous les champs sont en format texte,

- j'ai créé un formulaire avec 3 combobox nommées cbocommunes, cbotitre et cbostatut. Leurs valeurs ont été entrées dans la propriété "contenu" et "liste de valeurs" a donc été activé. cbocommunes comporte 34 choix possibles, cbotitre : 5 choix et cbostatut : 9 choix possibles. Le choix fait dans chaque combobox est mémorisé dans une variable string portant le nom de sa combobox respective puis est transformé en nombre, mais toujours au format texte,

- cbostatut comporte un événement sur clic exécutant une requête SQL SELECT en fonction des choix faits dans les 3 combobox,

- la requête se nomme "R_Page_1",

- j'ai également inseré des MsgBox afin de vérifier la valeur des variables après leur transformation,


Le problème est que j'obtiens 5 champs vides après exécution de la requête SQL, je n'arrive pas apparemment à récupérer les 3 variables en question dans celle-ci.

Voici le 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
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
86
87
88
89
90
 
Option Compare Database
 
Private Sub cbocommunes_BeforeUpdate(Cancel As Integer)
 
 Dim cbocommunes As String
 
  MsgBox Me.cbocommunes
 
   If Me.cbocommunes = "-- Toutes --" Then cbocommunes = "00" Else
   If Me.cbocommunes = "01. Bélep" Then cbocommunes = "01" Else
   If Me.cbocommunes = "02. Boulouparis" Then cbocommunes = "02" Else
   If Me.cbocommunes = "03. Bourail" Then cbocommunes = "03" Else
   If Me.cbocommunes = "04. Canala" Then cbocommunes = "04" Else
   If Me.cbocommunes = "05. Dumbéa" Then cbocommunes = "05" Else
   If Me.cbocommunes = "06. Farino" Then cbocommunes = "06" Else
   If Me.cbocommunes = "07. Hienghène" Then cbocommunes = "07" Else
   If Me.cbocommunes = "08. Houaïlou" Then cbocommunes = "08" Else
   If Me.cbocommunes = "09. Ile des Pins" Then cbocommunes = "09" Else
   If Me.cbocommunes = "10. Kaala Gomen" Then cbocommunes = "10" Else
   If Me.cbocommunes = "11. Koné" Then cbocommunes = "11" Else
   If Me.cbocommunes = "12. Koumac" Then cbocommunes = "12" Else
   If Me.cbocommunes = "13. La Foa" Then cbocommunes = "13" Else
   If Me.cbocommunes = "14. Lifou" Then cbocommunes = "14" Else
   If Me.cbocommunes = "15. Maré" Then cbocommunes = "15" Else
   If Me.cbocommunes = "16. Moindou" Then cbocommunes = "16" Else
   If Me.cbocommunes = "17. Mont Dore" Then cbocommunes = "17" Else
   If Me.cbocommunes = "18. Nouméa" Then cbocommunes = "18" Else
   If Me.cbocommunes = "19. Ouégoa" Then cbocommunes = "19" Else
   If Me.cbocommunes = "20. Ouvéa" Then cbocommunes = "20" Else
   If Me.cbocommunes = "21. Païta" Then cbocommunes = "21" Else
   If Me.cbocommunes = "22. Poindimié" Then cbocommunes = "22" Else
   If Me.cbocommunes = "23. Ponérihouen" Then cbocommunes = "23" Else
   If Me.cbocommunes = "24. Pouébo" Then cbocommunes = "24" Else
   If Me.cbocommunes = "25. Pouembout" Then cbocommunes = "25" Else
   If Me.cbocommunes = "26. Poum" Then cbocommunes = "26" Else
   If Me.cbocommunes = "27. Poya" Then cbocommunes = "27" Else
   If Me.cbocommunes = "28. Sarraméa" Then cbocommunes = "28" Else
   If Me.cbocommunes = "29. Thio" Then cbocommunes = "29" Else
   If Me.cbocommunes = "30. Touho" Then cbocommunes = "30" Else
   If Me.cbocommunes = "31. Voh" Then cbocommunes = "31" Else
   If Me.cbocommunes = "32. Yaté" Then cbocommunes = "32" Else
   If Me.cbocommunes = "33. Kouaoua" Then cbocommunes = "33"
 
 
  MsgBox cbocommunes
 
End Sub
 
Private Sub cbostatut_BeforeUpdate(Cancel As Integer)
 
 Dim cbostatut As String
 
  MsgBox Me.cbostatut
 
   If Me.cbostatut = "-- Tous --" Then cbostatut = "0" Else
   If Me.cbostatut = "Compte propre" Then cbostatut = "1" Else
   If Me.cbostatut = "GIE" Then cbostatut = "2" Else
   If Me.cbostatut = "Groupement de fait" Then cbostatut = "3" Else
   If Me.cbostatut = "SCEA, SCEC, SA..." Then cbostatut = "4" Else
   If Me.cbostatut = "Autre personne morale" Then cbostatut = "5" Else
   If Me.cbostatut = "Autre personne physique" Then cbostatut = "6" Else
   If Me.cbostatut = "Pas de réponse" Then cbostatut = "" Else
   If Me.cbostatut = "Trop de réponses" Then cbostatut = "9" Else
 
  MsgBox cbostatut
 
End Sub
 
Private Sub cbostatut_Click()
 
 DoCmd.OpenQuery ("R_Page_1")
 
End Sub
 
Private Sub cbotitre_BeforeUpdate(Cancel As Integer)
 
 Dim cbotitre As String
 
  MsgBox Me.cbotitre
 
   If Me.cbotitre = "-- Tous --" Then cbotitre = "0" Else
   If Me.cbotitre = "Superficie > 1,7 ha" Then cbotitre = "1" Else
   If Me.cbotitre = "Seuil de 350 points" Then cbotitre = "2" Else
   If Me.cbotitre = "Pas de réponse" Then cbotitre = "" Else
   If Me.cbotitre = "Trop de réponses" Then cbotitre = "9" Else
 
  MsgBox cbotitre
 
End Sub
Et celui de la requête "R_Page_1" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SELECT Page_1.COM, Page_1.TITRE, Page_1.STATUT, Page_1.NOM, Page_1.PRENOM
FROM Page_1
WHERE (((Page_1.COM)='" & cbocommunes & "') AND ((Page_1.TITRE)='" & cbotitre & "') AND ((Page_1.STATUT)='" & cbostatut & "'));
J'ai trouvé quelques réponses à ce sujet dans les FAQ mais je ne suis pas très doué car ça ne fonctionne toujours pas.

Merci infiniment pour votre aide.