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 :

"Impossible d'éxécuter cette action pendant le traitement d'un évènement de formulaire ou d'état" [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistan Process
    Inscrit en
    Octobre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistan Process
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut "Impossible d'éxécuter cette action pendant le traitement d'un évènement de formulaire ou d'état"
    Bonjour à tous,

    Je viens en à nouveau en dernier recours demander de l’aide car je ne trouve pas de solution malgré mes recherches effectuées sur Google. Il y a une personne qui à posé la même question sur ce site que moi mais la solution proposée n'est pas complète (ou je ne sais pas l'appliqué).

    Je reste un débutant en VBA, même si certains aspects sont assez compréhensible, d’autre le sont beaucoup moins.

    J'ai un formulaire qui permet, évidemment, de remplir certaines données. A son ouverture je teste 2 choses:
    1. S'il l'entrée dans la table à une date.
    2. S'il n'y a pas de date, je vérifie si le numéro (dit "numéro d'arrivage") existe


    S'il n'y a pas de numéro d'arrivage, alors j'affiche un MsgBox qui indique que le numéro n'existe pas.
    Ensuite, j'aimerai qu'Access ferme automatiquent le formulaire après que cette box soit fermée.

    Voici le code:
    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
    Private Sub Form_current()
     
        Dim StDocName As String
        Dim MssgBox As Variant
     
        StDocName = "Administration"
     
    If Not IsNull(Me.Date_Modification) Then
     
        ElseIf Not IsNull(Me.N°_Arrivage) Then
            Me.Date_Modification.Value = Date
     
        Else:
            Beep
            MssgBox = MsgBox("Le numéro d'arrivage est inconnu!", vbOKOnly + vbExclamation, "Attention!")
            DoCmd.Close acForm, StDocName
     
    End If
     
    End Sub
    Et c'est là que ça coince, Access m'indique ""Impossible d'éxécuter cette action pendant le traitement d'un évènement de formulaire ou d'état" comme erreur. Bon, je comprends la phrase, c'est déjà ça !

    Alors, j'ai essayé de faire appel à une fonction en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     If Not IsNull(Me.Date_Modification) Then
     
        ElseIf Not IsNull(Me.N°_Arrivage) Then
            Me.Date_Modification.Value = Date
     
        Else:
            Beep
            MssgBox = MsgBox("Le numéro d'arrivage est inconnu!", vbOKOnly + vbExclamation, "Attention!")
            Call ForceClose
     
    End If
    La fonction se trouve dans un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Function ForceClose()
     
    Dim StDocName As String
    StDocName = "Administration"
     
    DoCmd.Close acForm, StDocName
     
    End Function
    Mais là, même message d’erreur.
    Donc, si je comprends bien, il faut attendre que l’ouverture finisse avant de vouloir fermer le formulaire. Ok, mais comment faire ?

    Quelqu'un parlait d'un "DoEvents" mais je ne sais pas comment l'appliquer et où?

    Merci d’avance

  2. #2
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Salut,
    Et si tu mets ton code sur Form_Open au lieu de Form_Current avec un Cancel = True à la place de ton docmd.close ?
    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
    Private Sub Form_Open(Cancel As Integer)
     
        Dim StDocName As String
        Dim MssgBox As Variant
     
        StDocName = "Administration"
     
    If Not IsNull(Me.Date_Modification) Then
     
        ElseIf Not IsNull(Me.N°_Arrivage) Then
            Me.Date_Modification.Value = Date
     
        Else:
            Beep
            MssgBox = MsgBox("Le numéro d'arrivage est inconnu!", vbOKOnly + vbExclamation, "Attention!")
            Cancel = True
     
    End If
     
    End Sub
    Fred
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistan Process
    Inscrit en
    Octobre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistan Process
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Merci Texas2607 pour ta réponse,

    J'ai testé ta solution et à la fin, il m'ouvre le formulaire en mode création avec le message d'erreur "L'action OpenForm à été annulée"

    Quelques questions, quelle est la différence entre "Form_current" et "Form_Open"?

    A quoi sert la Variable (si c'en est une?) dans les paranthèses après "Form_Open"?

    Merci.

    Edit: Non, erreur de ma part, il n'ouvre pas le formulaire en mode création, mais affiche bien l'erreur "L'action OpenForm à été annulée"

    Edit2 : Ce qui serait bien, c'est qu'il n'affiche pas cet erreur ("L'action OpenForm à été annulée"), est-il possible déviter d'afficher ses erreurs?

  4. #4
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    J'ai fais un test vite fait avec une table vide et après le message je n'ai pas l'ouverture du formulaire ni de message d'erreur, et si je mentionne une date alors ouverture normale.

    En info :
    Form_Open : http://msdn.microsoft.com/fr-fr/libr...ffice.15).aspx
    Form_Current : http://msdn.microsoft.com/fr-fr/libr...ffice.15).aspx

    Fred
    Fichiers attachés Fichiers attachés
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistan Process
    Inscrit en
    Octobre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistan Process
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    En faite, mon formulaire est lié à une requête qui, elle même est évidemment lié à ma table de destination finale des données que j'insére dans le formulaire...
    La requête entre le formulaire et la table est une requête paramétrée.

    C'est p-e ça la cause du message d'erreur?

    Edit :
    Non, en faite, je pense que l'erreur d'openForn est du ce formulaire est ouvert depuis un bouton d'un autre formulaire.
    J'appuie sur le bouton, le formulaire ne s'ouvre pas grâce à ton code qui vérifie directement si le numéro d'arrivage existe et ensuite comme il n'existe pas il n'ouvre pas le formulaire et l'erreur se passe sur le bouton car il ne s'est pas ouvert. Je ne sais pas si je me fait comprendre?

    Edit 2: Pendant que j'écrivais l'edit, j'ai essayé mes dires et effectivement c'est ça!
    J'ai donc enlevé la gestion d'erreurs du bouton qui ouvre le formulaire et plus de message d'erreurs !
    Super !

    Ca fonctionne !

    Merci à toi Texas2607!

    P.S : Désolé, je n'ai pas réussi à ouvrir ton fichier Access.

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

Discussions similaires

  1. [SP-2007] [WSS3] Tentative de connexion : Impossible de terminer cette action
    Par enimren dans le forum SharePoint
    Réponses: 3
    Dernier message: 29/02/2012, 18h36
  2. [AC-2003] "Impossible d'exécuter cette action pour l'instant"
    Par Richard_35 dans le forum Access
    Réponses: 14
    Dernier message: 20/10/2010, 15h25
  3. Réponses: 1
    Dernier message: 25/08/2006, 14h21
  4. Réponses: 11
    Dernier message: 12/07/2006, 23h09
  5. [GNU Pascal] [GRX] Effectuer des actions pendant un temps d'arrêt (GRSleep)
    Par the_guitariste dans le forum Autres IDE
    Réponses: 3
    Dernier message: 03/04/2004, 18h21

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