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 :

Annuler la fermeture d'un formulaire de saisie


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 56
    Points : 46
    Points
    46
    Par défaut Annuler la fermeture d'un formulaire de saisie
    Bonjour à tous !

    Voici ce que je voudrais faire : sur un formulaire de saisie, à la fermeture (par bouton ou avec le X de la fenêtre), afficher une boite de dialogue (voulez vous enregistrer ?) avec 3 boutons :

    - oui : dans ce cas on ferme le formulaire en enregistrant les valeurs dans la table

    -non : dans ce cas on ferme le formulaire sans enregistrer les valeurs dans la table

    - annuler : dans ce cas on revient au fomulaire sans le fermer (et si possible on conserve ce qui a été saisi...)


    J'ai réussi, avec l'aide des forums(http://www.developpez.net/forums/d12...re-formulaire/) , à faire fonctionner les deux premiers boutons oui et non de la manière 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
    Private Sub Form_beforeupdate(Cancel As Integer)
     
    Select Case MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNoCancel, "Confirmation")
    Case vbYes
    GoTo fin
     
    Case vbNo
    Me.Undo
     
    Case vbCancel
    Cancel = True
     
    End Select
    fin:
    End Sub
    Mon problème c'est lorsque je clique sur "annuler"... Dans ce cas Access me renvoie un message d'erreur comme quoi il ne peut pas enregistrer de valeurs pour l'instant, je dois donc choisir si je souhaite ou non fermer le formulaire. Je pensais qu'avec le "Cancel" prenant la valeur "True" dans mon évènement "beforeupdate" annulait la fermeture...

    Auriez vous des pistes pour résoudre ce petit souci, et contourner ce message d'erreur ?

    D'avance merci.

    Bien cordialement,

    Pierre

    (PS je suis sous access 2007...)

  2. #2
    Membre habitué Avatar de miamou
    Inscrit en
    Novembre 2009
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 161
    Points : 178
    Points
    178
    Par défaut
    Bonjour,
    essayes ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Case vbCancel
    DoCmd.SetWarnings False
    Cancel = True

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Bonsoir miamou,

    cela ne change pas, j'ai toujours ce message d'access me demandant si je souhaite toujours fermer mon formulaire sans enregistrer mes données.

    Merci quand même !

    Pierre

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 338
    Points : 19 573
    Points
    19 573
    Billets dans le blog
    65
    Par défaut
    Salut,

    tu peux essayer un envoi de la touche entrée :

    Pour passer le message d'erreur et revenir à ton formulaire:

    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
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     
    Select Case MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNoCancel, "Confirmation")
    Case vbYes
    GoTo fin
     
    Case vbNo
    Me.Undo
     
    Case vbCancel
    Cancel = True
    SendKeys "~"
     
    End Select
    fin:
     
    End Sub
    Tu peux aussi éliminer la petite croix en haut à droite et créer un bouton fermer avec le code concerné

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Merci User pour ta réponce mais cela n'a pas l'air de fonctionner chez moi. Chose curieuse, cela m'active le verrouillage majuscule, mais effectivement la fenêtre n'apparait plus...

    Cependant cela me remet à 0 tous les champs de formulaire...

    Problème toujours ouvert donc...

    Merci !

    Pierre

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2015, 09h48
  2. [AC-2007] Annulation enregistrement fermeture formulaire
    Par maximilien59 dans le forum IHM
    Réponses: 18
    Dernier message: 20/04/2012, 11h42
  3. [XL-2007] Activer protection feuille après fermeture de la grille de saisie Excel (formulaire)
    Par petitorco dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/06/2011, 11h54
  4. Réponses: 1
    Dernier message: 13/06/2007, 17h20
  5. Comment annuler la fermeture d'un formulaire?
    Par charleshbo dans le forum Access
    Réponses: 7
    Dernier message: 13/04/2006, 17h45

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