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 :

Peut-on éviter le msg "Voulez-vous enregistrer les modifications apportées à la structure de Formulaire «FO" ?


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 285
    Par défaut Peut-on éviter le msg "Voulez-vous enregistrer les modifications apportées à la structure de Formulaire «FO" ?
    Bonjour,

    Je désire activer le bouton Fermeture (x) en haut à droite si c'est un formulaire ouvert en mode Feuille de données et désactiver s'il est ouvert en mode formulaire, pour ce faire j'ai construit un code qui fonctionne très bien mais j'obtiens toujours le message suivant "Voulez-vous enregistrer les modifications apportées à la structure de Formulaire «FO_CLASSEMENT» ?". Est-il possible d'éviter d'avoir ce message.

    J'ai essayé avec Docmd.setwarnings false mais ça ne fonctionne pas.

    J'ai aussi dû ouvrir le formulaire en mode création avant la modification, on me le demandait.

    Le formulaire s'active avec 2 boutons, le premier pour le mode formulaire et le deuxième pour le formulaire en mode feuille de données, à ce moment le bouton a un "f" supplémentaire à son nom, exemple pour ouvrir le formulaire classement, bou_classement ouvre en mode formulaire et bou_classement_f ouvre en mode feuille de données.

    Voici la partie de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    440     DoCmd.OpenForm str_formulaire, acDesign, , , , acHidden
    450     int_nbr_form_ouvert = Forms.Count
    460
    470     If str_bouton_partie(int_bouton_partie_dernier) = "f" Then
    480        Forms(int_nbr_form_ouvert - 1).CloseButton = True
    490        DoCmd.OpenForm str_formulaire, acFormDS, , , acFormReadOnly
    500     Else
    510        Forms(int_nbr_form_ouvert - 1).CloseButton = False
    520        DoCmd.OpenForm str_formulaire, acNormal
    530     End If
    Merci de l'attention que vous porterez à ma discussion.

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 996
    Par défaut
    bonsoir,
    le plus simple serait de fermer le formulaire après avoir effectué la modification en mode Design avant de rouvrir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ' ...
    If str_bouton_partie(int_bouton_partie_dernier) = "f" Then
         Forms(int_nbr_form_ouvert - 1).CloseButton = True
         ' on ferme le formulaire en enregistrant les modifications
         DoCmd.Close acForm, str_formulaire, acSaveYes
         DoCmd.OpenForm str_formulaire, acFormDS, , , acFormReadOnly
    '...

  3. #3
    Membre éclairé
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 285
    Par défaut
    Bonjour tee_grandbois,

    Tout d'abord merci de votre réponse.

    J'ai trouvé que c'était une bonne idée, je l'ai alors appliqué, ça fonctionne très bien pour le mode formulaire mais j'ai le même message pour le formulaire ouvert en mode feuille de données c'est-à-dire la partie sous le Else.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    440     DoCmd.OpenForm str_formulaire, acDesign, , , , acHidden
    450     int_nbr_form_ouvert = Forms.Count
    460
    470     If str_bouton_partie(int_bouton_partie_dernier) = "f" Then
    480         Forms(int_nbr_form_ouvert - 1).CloseButton = True
                DoCmd.Close acForm, str_formulaire, acSaveYes
    490         DoCmd.OpenForm str_formulaire, acFormDS, , , acFormReadOnly
    500     Else
    510         Forms(int_nbr_form_ouvert - 1).CloseButton = False
                DoCmd.Close acForm, str_formulaire, acSaveYes
    520         DoCmd.OpenForm str_formulaire, acNormal
    530     End If
    Merci.

  4. #4
    Membre éclairé
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 285
    Par défaut
    Bonjour tee_grandbois,

    J'ai vérifié le type d'objet en pensant que la fermeture peut être comme l'ouverture, exemple acformds pour feuille de données, mais je n'ai pas trouvé ce que je pourrais placer comme type.

    Auriez-vous une idée ?

    Merci.

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 996
    Par défaut
    ça voudrait dire que le formulaire est modifié dans une autre partie du code ...

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 996
    Par défaut
    J'ai vérifié le type d'objet en pensant que la fermeture peut être comme l'ouverture, exemple acformds pour feuille de données, mais je n'ai pas trouvé ce que je pourrais placer comme type.
    pas tout compris

  7. #7
    Membre éclairé
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 285
    Par défaut
    Bonjour tee_grandbois,

    En fait, comme mentionné au début de la discussion, j'ai 2 boutons, bou_classement qui ouvre le formulaire FO_CLASSEMENT en mode formulaire et un autre bouton bou_classement_f qui ouvre le même formulaire en mode feuille de données. Dans la 1ière partie du IF, j'ouvre en mode formulaire en désactivant la fermeture par le (x) et dans le Else j'ouvre le même formulaire ne mode feuille de données mais j'active la fermeture par le (x). Comme j'ai déjà mentionné, tout cela fonctionne très bien.

    Dans la solution que vous m'avez fourni, si je ferme le formulaire, le code sous le IF, tout semble fonctionner mais pour la partie sous le ELSE j'ai le même message.

    Dans le docmd.openform, il y a le type acform pour le formulaire et le type acformds pour la feuille de donnée.

    Lorsque j'ai vu que ça ne fonctionnait pas pour la partie sous le ELSE, j'ai alors cherché docmd.close, s'il y avait un type comme pour l'ouverture, genre acformds mais je n'en ai trouvé aucun, je suis donc dans une impasse à moins que vous ayez raison et que mon code contienne des modifications de formulaire ailleurs, ce que je vais vérifier de ce pas.

    Merci, j'espère être plus précis que dans mon autre message.

  8. #8
    Membre éclairé
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 285
    Par défaut
    Bonjour,

    Je ne sais pas ce qui se passe avec moi aujourd'hui mais je crois que je suis mêlé,

    La partie IF est pour le formulaire ouvert en mode feuille de données et ELSE pour le mode formulaire.

    Merci.

  9. #9
    Membre éclairé
    Homme Profil pro
    informaticien retraité
    Inscrit en
    Mai 2017
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : informaticien retraité

    Informations forums :
    Inscription : Mai 2017
    Messages : 285
    Par défaut
    Bonjour tee_grandbois,

    Après vérifications, vous aviez raison, j'avais une procédure Form_Current() qui contenait une modification au formulaire.

    Merci pour votre assistance.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/09/2017, 10h46
  2. Réponses: 3
    Dernier message: 29/05/2012, 16h25
  3. Eviter le message "Voulez-vous enregistrer les modifications."
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2009, 14h44
  4. Réponses: 1
    Dernier message: 07/09/2007, 10h30
  5. Réponses: 0
    Dernier message: 06/09/2007, 19h56

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