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 Discussion :

Réponse boite de dialogue prédéfinie "Enregistrer les modifications"


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Réponse boite de dialogue prédéfinie "Enregistrer les modifications"
    Bonjour,

    J'ai créé un formulaire dans Word qui intègre du code dont une partie s'exécute à la fermeture du fichier (procédure sub document_close).

    Problème : le code s'exécute même si l'utilisateur répond Non à la boite de dialogue "Voulez-vous enregistrer les modifications effectuées ?", et avant même que l'utilisateur ait répondu !
    J'ai donc besoin de récupérer la réponse de l'utilisateur pour bloquer l'exécution. Comment faire ?
    J'ai tenté de biaiser en utilisant une Msgbox, mais la boite prédéfinie apparait quand même après la mienne !

    2e question : comment fermer sans enregistrer ?
    Je suis déjà dans une procédure document_close et si je mets une méthode close je rappelle ma procédure en cours...

    Merci d'avance de votre aide !

    Catherine

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    essai quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Document_Close()
    Dim rep As Integer
    rep = MsgBox("Sauvegarde du document", vbYesNo)
     
     If rep = vbYes Then
       'On Sauve
       ThisDocument.Save
     Else
       'Abandon
       ThisDocument.Saved = True
    End If
    End Sub

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse.

    Tout se passe bien si je réponds oui à la msgbox : le code s'exécute et la boite prédéfinie "enregistrer les modifications" n'apparait pas.

    Par contre si je réponds non, la boite prédéfinie apparait quand même et c'est c'est elle qui prend le pas sur la msgbox : si j'y réponds oui, les modif sont enregistrées même si j'ai répondu non à la msgbox.

    Catherine

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par catherineFR27
    Merci de ta réponse.

    Tout se passe bien si je réponds oui à la msgbox : le code s'exécute et la boite prédéfinie "enregistrer les modifications" n'apparait pas.

    Par contre si je réponds non, la boite prédéfinie apparait quand même et c'est c'est elle qui prend le pas sur la msgbox : si j'y réponds oui, les modif sont enregistrées même si j'ai répondu non à la msgbox.

    Catherine
    Correction après nouveaux tests : la boite de dialogue prédéfinie apparait même quand je réponds OUI à la msgbox perso !

    Aucune idée du nom que peut porter cette fameuse boite prédéfinie svp ?

    Merci !

    Catherine

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Et si on désactive carrement l'alerte pour la remplacer par ton MsgBox ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.displayalerts = false

    Penser après a remettre le code = true sinon toutes les alertes excel seront bloquées.

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    C'est sans effet... déjà testé.

    Citation Envoyé par Phenx
    Et si on désactive carrement l'alerte pour la remplacer par ton MsgBox ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.displayalerts = false

    Penser après a remettre le code = true sinon toutes les alertes excel seront bloquées.
    En fait la boite de dialogue prédéfinie s'affiche qu'elle que soit la valeur de la propriété activedocument.saved (j'ai rajouté des msgbox en cours de route pour l'afficher).
    Word doit utiliser autrechose pour tester l'existence de modifications dans le fichier...

    Catherine

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci à vous pour vos réponses.
    Mes divers essai montrent que le code ci-dessous proposé par bbil :

    Citation Envoyé par bbil
    essai quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Document_Close()
    Dim rep As Integer
    rep = MsgBox("Sauvegarde du document", vbYesNo)
     
     If rep = vbYes Then
       'On Sauve
       ThisDocument.Save
     Else
       'Abandon
       ThisDocument.Saved = True
    End If
    End Sub
    fonctionne dans un document word vierge, mais pas dans mon formulaire contenant 2 tableaux et une petite vingtaine de contrôles activeX type textbox, checkbox...
    Je continue donc mon enquête.

    Merci encore de vos suggestions.

    Catherine

Discussions similaires

  1. [XL-2007] Boite de dialogue prédéfinie
    Par Mat32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2013, 18h02
  2. Attendre réponse boite de dialogue affichée avec option False
    Par Deniswetz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2011, 20h45
  3. Réponses: 1
    Dernier message: 13/09/2010, 06h22
  4. Modifier une boite de dialogue prédéfinie
    Par xchoeur dans le forum C++Builder
    Réponses: 0
    Dernier message: 31/05/2008, 01h35
  5. [DOM] comment enregistrer les modifs?
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 26
    Dernier message: 30/07/2004, 10h56

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