IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Message d'erreur sous VB-Access


Sujet :

VBA Access

  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut Message d'erreur sous VB-Access
    Bonjour,
    j'ai rencontré un message d'erreur dans mon application mais je n'arrive pas à trouver son origine.
    Cette erreur est la suivante:

    Erreur 91 (variable objet ou variable de bloc With non définie) dans la procédure M_SOC_UTL_CONTROLE_FORMAT:: F_UTL_VERIF_TOUT.

    J'ai regardé un peu sur le net mais ça ne m'a pas beaucoup avancé. Si quelqu'un pourrait me guider, ça serait sympa.
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Il nous faudrait un peu plus du code pour essayer de comprendre.

    J'ai eu la même erreur récemment avec le bloc with suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With dbBase.TableDefs(Me.lstTblSansConnect.ItemData(itemTable))
     
                .Connect = ";DATABASE=" & Me.txt_chemin
     
                .RefreshLink
            End With
    Le problème est que je n'avais pas instancié l'objet dbBase.
    Dit autrement, il manquait le petit bout :

    Mais sans votre code, cela va vraiment être difficile pour vous aider.

    Pierre

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    ok,
    je veux bien te filer le code. Mais justement comment je peux savoir dans quelle partie duu code, se trouve l'origine de l'erreur ? Est ce que c'est forcément dans le bloc With - End With ?

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    En fait je vais d'abord essayer de trouver la partie du code qui contient l'erreur.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    Bonjour ,

    L'insertion d'une gestion d'erreur a chacune de tes fonctions te fera gagner un temps énorme (surtout dans des cas comme celui-ci...) !
    Pour pouvoir traiter un problème il faut en connaitre la source.

    Ps : Tu dispose de beaucoup de tutoriel qui peuvent te guider pour cela :
    http://gilmir.developpez.com/tutoriels-vb6/tutoriel16/
    http://warin.developpez.com/access/erreur/tutoriel1/

    Cordialement ,

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    Merci pour votré réponse,
    en fait je suis en train de travailler sur un programme VB codé par quelqu'un d'autre qui apparemment a fait en sorte de préciser que cette erreur 91 a un rapport avec la fonction suivante.

    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
     
    Public Function F_UTL_VERIF_TOUT(str_Id_Attribut As String, str_Valeur_Champ As String) As Boolean
    '*******************************************************************************
    '* F_UTL_VERIF_TOUT
    '*
    '* paramètres : str_Id_Attribut           String   (Identifiant de l'attribut)
    '*              str_Valeur_Champ          String   (Valeur de l'attribut)
    '*
    '* rôle       : Verifie l'existence, la longueur et le format d'un champ a partir du code attribut du référencement
    '*
    '*******************************************************************************
    '* Création     : 15/04/2008      : VMA
    '* Modification : 11/12/2008      : GKA
    '*                                  F_UTL_VERIF_TOUT: générique
    '
    '*******************************************************************************
    '* Attention!! Ne pas mettre de spécifique dans cette fonction
    '*******************************************************************************
    '
        On Error GoTo Err_F_UTL_VERIF_TOUT
     
        Dim int_Numero_Err As Integer
        Dim str_Reponse As Variant
        Dim boo_Obligatoire As Boolean
        Dim lng_Longueur_Champ As Long
        Dim str_Id_Format As String
        Dim str_Nom_Champ As String
        Dim frm As Form
     
        str_Nom_Champ = DLookup("A_ATR_LIBELLE_DONNEE", "[T_REF_ATTRIBUT]", "[A_ATR_ID]=""" & str_Id_Attribut & """")
     
        str_Reponse = DLookup("A_ATR_OBLIGATOIRE", "[T_REF_ATTRIBUT]", "[A_ATR_ID]=""" & str_Id_Attribut & """")
     
        If str_Id_Attribut = 25148 Or str_Id_Attribut = 25147 Then
            If str_Id_Attribut = 25148 Then
                If Forms![F_UTL_COLLECTE]![SFB].Form![A_SEM_C_SER_MET_STOCK].value = "O" Then
                    str_Reponse = "o"
                    boo_Obligatoire = True
                End If
            End If
            If str_Id_Attribut = 25147 Then
                If Forms![F_UTL_COLLECTE]![SFB].Form![A_SEM_C_SER_MET_STOCK] = "N" Then
                    str_Reponse = "o"
                    boo_Obligatoire = True
                End If
            End If
        End If
     
        If IsNull(str_Reponse) Then
            int_Numero_Err = 1
            GoTo Err_F_UTL_VERIF_TOUT_GESTION_ERREUR
        Else
            If str_Reponse = "o" Then boo_Obligatoire = True
            ' modifier le referencement obligatoire en boolean
        End If
     
        'Debut specifique SA/ MMA-->322
        If str_Id_Attribut = "25250" Then
            If Forms![F_UTL_COLLECTE]![SFB].Form![A_AAA_C_C_KOSTL].value = "O" Or Forms![F_UTL_COLLECTE]![SFB].Form![A_AAA_C_C_PRCTR].value = "O" Then
                str_Reponse = "o"
                boo_Obligatoire = True
     
            End If
            '
            '         If Forms![F_UTL_CREATION]![SFA].Form![*c Centre de profit].Value = "O" Or Forms![F_UTL_CREATION]![SFA].Form![*c Centre de coût].Value = "O" Then
            '            str_Reponse = "o"
            '            boo_Obligatoire = True
            '
            '        End If
        End If
     
        ' Début Spécifique EJ_ENTETE
        If str_Id_Attribut = "24327" Or str_Id_Attribut = "24326" Or str_Id_Attribut = "24328" Or str_Id_Attribut = "24397" Or str_Id_Attribut = "24325" Or str_Id_Attribut = "24330" Or str_Id_Attribut = "24331" Or str_Id_Attribut = "24332" Or str_Id_Attribut = "24334" Then
            Set frm = F_UTL_FORM()
            If frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMU" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMX" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMT" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMBC" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPX" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPT" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPC" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        ElseIf str_Id_Attribut = "25363" Then
            Set frm = F_UTL_FORM()
            If frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMU" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMX" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMT" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMBC" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPX" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPT" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPC" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZBC" Or frm("A_DEJ_C_E8_PROCESS_TYPE") = "ZMPU" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        End If
     
        'AMG
        If str_Id_Attribut = "26808" Or str_Id_Attribut = "26809" Or str_Id_Attribut = "26810" Or str_Id_Attribut = "26812" Then     'str_Id_Attribut = "26806" Or str_Id_Attribut = "26803" Or str_Id_Attribut = "26805" Or str_Id_Attribut = "26804" Or str_Id_Attribut = "26875" Or   : Enlever suite Ano 7929
            Set frm = F_UTL_FORM()
            If frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMU" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMX" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMT" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMBC" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPX" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPT" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPC" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        ElseIf str_Id_Attribut = "26983" Then
            Set frm = F_UTL_FORM()
            If frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMU" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMX" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMT" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMBC" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPX" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPT" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPC" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZBC" Or frm("A_DEQ_C_E8_PROCESS_TYPE") = "ZMPU" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        End If
     
        'ACL
        If str_Id_Attribut = "26339" Or str_Id_Attribut = "26338" Or str_Id_Attribut = "26340" Or str_Id_Attribut = "26409" Or str_Id_Attribut = "26337" Or str_Id_Attribut = "26342" Or str_Id_Attribut = "26343" Or str_Id_Attribut = "26344" Or str_Id_Attribut = "26346" Then
            Set frm = F_UTL_FORM()
            If frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMU" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMX" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMT" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMBC" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPX" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPT" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPC" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        ElseIf str_Id_Attribut = "26517" Then
            Set frm = F_UTL_FORM()
            If frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMU" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMX" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMT" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMBC" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPX" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPT" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPC" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZBC" Or frm("A_DEA_C_E8_PROCESS_TYPE") = "ZMPU" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        End If
     
        ' Fin Spécifique EJ_ENTETE
     
        'Début Spécifique EJ_POSTE
     
        If str_Id_Attribut = "26702" Then    ' pour C_L13_DELIV_DATE pour NDL ACL AMG 20100119
            Set frm = F_UTL_FORM()
            If Left(frm("A_DEB_C_L22_PS_IPT"), 4) = "Z_LG" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            Else
                str_Reponse = "n"
                boo_Obligatoire = False
            End If
        End If
        If str_Id_Attribut = "24399" Then    ' pour C_L13_DELIV_DATE pour NDL ACL AMG 20100119
            Set frm = F_UTL_FORM()
            If Left(frm("A_DER_C_L22_PS_IPT"), 4) = "Z_LG" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            Else
                str_Reponse = "n"
                boo_Obligatoire = False
            End If
        End If
        If str_Id_Attribut = "27168" Then    ' pour C_L13_DELIV_DATE pour NDL ACL AMG 20100119
            Set frm = F_UTL_FORM()
            If Left(frm("A_DES_C_L22_PS_IPT"), 4) = "Z_LG" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            Else
                str_Reponse = "n"
                boo_Obligatoire = False
            End If
        End If
     
        If str_Id_Attribut = "24405" Or str_Id_Attribut = "24408" Or str_Id_Attribut = "24406" Or str_Id_Attribut = "24409" Or str_Id_Attribut = "24435" Or str_Id_Attribut = "24421" Or str_Id_Attribut = "24433" Or str_Id_Attribut = "24412" Or str_Id_Attribut = "24413" Or str_Id_Attribut = "24449" Or str_Id_Attribut = "24411" Or str_Id_Attribut = "24412" Or str_Id_Attribut = "24414" Or str_Id_Attribut = "24416" Then
            str_Reponse = "o"
            boo_Obligatoire = True
        End If
        'Code option
        If str_Id_Attribut = "24407" Then
            Set frm = F_UTL_FORM()
            If frm("A_DER_C_L22_PS_IPT") = "Z_LI_TC" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        End If
     
        If str_Id_Attribut = "27174" Or str_Id_Attribut = "27177" Or str_Id_Attribut = "27175" Or str_Id_Attribut = "27178" Or str_Id_Attribut = "27204" Or str_Id_Attribut = "27190" Or str_Id_Attribut = "27202" Or str_Id_Attribut = "27181" Or str_Id_Attribut = "27182" Or str_Id_Attribut = "27125" Or str_Id_Attribut = "27180" Or str_Id_Attribut = "27181" Or str_Id_Attribut = "27185" Then           'Suite ano 7919 : Or str_Id_Attribut = "27183"
            str_Reponse = "o"
            boo_Obligatoire = True
        End If
     
        '    'Forme de prix : cma
            If str_Id_Attribut = "27183" Then
                Set frm = F_UTL_FORM()
                If frm("A_DES_C_L22_PS_IPT") = "Z_LG" Then
                    str_Reponse = "o"
                    boo_Obligatoire = True
                Else
                    str_Reponse = "n"
                    boo_Obligatoire = False
                End If
            End If
     
        'Code option
        If str_Id_Attribut = "27176" Then
            Set frm = F_UTL_FORM()
            If frm("A_DES_C_L22_PS_IPT") = "Z_LI_TC" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        End If
     
        If str_Id_Attribut = "26708" Or str_Id_Attribut = "26711" Or str_Id_Attribut = "26709" Or str_Id_Attribut = "26712" Or str_Id_Attribut = "26738" Or str_Id_Attribut = "26724" Or str_Id_Attribut = "26736" Or str_Id_Attribut = "26715" Or str_Id_Attribut = "26716" Or str_Id_Attribut = "26659" Or str_Id_Attribut = "26714" Or str_Id_Attribut = "26715" Or str_Id_Attribut = "26717" Or str_Id_Attribut = "26719" Then
            str_Reponse = "o"
            boo_Obligatoire = True
        End If
        'Code option
        If str_Id_Attribut = "26710" Then
            Set frm = F_UTL_FORM()
            If frm("A_DEB_C_L22_PS_IPT") = "Z_LI_TC" Then
                str_Reponse = "o"
                boo_Obligatoire = True
            End If
        End If
     
        'Fin Spécifique EJ_POSTE
        If F_SOC_VERIF_EXISTENCE(str_Valeur_Champ, boo_Obligatoire) = False Then
     
            Call F_UTL_MESSAGE("E030", 2, str_Nom_Champ)
     
            F_UTL_VERIF_TOUT = True
        Else
            If str_Valeur_Champ = "" Then
                F_UTL_VERIF_TOUT = False
            Else
                str_Reponse = DLookup("A_ATR_LONGUEUR", "[T_REF_ATTRIBUT]", "[A_ATR_ID]=""" & str_Id_Attribut & """")
                If IsNull(str_Reponse) Then
                    Debug.Print "L'attribut ayant " & str_Nom_Champ & " pour code n'a pas de longueur dans le referencement."
                Else
                    lng_Longueur_Champ = str_Reponse
                End If
     
                If F_SOC_VERIF_LONGUEUR(lng_Longueur_Champ, str_Valeur_Champ) = False Then
                    Call F_UTL_MESSAGE("E008", 3, str_Nom_Champ, lng_Longueur_Champ)
                    F_UTL_VERIF_TOUT = True
                Else
                    str_Reponse = DLookup("A_ATR_FOR_ID", "[T_REF_ATTRIBUT]", "[A_ATR_ID]=""" & str_Id_Attribut & """")
                    'Début Spécifique EJ_POSTE
                    If str_Id_Attribut = "24437" Then
                        Set frm = F_UTL_FORM()
     
                        If frm("A_DER_C_L9_UNIT") = "DEV" Then
                            str_Reponse = "56"
                        ElseIf frm("A_DER_C_L9_UNIT") = "ST" Then
                            str_Reponse = "57"
                        End If
                    End If
     
                    If str_Id_Attribut = "27206" Then
                        Set frm = F_UTL_FORM()
     
                        If frm("A_DES_C_L9_UNIT") = "DEV" Then
                            str_Reponse = "56"
                        ElseIf frm("A_DES_C_L9_UNIT") = "ST" Then
                            str_Reponse = "57"
                        End If
                    End If
     
                    If str_Id_Attribut = "26740" Then
                        Set frm = F_UTL_FORM()
     
                        If frm("A_DEB_C_L9_UNIT") = "DEV" Then
                            str_Reponse = "56"
                        ElseIf frm("A_DEB_C_L9_UNIT") = "ST" Then
                            str_Reponse = "57"
                        End If
                    End If
                    'Fin Spécifique EJ_POSTE
     
                    'Début spécifique Budget "15889"
                    If str_Id_Attribut = "15889" Then
                        Set frm = F_UTL_FORM()
                        If F_FRM_GEN_VALEUR_PAR_PROPRIETE(frm, "A_CBA_S_CODE_SERVICE") = "CENTRAL" Then
                            str_Reponse = "n"
                            boo_Obligatoire = False
                        End If
                    End If
                    'Fin spécifique Budget
     
                    If IsNull(str_Reponse) Then
                        Debug.Print "L'attribut ayant " & str_Nom_Champ & " pour code n'a pas d'identifiant de format dans le referencement."
                    Else
                        str_Id_Format = str_Reponse
                    End If
     
                    If F_SOC_VERIF_FORMAT(str_Valeur_Champ, str_Id_Format, str_Id_Attribut) = False Then
                        F_UTL_VERIF_TOUT = True
                        '                Else
                        '                    If Screen.ActiveForm.Name = "F_UTL_CREATION" Then ' TODO pour l'instant pour copier coller uniquement
                        '                        If F_SOC_VERIF_PRESENCE_LISTE(str_Valeur_Champ, str_Id_Attribut) = False Then
                        '                            F_UTL_VERIF_TOUT = True
                        '                        End If
                        '                    End If
                    End If
                End If
            End If
        End If
     
    Exit_F_UTL_VERIF_TOUT:
        On Error Resume Next
        Set frm = Nothing
     
        Exit Function
     
    Err_F_UTL_VERIF_TOUT:
        Select Case Err.Number
            Case 94
    '           Call F_UTL_MESSAGE("E009", 2, str_Nom_Champ)     ' A décommenter après le test suite ano 7919
     
            Case Else
     
     
                 Call F_UTL_MESSAGE("E001", 3, Err.Number, Err.Description, " M_SOC_UTL_CONTROLE_FORMAT::F_UTL_VERIF_TOUT")
        End Select
        Resume Exit_F_UTL_VERIF_TOUT
        Resume
     
    Err_F_UTL_VERIF_TOUT_GESTION_ERREUR:
        Select Case int_Numero_Err
            Case 1
                Debug.Print "ERREUR" & "L'attribut ayant " & str_Nom_Champ & " pour code n'a pas de valeur pour obligatoire dans le referencement."
                Call F_UTL_MESSAGE("E004", 2, str_Nom_Champ)
        End Select
        F_UTL_VERIF_TOUT = False
    End Function

    car le message d'erreur dit qu'il y a une variable objet ou une variable de bloc With non définie dans la procédure F_UTL_VERIF_TOUT.

  7. #7
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Je suis sceptique, car dans le code de cette fonction il n'y a pas de bloc With - End With.

    Or c'est dans un tel bloc que cela coince.

    Il faut donc trouver ce bloc with qui coince.


    PS : je constate que votre code fait appel à des procédure externe (CALL....)
    Peut-être faut-il chercher le bloc with là dedans?

    Pierre

  8. #8
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    C'est effectivement une piste interessante. Et il y a justement dans l'autre fonction qui est appelé et qui s'appelle F_UTL_MESSAGE, il y a un bloc With - End With. Voici le code de cette fonction.

    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    Function F_UTL_MESSAGE(ByVal str_code_message As Variant, str_nb_termes As Variant, Optional str_terme_1 As Variant = "", Optional str_terme_2 As Variant = "", Optional str_terme_3 As Variant = "", Optional str_terme_4 As Variant = "", Optional str_terme_5 As Variant = "")
    '*******************************************************************************
    '* F_UTL_MESSAGE
    '*
    '* paramètres : str_code_message         variant   (Code du message dans la table T_SOC_MESSAGE)
    '*              str_nb_termes            variant   (Nombre de termes du message)
    '*              str_terme_1              variant   (1er terme du message)
    '*              str_terme_2              variant   (2ème terme du message)
    '*              str_terme_3              variant   (3ème terme du message)
    '*              str_terme_4              variant   (4ème terme du message)
    '*              str_terme_5              variant   (5ème terme du message)
    '*
    '* rôle       : Affichage des messages contenus dans la table T_SOC_MESSAGE
    '*
    '*******************************************************************************
    '* Création     : 19/11/2008      : CSI
    '* Modification : <Date>     : <Trigramme modificateur>
    '*                                <description des modifications>
    '*******************************************************************************
    ' Les termes sont valorisés à vide ('"") pr défaut
    ' Ils s'intercalent entre les différents composants du message
    '
        On Error GoTo Err_F_UTL_MESSAGE
     
        Dim str_type_message As Variant
        Dim str_Lib_message As String
        Dim str_t1 As String
        Dim str_t2 As String
        Dim str_t3 As String
        Dim str_t4 As String
        Dim str_t5 As String
     
        Dim rcs As Recordset
     
        'Identification du type de message
        '---------------------------------
        ''call F_TRACE("M_SOC_UTL", "F_UTL_MESSAGE", "Debut")
        Select Case Left(str_code_message, 1)
            Case "E"
                str_type_message = vbCritical
            Case "W"
                str_type_message = vbExclamation
            Case "I"
                str_type_message = vbInformation
            Case "Q"
                str_type_message = vbQuestion
            Case "Y"
                str_type_message = vbYesNo
        End Select
     
        'Récupération du message
        '-----------------------
        Set rcs = CurrentDb.OpenRecordset("SELECT * FROM [T_SOC_MESSAGE] " & _
                                          "WHERE [A_MES_CODE]=""" & str_code_message & """;")
        If rcs.RecordCount = 0 Then
            MsgBox "Code Message incorrect!", vbCritical, "CHORUS"
            Exit Function
        End If
        With rcs
            .MoveFirst
            str_t1 = .Fields("A_MES_T1").value & ""
            str_t2 = .Fields("A_MES_T2").value & ""
            str_t3 = .Fields("A_MES_T3").value & ""
            str_t4 = .Fields("A_MES_T4").value & ""
            str_t5 = .Fields("A_MES_T5").value & ""
     
            'Construction du message
            '-----------------------
            Select Case str_nb_termes
                Case 0
                    Select Case str_code_message
                        Case "E001"
                            str_Lib_message = str_t1 & Err.Number & str_t2 & Err.Description & ")"
                        Case Else
                    End Select
                Case 1
                    str_Lib_message = str_t1 & str_terme_1
                Case 2
                    str_Lib_message = str_t1 & str_terme_1 & str_t2 & str_terme_2
                Case 3
                    str_Lib_message = str_t1 & str_terme_1 & str_t2 & str_terme_2 & str_t3 & str_terme_3
                Case 4
                    Select Case str_code_message
                        Case "E001"
                            str_Lib_message = str_t1 & Err.Number & str_t2 & Err.Description & str_t3 & str_terme_1 & str_t4 & str_terme_2
                        Case Else
                            str_Lib_message = str_t1 & str_terme_1 & str_t2 & str_terme_2 & str_t3 & str_terme_3 & str_t4 & str_terme_4
                    End Select
                Case 5
                    str_Lib_message = str_t1 & str_terme_1 & str_t2 & str_terme_2 & str_t3 & str_terme_3 & str_t4 & str_terme_4 & str_t5 & str_terme_5
            End Select
        End With
     
        F_UTL_MESSAGE = MsgBox(str_Lib_message, str_type_message, "CHORUS")
     
     
        ' TODO CST_PRM_LOG a pousser lorsque tout les env OK
        If F_UTL_PARAM_SPECIFIQUE(CST_PRM_LOG) = True Then
            Select Case Left(str_code_message, 1)
                Case "E", "W"
                    Call F_SOC_GEN_CREER_REQUETE_AJOUT_SPECIFIQUE("T_UTL_MESSAGE", CStr(str_code_message), str_Lib_message)
            End Select
        End If
     
        rcs.Close
        Set rcs = Nothing
        str_t1 = ""
        str_t2 = ""
        str_t3 = ""
        str_t4 = ""
        str_t5 = ""
        str_t1 = ""
        str_Lib_message = ""
        str_type_message = ""
     
    Exit_F_UTL_MESSAGE:
        ''call F_TRACE("M_SOC_UTL", "F_UTL_MESSAGE", "Fin")
        Exit Function
     
    Err_F_UTL_MESSAGE:
     
        Select Case Err.Number
            Case Else
                'Call F_UTL_MESSAGE("E001", 3, Err.Number, Err.Description, " M_SOC_UTL::F_UTL_MESSAGE")
                MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procedure F_UTL_MESSAGE de Module M_SOC_UTL"
        End Select
        ''call F_TRACE("M_SOC_UTL", Err.Description, "Fin")
        Resume Exit_F_UTL_MESSAGE
        Resume
    End Function

    Merci

    Mohamed

  9. #9
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Je peux me tromper, mais je pense que c'est dans la définition du recordset qu'il y a un problème.

    dans cette ligne là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rcs = CurrentDb.OpenRecordset("SELECT * FROM [T_SOC_MESSAGE] " & _                                       "WHERE [A_MES_CODE]=""" & str_code_message & """;
    Je ne maîtrise pas assez, mais peut-être devriez-vous déclarer le recordset avec le préfixe DAO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rcs As DAO.Recordset
    Pierre

  10. #10
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    Merci Pierre pour votre suggestion.
    Mais malheureusement, le message d'erreur est toujours là.Cependant est ce que vous pourriez m'expliquer votre idée ?
    Merci
    Mohamed

  11. #11
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 048
    Par défaut
    Bonjour,
    pour mieux cibler l'erreur, enlève temporairement la gestion d'erreur de la fonction incriminée donc en plaçant un commentaire devant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ' On Error GoTo Err_F_UTL_VERIF_TOUT
    Le debuggeur arretera alors l'exécution sur la ligne contenant l'erreur (mise en jaune)


  12. #12
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Pour ma part, je reste persuadé que l'instanciation du recordset n'est pas bonne.

    Je ne maîtrise pas assez loin de là, pour être sûr de ce que j'avance.

    Je vous livre une déclaration / instanciation qui fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim dbBase As DAO.Database ' objet database
        Dim rst As DAO.Recordset ' objet Recordset
    Set dbBase = CurrentDb
    Set rst = dbBase.OpenRecordset("tTablesAttachees", dbOpenDynaset)
    Par rapport à votre code je vois 3 différences. Le problème vient-il de l'une d'elle?

    1/ il y a d'abord la déclaration de la base, et son instanciation.
    Pour vous, on aurait quelque chose de semblable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim dbBase As DAO.Database ' objet database
    Set dbBase = CurrentDb
    2/ Ensuite, par rapport à recordset, j'ai mis l'indication "dbOpenDynaset"

    Cela donnerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Set rcs = dbBase.OpenRecordset("SELECT * FROM [T_SOC_MESSAGE] " & _
                                          "WHERE [A_MES_CODE]=""" & str_code_message & """;", dbOpenDynaset)

    Sincérement, je ne pense pas que cela joue beaucoup.


    Enfin, j'ouvre mon recordset à partir d'une table dont je passe le nom.
    Certe on peut le faire avec une chaîne SQL, mais la vôtre n'est pas fixe, elle comprend des éléments qui changent. Je ne sais pas si c'est bon.

    2 pistes :
    - déclarer une variable et y affecter la chaîne SQL. Ouvrir le recordset avec.
    - soit avec QueryDef, créer une requête à partir de votre chaîne SQL, et ouvrir le recrodset avec cette requête.


    En tout état de cause, je vous encourage à lire le tutoriel Définition et manipulation de données avec DAO

    Pierre

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Bonjour,

    @Mohamed_75 : Il serait judicieux de mettre un point d'arrêt sur la gestion d'erreur et de faire un Resume lorsqu'elle se produit.

    Comment veux-tu trouver l'erreur parmis les dizaines de lignes que vous fournissez ? à fortiori que quelqu'un la trouve sans possibilité d'exécution.

    Quand tu auras identifié la ligne tu l'indiqueras, toutes autres actions et hypotèses restent stériles. Cela te fait perdre du temps mais également aux personnes qui répondent.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  14. #14
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    Pierre, je vais exploiter votre piste sur le DAO. Sinon j'ai déja essayé de mettre un point d'arret et ça tombe sur une ligne de la fonction de départ F_UTL_VERIF_TOUT. Voici l'instruction qui a été mise en jaune.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_Reponse = DLookup("A_ATR_LONGUEUR", "[T_REF_ATTRIBUT]", "[A_ATR_ID]=""" & str_Id_Attribut & """")
    Personnellement, j'ai pas réussi à voir ce qui clochait avec cette ligne.

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    L'id de la table ne serait-il pas un entier long ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  16. #16
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    loufab, de quelle table parles-tu exactement ?

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Mais de celle de la ligne que tu as posté et qui semble bloquer.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  18. #18
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    Ben apparemment ce n'est que du tye texte.mais si tu me demandes pourquoi je sais pas.

  19. #19
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Le champ A_ATR_ID de la table T_REF_ATTRIBUT est de type Texte alors il n'y a pas de raison que ça bloque là.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  20. #20
    Membre averti
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Par défaut
    ben moi non plus, je comprends pas pourquoi cette ligne a été mise en jaune. C'est pour ça que j'ai préféré chercher l'erreur dans le bloc With qui se trouvait dans fonction F_UTL_MESSAGE et qui était appelé. là encore, j'arrive pas à voir où ça cloche.

Discussions similaires

  1. message d'erreur sous eclipse avec jdom
    Par kayenne77 dans le forum XML/XSL et SOAP
    Réponses: 13
    Dernier message: 03/07/2009, 14h11
  2. Message d'erreur : outlook.psd access denied
    Par juliokut dans le forum Outlook
    Réponses: 1
    Dernier message: 27/08/2008, 15h59
  3. [MySQL] Affichage de messages d'erreur sous Windows
    Par souadmaa dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/01/2008, 14h13
  4. Message d'erreur à l'ouverture access 2003
    Par jmd331 dans le forum IHM
    Réponses: 3
    Dernier message: 24/10/2007, 21h07
  5. message d'erreur sous l'utilitaire IBconsole
    Par vbcasimir dans le forum Outils
    Réponses: 6
    Dernier message: 05/01/2005, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo