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 :

Annulation enregistrement fermeture formulaire [AC-2007]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut Annulation enregistrement fermeture formulaire
    Bonjour a tous,

    Je voudrai savoir que est le code vba afin d'annuler les enregistrements dès l'appuie sur un bouton "Annuler & quitter"?

    Mon formulaire est composé de 3 listes déroulantes qui sont liées. J'ai essayé suite à la lecture de ce forum, dans la propriété du formulaire (avant MAJ) le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Confirmation" ) = VbNo Then 
     Me.Undo 
    End If 
    End Sub
    Le problème est que la demande se fait à chaque Modification.

    Quelqu'un aurait-il une solution?

    Je vous remercie

  2. #2
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.

    Voici un code qui me semble correspondre à ce que tu attends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Ton_bouton_Click()
    If MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Confirmation") = vbNo Then
        DoCmd.SetWarnings False 'désactive les avertissements
        DoCmd.RunCommand acCmdUndo
        DoCmd.SetWarnings True 'réactive les avertissements
        DoCmd.Close acForm "Ton_Formulaire"
    Else
        DoCmd.Close acForm "Ton_Formulaire"
    End If
    End Sub
    Et tu supprimes la procédure "Sub Form_BeforeUpdate".
    Cordialement.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Merci pour ta réponse rapide mais malheureusement cela ne change rien à ma situation.

  4. #4
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    malheureusement cela ne change rien à ma situation.
    Qu'est-ce qui ne change pas?
    Si tu supprimes le code "Avant mise à jour",
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Confirmation" ) = VbNo Then 
     Me.Undo 
    End If 
    End Sub
    la demande d'enregistrement ne se fera plus à chaque modification.
    Le message ne sera affiché que lorsque tu cliques sur ton bouton de fermeture et annulation éventuelle des modifications.
    Ou alors, j'ai mal compris ta demande; dans ce cas, peux-tu expliquer autrement?
    Cdt
    R.L.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Le code dans "Avant mise à jour" à bien été supprimé.

    Dès le clique sur le bouton "Annuler et quitter", mon formulaire se ferme mais les 3 valeurs de mes listes déroulantes reste quand même sauvegarder avec ton code.

    C'est pour cette raison que je note que cela ne change pas à ma situation.

  6. #6
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    OK.
    Quand tu cliques sur le bouton, tu as l'affichage du message "Voulez-vous enregistrer les modifications ?", et si tu cliques sur Non, le formulaire se ferme et les valeurs sont quand même enregistrées?
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Exactement. Le problème est la sélection de données dans mes listes déroulantes, j'ai l'impression que mes données sont figées

  8. #8
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Dis-en un peu plus sur ton formulaire (formulaire de saisie, lié à une table ou à une requête, destiné à quoi faire?) et sur tes listes déroulantes (Source contrôle, Contenu, Origine source, Valeur par défaut, code associé à tes listes). Tu dis qu'elles sont liées : comment?
    Le code que j'ai proposé fonctionne dans un formulaire de saisie et d'affichage, dont la source est une table, formulaire qui comporte des listes déroulantes : lorsque l'on ouvre un nouvel enregistrement, que l'on choisit des valeurs dans les listes déroulantes ou qu'on en encode dans les divers champs, le bouton permet d'annuler ce qui vient d'être entré (pas de ligne supplémentaire dans la table source du formulaire).
    Pour résoudre ton problème il faut en savoir plus sur ton formulaire lui-même.
    Cdlt,
    R.L.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  9. #9
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    En fait, j'ai un formulaire qui permet d'ajouter une maintenance sur appareil, le formulaire "d"ajout", est composé de de 3 liste déroulante et deux champs texte.
    la 1er liste déroulante correspond à une localisation (batiment), la deuxième correspond à un matériel et la troisième liste correspond à une référence ( j'ai fait cela car il y a les mêmes appareils dans les différents batiments et la quantité est différente ( par exemple, 1 dans batiment A , 3 dans batiment B,...));
    Les champs texte permet de mettre les détails. Ce formulaire est lié à une Table "Maint"

    Pour ton code, quand je l'essaye, dès la selection de la 1er liste déroulante et que je regarde dans ma table , l'ajout se fait sans enregistrer et des que je fait annulation, celle-ci ne s'efface pas.

  10. #10
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    Je viens de refaire une simulation, et, au passage, il y a une petite erreur dans mon code (mais je suppose que tu l'avais corrigée) : dans la commande de fermeture, il manque une virgule après les acForm.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DoCmd.Close acForm, "Ton_Formulaire"
    Dans ma simulation, où j'ai reproduit la séquence, quand je regarde le contenu de la table source du formulaire après modifications dans un enregistrement existant par le formulaire, si je réponds Non au message, les valeurs modifiées sont remplacées par les anciennes valeurs. Et si je fais cela dans un nouvel enregistrement, si je réponds Non au message, la ligne nouvelle est supprimée. Ce qui correspond à la méthode Undo. Cette méthode doit être appliquée avant la mise à jour du formulaire. Aurais-tu quelque part dans ton code, une action de mise à jour qui serait appliquée quand tu fais un choix dans ta liste déroulante? Cela expliquerait l'inefficacité du Undo!
    Cdlt,
    R.L.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  11. #11
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Oui je l'avais remarqué qui avait une erreur, mais je l'avais modifié.

    la seul chose que j'ai en mise à jour et un "me.refresh" après la sélection d'une valeur dans la liste déroulante, est-ce que la cause serait là?

  12. #12
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Je viens d'ajouter un me.refresh après mise à jour d'une liste déroulante de mon formulaire, et dans ce cas, j'ai effectivement le même résultat que toi! Dans ce cas, l'enregistrement dans lequel on travaille est mis à jour, et le Undo ne peut avoir un effet que sur ce qui a été fait après le dernier Me.Refresh.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  13. #13
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    OK merci . Aurais-tu une solution pour pouvoir eviter cela?

  14. #14
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Je viens essayer d'enlever les "me.refresh" dans ma base, la fonction "me.undo" fonctionne bien, mais par contre quand je sélectionne une donnée dans la première liste déroulante, les autres se mettent à jour, mais par contre quand je modifie une donnée (en cas d'erreur) rien se met à jour et le "undo" ne fonctionne plus

  15. #15
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bien. On progresse quand même!
    Si j'ai bien compris, tu utilises en général ce formulaire pour ajouter des enregistrements. C'est cela?
    Quand tu dis que tu modifies une donnée, c'est dans un enregistrement existant parce qu'il y a une erreur dans cet enregistrement? Ou bien dans un nouvel enregistrement, après avoir déjà entré des valeurs dans les listes déroulantes et dans les deux champs texte? Par exemple, tu fais un autre choix dans une liste déroulante?
    Quelle est la source du contenu de tes listes déroulantes : par exemple, pour les bâtiments, ta liste va chercher les différents bâtiments dans une table bâtiments?
    Quand tu parles de mise à jour des autres listes, c'est bien le contenu de ces autres listes qui se met à jour? De quelle manière as-tu programmé la mise à jour des listes?
    Cdlt.
    R.L.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  16. #16
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Bien. On progresse quand même!
    Si j'ai bien compris, tu utilises en général ce formulaire pour ajouter des enregistrements. C'est cela?
    Oui c'est bien cela.
    Quand tu dis que tu modifies une donnée, c'est dans un enregistrement existant parce qu'il y a une erreur dans cet enregistrement? Ou bien dans un nouvel enregistrement, après avoir déjà entré des valeurs dans les listes déroulantes et dans les deux champs texte? Par exemple, tu fais un autre choix dans une liste déroulante?
    C'est quand je fait un autre choix dans la liste déroulante, par exemple, je me suis trompé,ce n'est pas lappareil "A" mais "B".
    Quelle est la source du contenu de tes listes déroulantes : par exemple, pour les bâtiments, ta liste va chercher les différents bâtiments dans une table bâtiments?
    Mes trois listes déroulantes ont la meme source, c'est pour effectuer un filtre. (peux-être là mon erreur)
    Quand tu parles de mise à jour des autres listes, c'est bien le contenu de ces autres listes qui se met à jour? De quelle manière as-tu programmé la mise à jour des listes?
    Cdlt.
    R.L.
    Oui, c'est bien le contenu des autres liste, la façon que j'ai effectué est comme j'ai noté ci-dessus. mes listes ont la meme source, et j'ai ajouté comme paramètre (à chaque liste déroulante )Après MAJ "Me.refresh".

  17. #17
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    OK.
    Essaie ceci : à la place du me.refresh sur "Après mise à jour", utilise une procédure "sur changement" de ta première liste. Remplace ton code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub PremièreListe_Change()
    Me.DeuxièmeListe.Requery
    Me.TroisièmeListe.Requery
    End Sub
    Ainsi, ce n'est pas tout le formulaire qui se met à jour, mais seulement les listes.
    Si ça ne règle pas le problème, on cherchera autre chose.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  18. #18
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    Merci pour ta réponse,

    ceci fonctionne si je sélectionne la 1er valeur, de ma première liste déroulante, par contre si je sélectionne une autre valeur, ma troisième liste se met pas à jour (aucune valeur)

  19. #19
    Membre du Club
    Homme Profil pro
    Technicien lean
    Inscrit en
    Avril 2011
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien lean
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 220
    Points : 66
    Points
    66
    Par défaut
    J'ai trouvé la solution
    j'ai mis dans la première:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub PremièreListe_Change()
    Me.DeuxièmeListe.Requery
    End Sub
    et dans la deuxième :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub DeuxièmeListe_Change()
    Me.TroisièmeListe.Requery
    End Sub
    Maintenant cela fonctionne bien.

    Je te remercie RobiPMS pour ton aide

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

Discussions similaires

  1. Enregistrements et Fermeture formulaire
    Par ThieBEN dans le forum IHM
    Réponses: 3
    Dernier message: 01/08/2007, 14h37
  2. Annuler fermeture formulaire
    Par willytito dans le forum IHM
    Réponses: 7
    Dernier message: 15/01/2007, 15h28
  3. Réponses: 6
    Dernier message: 02/05/2006, 14h24
  4. Comment annuler la fermeture d'un formulaire?
    Par charleshbo dans le forum Access
    Réponses: 7
    Dernier message: 13/04/2006, 17h45
  5. Réponses: 3
    Dernier message: 15/12/2005, 09h44

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