Bonjour,
Lorsque mon formulaire FO_CATEGORIE_DEVELOPPEMENT a le focus, j'exécute le code suivant :
Tout fonctionne bien lorsque je situe le code cod_gele_enr_selon_transfert dans Microsoft Access Objets de classe Form_FO_CATEGORIE_DEVELOPPEMENT mais, étant donné que je désire utiliser ce code au focus de plusieurs formulaires, je l'ai déplacé dans un module MO_DIVERS et lors de l'exécution, j'obtiens l'erreur suivante : Utilisation incorrecte du mot clé Me.
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 Private Sub Form_Current() ' Permet de d'autoriser ou d'empêcher l'utilisateur de toucher l'enregistrement si le numéro de référence et égal ou inférieur à celui du formulaire FO_TRANSFERT pour ce formulaire. ' Historique : ' v00.001.00001.00001; cod_gele_enr_selon_transfert 'DoCmd.Close End Sub Public Sub cod_gele_enr_selon_transfert() ' Permet de d'autoriser ou d'empêcher l'utilisateur de toucher l'enregistrement si le numéro de référence et égal ou inférieur à celui du formulaire FO_TRANSFERT pour ce formulaire. ' Historique : ' v00.001.00001.00001; Dim odb_gesclass As DAO.Database Dim odb_tables As DAO.TableDef Dim odb_champs As DAO.Field Dim int_pos_souligne As Integer Dim str_table As String Dim str_formulaire As String Dim str_debut_nom_champ As String Dim str_fin_nom_champ As String Dim str_nom_champs As String Dim str_transfert_reference As String Dim str_nom_reference As String Dim var_transfert_reference As Variant Set odb_gesclass = CurrentDb DoCmd.OpenForm "FO_TRANSFERT", , , , , acHidden str_formulaire = Me.Name str_table = "TA" & Right(str_formulaire, Len(str_formulaire) - 2) Set odb_tables = odb_gesclass.TableDefs(str_table) For Each odb_champs In odb_tables.Fields int_pos_souligne = InStr(odb_champs.Name, "_") str_debut_nom_champ = Left(odb_champs.Name, int_pos_souligne - 1) str_fin_nom_champ = Right(odb_champs.Name, Len(odb_champs.Name) - int_pos_souligne) str_transfert_reference = "tra_" & str_debut_nom_champ & "_reference" var_transfert_reference = Forms("FO_TRANSFERT").Controls(str_transfert_reference).Value If str_fin_nom_champ <> "reference" Then str_nom_champs = odb_champs.Name If Int(Me.Controls(str_nom_reference)) <= Int(var_transfert_reference) And Not IsNull(var_transfert_reference) Then Me.Controls(str_nom_champs).Enabled = False Me.Controls(str_nom_champs).Locked = True Else Me.Controls(str_nom_champs).Enabled = True Me.Controls(str_nom_champs).Locked = False End If Else str_nom_reference = odb_champs.Name End If Next odb_champs odb_gesclass.Close Set odb_tables = Nothing Set odb_gesclass = Nothing End Sub
J'ai cherché mais je ne vois pas ce que je peux faire. Il semblerait que je doive l'utiliser dans un module de classe mais je n'ai jamais touché à cette partie du VBA et ça semble complexe.
Le déboggeur me donne l'erreur sur l'instructionqui me sert à connaître le nom du formulaire actif.
Code : Sélectionner tout - Visualiser dans une fenêtre à part str_formulaire = Me.Name
Existe-t-il une autre solution ?
Partager