Bonjour à tous,
Ce code informe dans la liste déroulante ChoixChamp les champs d'une table, quand le champ est sélectionné la deuxième liste déroulante ChoixValeur informe toutes les données représentées dans le champ sélectionné. ex: si choix prénom sélectionné dans ChoixChamp alors le champ ChoixValeur indique tous les prénoms se trouvant dans le champs Prénom.
Le problème est quand je sélectionne, après l'ouverture du formulaire d'où les deux listes déroulantes sont, dans la liste déroulante ChoixChamp un champ soit numérique soit texte soit date le choixValeur est renseigné et le sous-formulaire aussi, mais quand après plusieur sélections de champ je sélectionne un choix oui/non ACCESS m'indique une erreur de propriété du champ comme " vous avez inséré une valeur texte dans un champ non compatible... Avez-vous une solution ? Merci à vous tous et bonne soirée

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
Private Sub ChoixValeur_AfterUpdate()
 
Dim ChampFiltre As String, Condition As String
Dim MonSQL As String, NbEnreg
Dim DateE As Date
'affecte le nom du champ sélectionné
'sur la liste déroulante ChoixChamp
'à la variable ChampFiltre
ChampFiltre = Me.ChoixChamp
 
'affecte la valeur sélectionnée
'sur la liste déroulante ChoixValeur
'à la variable condition
Condition = Me.ChoixValeur
 
'Teste si le code filtré est le studio
'car c'est le seul champ de type numérique
'dans la table Clients
'La clause WHERE doit être traitée différemment
'sur un champ Numérique et sur un champ Texte
If ChampFiltre = "Studio" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
'ElseIf permet de créer des tests multiples
'ex: dans ce contexte les champs sont ou Integer ou Date ou String
'Il faut donc énumérer toutes les types de données.
ElseIf ChampFiltre = "Number" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
ElseIf ChampFiltre = "CodeTitre" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
ElseIf ChampFiltre = "Comptecomptable" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
'Pour un champ DATE on doit introduire avant le guillemet, le diese puis fermer
'la condition par un & espace, guillemet, dièse et guillemet.
 
ElseIf ChampFiltre = "DateE" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " =#" & Condition & "#"
 
ElseIf ChampFiltre = "DateS" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " =#" & Condition & "#"
 
ElseIf ChampFiltre = "ADSL" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
ElseIf ChampFiltre = "Analogique" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
ElseIf ChampFiltre = "CodeTitre" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
ElseIf ChampFiltre = "PasDeTéléphone" Then
MonSQL = "SELECT * FROM Clients Where " & ChampFiltre & " = " & Condition
 
Else
 
'Dans le cas d'un champ de type Texte
'la condition WHERE doit inclure un certain nombre de guillemets
' ou d'apostrophes
MonSQL = "SELECT * FROM Clients WHERE " & ChampFiltre & " = " & """" & Condition & """"
DoCmd.Requery
 
 
 
End If
'attribue à la propriété RecordSource du sous-formulaire
'SF_RechercheClients
'l'intruction SQL nommé MonSQL
Me.SF_rechercheClients.Form.RecordSource = MonSQL
 
End Sub