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

IHM Discussion :

Erreur événement et formulaire dépendant [AC-2000]


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut Erreur événement et formulaire dépendant
    Bonjour,

    J'ai un souci avec un formulaire dépendant et je ne comprend pas ce qui ne va pas.
    J'ai un formulaire indépendant contenant une listbox. Si je double-clique sur un de ses éléments, un formulaire dépendant s'ouvre et ses champs sont remplis grâce à une requête. Pour cela, j'utilise DoCmd.OpenForm et une clause where en paramètre.
    Dans le formulaire dépendant, j'ai écrit du code dans la procédure Form_Open mais, selon le débogueur en mode Pas à pas détaillé, on ne rentre jamais dans cette procédure et ce code n'est jamais exécuté. Pourquoi ? Je ne sais pas ...
    J'ai aussi écrit du code dans la procédure Form_BeforeUpdate et il ne s'exécute pas non plus (pourtant si je change la valeur de l'un des champs et que je ferme le formulaire avec la croix, la mise à jour est faite !).
    Enfin, dans ce formulaire dépendant, j'ai un bouton servant à enregistrer les modifications dans la table (présent car avant ce formulaire était indépendant et j'essaie désespérément de le transformer en dépendant) mais lorsque je clique dessus, j'ai le message d'erreur suivant :
    "L'expression Sur clic entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure de même nom."

    Pour info, voici le code dans le formulaire indépendant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lstClients_DblClick(Cancel As Integer)
        DoCmd.OpenForm "frmFicheClient", , , "NumCl = " & Me.lstClients, , , "modif"
    End Sub
    Et ceux dont je vous ai parlé dans le formulaire dépendant :
    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
    Private Sub Form_Open()
        If Not IsNull(Me.OpenArgs) Then
            If Me.OpenArgs = "modif" Then
                Me.modifCl = True
                With Cl
                    .nom = Me.txtNomClient.Value
                    .prenom = Me.txtPrenomClient.Value
                    .adresse = Me.txtAdresseClient.Value
                    .cp = Me.txtCPClient.Value
                    .ville = Me.txtVilleClient.Value
                    .telephone = Me.txtTelClient.Value
                    .dateInsc = Me.txtDateInscClient.Value
                End With
                MsgBox ("Client double-cliqué : " & vbCrLf & Cl.nom & vbCrLf & Cl.prenom & vbCrLf & Cl.adresse & vbCrLf & Cl.cp & vbCrLf & Cl.ville & vbCrLf & Cl.telephone & vbCrLf & Cl.dateInsc)
                For Each ctrl In Me.Controls
                    Select Case ctrl.Name
                        Case "txtPrenomClient"
                            ctrl.Enabled = False
                        Case "txtDateNaissClient"
                            ctrl.Enabled = False
                        Case "txtDateInscClient"
                            ctrl.Enabled = False
                        Case "cmdAjoutClient"
                            ctrl.Enabled = False
                            ctrl.Visible = False
                        Case "cmdModifClient"
                            ctrl.Enabled = False
                            ctrl.Visible = True
                    End Select
                Next ctrl
            End If
        End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If Me.txtNomClient.Value <> Me.txtNomClient.OldValue Then
            MsgBox ("Ancienne valeur : " & Me.txtNomClient.OldValue & vbCrLf & _
                    "Nouvelle valeur : " & Me.txtNomClient.Value)
        Else
            MsgBox ("Valeurs identiques")
            Cancel = True
            Exit Sub
        End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmdModifClient_Click()
        'J'ai masqué avec un commentaire tout le contenu de cette procédure et le message d'erreur s'affiche quand-même ...
    End Sub
    Pouvez-vous m'aider svp ? Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Essaye une solution de contournement qui va prendre 5 mn environ:

    1. Crée une base vide
    2. Importe tous les objets de ta base à problème
    3. Fait un test dans la nouvelle base et vois si tu as toujours les problèmes.


    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    Merci pour ta réponse

    J'ai finalement trouvé ce qui n'allait pas ...
    Une erreur de débutant (je n'en suis pas loin mais quand-même là c'est trop) ...
    Il fallait voir qu'il manquait l'argument Cancel dans l'en-tête de la procédure Form_Open.
    A force de faire des tests sur les événements, je les changeais à la main et j'ai omis de remettre l'argument.
    Cette erreur ne se manifestait pas seulement pour l'événement Sur Clic, elle apparaissait aussi sur Open ou Avant MAJ.

    Conclusion : Lorsqu'on se retrouve face à ce type d'erreur, commencer par vérifier la syntaxe des en-têtes de procédures !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sous formulaire dépendant d'une liste déroulante : plantage
    Par Goldenduck4000 dans le forum Access
    Réponses: 3
    Dernier message: 23/05/2006, 09h06
  2. [débutant] Erreur dans les formulaires
    Par mytika dans le forum Access
    Réponses: 7
    Dernier message: 18/05/2006, 15h57
  3. [VBA] acces sous-formulaire dépendant
    Par menguygw dans le forum Access
    Réponses: 2
    Dernier message: 03/05/2006, 15h46
  4. Désactiver évènement sur formulaire
    Par zut94 dans le forum Access
    Réponses: 4
    Dernier message: 18/04/2006, 18h35
  5. Réponses: 9
    Dernier message: 17/11/2005, 14h58

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