Bonjour, je ne connais pas trop en programmation, j'ai trouvé un code comme ci-dessous, mais le problème c'est qu'il m'accepte pas le GetTypeField

En effet, je veux faire une recherche sur 2 tables, selon la table choisit, choisir le champ sur lequel l'utilisateur veut faire une recherche, et ensuite j'ai une zone de texte dans lequel, l'utilisateur écrit la valeur recherché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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Private Sub CmdRech_Click()
Dim Sql As String                               ' contient la requête
Dim N_Field As String                           ' contient le nom du champ
Dim N_Table As String
Dim Criteria As String                          ' contient le critère
Dim typChamp As Integer                         ' contient le type de champ
 
 
If IsNull(Me.Lst_Champs) Or IsNull(Me.Critere) Then
   MsgBox "Choisissez un nom de champ et entrez la valeur.", vbExclamation, Me.Name
   Exit Sub     ' l'un des champs est vide
End If
 
N_Table = Me.Lst_Table                          ' récupération de la table
N_Field = Me.Lst_Champs                         ' récupération du nom du champ
Criteria = Me.Critere                           ' récupération du critère
 
typChamp = lf_GetTypeField(N_Table, N_Field)
OpeChamp = Me.T_Recherche
' traitement de l'opérateur
 
Select Case typChamp
 
       Case 1                            ' bool
           If OpeChamp = 1 Then          ' oui
              Criteria = N_Field & "=-1"
           ElseIf OpeChamp = 2 Then          ' non
              Criteria = N_Field & "=0"
           Else
              Criteria = N_Field & "=Null"
           End If
 
       Case 2 To 8, 20                  ' traite les numeriques
           ' traite la virgule
           If InStr(1, Criteria, ",") > 0 Then
              Criteria = Left(Criteria, InStr(1, Criteria, ",") - 1) _
                         & "." & Right(Criteria, InStr(1, Criteria, ","))
           End If
 
           If typChamp = 8 Then                    ' type champ = date
              If IsDate(Me.Critere) Then           ' critere = date
                 Criteria = "#" & Criteria & "#"   ' rajoute les dièses
              Else
                 MsgBox "Vous devez entrer une date du type jj/mm/aa (21/01/03).", vbExclamation, Me.Name
                 Exit Sub                          ' pas une date
              End If
           End If
 
           Select Case OpeChamp                    ' numerique, date
 
                   Case 1 ' =
                        Criteria = N_Field & "=" & Criteria
 
                   Case 2 ' >=
                        Criteria = N_Field & ">=" & Criteria
 
                   Case 3 ' <=
                        Criteria = N_Field & "<=" & Criteria
 
                   Case 4 '<>
                        Criteria = N_Field & "<>" & Criteria
            End Select
 
 
       Case 10, 12                     ' texte
 
           Select Case OpeChamp
                  Case 1 ' strictement egal
                       Criteria = N_Field & " Like """ & Criteria & """"
 
                  Case 2 ' commence par
                       Criteria = N_Field & " Like """ & Criteria & "*" & """"
 
                  Case 3 ' est contenu dans
                       Criteria = N_Field & " Like """ & "*" & Criteria & "*" & """"
 
                  Case 4 ' fini par
                       Criteria = N_Field & " Like """ & "*" & Criteria & """"
           End Select
 
       Case Else
           MsgBox "Cas non prévu !"
           Exit Sub
End Select
 
If Me.OptRechCourante And Not Len(Me.Lst_Resultat.RowSource) = 0 Then
   Sql = Left(Me.Lst_Resultat.RowSource, Len(Me.Lst_Resultat.RowSource) - 3)
   Sql = Sql & " AND " & N_Table & "." & Criteria & "));"
Else
   ' construit la rq sql
   Sql = "SELECT DISTINCTROW " & N_Table & ".*"
   Sql = Sql + " FROM " & N_Table
   Sql = Sql + " WHERE ((" & N_Table & "." & Criteria & "));"
End If
                        ' construit la requête sql*
Me.Lst_Resultat.RowSource = Sql             ' affecte sql a lst_result
Me.Lst_Resultat.Requery             ' rafraîchi la liste
 
End Sub



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
Private Sub Lst_Champs_AfterUpdate()
 
If IsNull(Me.Lst_Champs) Then
   MsgBox "Choisissez un nom de champ.", vbExclamation, Me.Name
   Exit Sub     ' l'un des champs est vide
End If
 
Me.Etiq1.Visible = True
Me.Etiq2.Visible = True
Me.Etiq3.Visible = True
Me.Etiq4.Visible = True
Me.Bouton1.Visible = True
Me.Bouton2.Visible = True
Me.Bouton3.Visible = True
Me.Bouton4.Visible = True
Me.Critere.Visible = True    ' pas de critere
Me.T_Recherche = 1           ' repositionne l'option 1
 
Select Case lf_GetTypeField(Me.Lst_Table, Me.Lst_Champs)   ' traite suivant le type du champ
    Case 0   ' vide null
         Me.Text_Champ.Caption = "Pas de données"
         Me.Etiq1.Visible = False
         Me.Etiq2.Visible = False
         Me.Etiq3.Visible = False     ' obsolete dans ce cas
         Me.Etiq4.Caption = False     ' cache
         Me.Bouton1.Visible = False
         Me.Bouton2.Visible = False
         Me.Bouton3.Visible = False
         Me.Bouton4.Visible = False
         Me.Critere.Visible = False   ' pas de critere
     Case 1
         Me.Text_Champ.Caption = "Oui/Non"
         Me.Etiq1.Caption = "Oui"
         Me.Etiq2.Caption = "Non"
         Me.Etiq3.Caption = "Aucun"
         Me.Etiq4.Caption = False     ' obsolete dans ce cas
         Me.Bouton4.Visible = False
         Me.Critere.Visible = False   ' pas de critere
     Case 2 To 8, 20
         ' numérique, Date
         Me.Text_Champ.Caption = "Numérique/Date"
         Me.Etiq1.Caption = "Etre égale ="
         Me.Etiq2.Caption = "Etre supérieure >="
         Me.Etiq3.Caption = "Etre inférieure <="
         Me.Etiq4.Caption = "Etre différente <>"
 
     Case 10 ' string
         Me.Text_Champ.Caption = "Texte"
         Me.Etiq1.Caption = "Etre strictement identique"
         Me.Etiq2.Caption = "Commencer par la valeur"
         Me.Etiq3.Caption = "Contenir la valeur"
         Me.Etiq4.Caption = "Finir par la valeur"
 
     Case 12
         Me.Text_Champ.Caption = "Mémo/Hyperlien"
         Me.Etiq3.Caption = "Contenir la valeur"
         Me.Etiq1.Visible = False
         Me.Etiq2.Visible = False
         Me.Etiq4.Visible = False
         Me.Bouton1.Visible = False
         Me.Bouton2.Visible = False
         Me.Bouton4.Visible = False
         Me.T_Recherche = 3             ' option 3
 
End Select
 
 
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub Lst_Table_AfterUpdate()
Me.Lst_Champs.RowSource = Me.Lst_Table
Me.Lst_Champs = Null
End Sub
C'est la programmation que j'ai trouvé...Je ne comprends pas beaucoup là-dedans...

Merci d'avance pour votre aide..j'en ai vraiment besoin !