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

Macros et VBA Excel Discussion :

MsgBox dans Workbook.BeforeClose ne fonctionne pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur calcul structure
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur calcul structure
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut MsgBox dans Workbook.BeforeClose ne fonctionne pas
    Bonjour le forum,

    Je viens de finir un petit outil Excel qui possède une page d’accueil qui s'appelle "Country" qui permet de sélectionner un pays dans une liste puis lorsque le pays est choisi, la feuille se masque pour faire apparaître d'autres feuilles à remplir en fonction du pays sélectionné ("ASCE 7-10","SANS",...). Jusque là tout va bien. Ensuite, je souhaite que lorsque l'utilisateur décide de fermer le classeur excel, une série d'actions s'exécutent :

    1) Une msgbox apparaît lorsqu'il clique sur la croix pour fermer le classeur : "Etes vous sure de vouloir fermer ce classeur?" Si non on annule la fermeture et rien ne change. Si oui alors,
    2) Fermer toutes les feuilles activent et faire apparaître uniquement la page d'accueil "Country"
    3) Fermer le classeur sans enregistrer

    Avec ma macro je n'ai pas tout à fait cela mais plutôt :

    1) La msgbox apparaît mais lorsque je clique sur "non" le classeur se ferme quand même sans pour autant exécuter la macro "oui". Si je clique sur oui,
    2) la feuille "Country" apparaît et les autres feuilles sont bien masquées mais j'ai à nouveau la msgbox qui me redemande si je suis bien sure de vouloir fermer le classeur
    3) Aucun soucis le classeur se ferme sans enregistrer

    Pour résumer, j'ai des soucis avec le bouton "non" de la msgbox qui ne fait pas l'action souhaitée et j'ai un souci avec le fait qu'il me demande deux fois de suite si je veux fermer le classeur.

    voici le code qui se situe dans ThisWorkbook
    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
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    If MsgBox("Are you sure you want to close this document?", 36, "WARNING") = vbNo Then
    Cancel = True
    Else
    Application.ScreenUpdating = False
        ThisWorkbook.Unprotect Password:="ExoPass"
     
        Sheets("ASCE 7-10").Unprotect Password:="ExoPass"
        Sheets("SANS").Unprotect Password:="ExoPass"
     
        Sheets("Country").Visible = True
     
        Sheets("ASCE 7-10").Visible = False
        Sheets("SANS").Visible = False
        Sheets("SANS Wind&Seismic").Visible = False
        Sheets("SANS Information").Visible = False
        Sheets("ASCE Information").Visible = False
     
        ThisWorkbook.Protect Password:="ExoPass"
        Application.ScreenUpdating = True
     
    ActiveWorkbook.Saved = True
    ActiveWorkbook.Close savechanges:=False
     
    End If
     
    End Sub
    J'espère être assez claire. Merci d'avance pour votre aide.

    Julie

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Puisque tu ne veux pas sauvegarder, le fait de masquer ou non les feuilles ne changera rien.
    Ces actions ne seront pas pris en compte.
    Il vaudrait mieux afficher/masquer et protéger l'ouverture, je pense...

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Commence par remplacer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Close savechanges:=False
    Par ça :
    Sinon, c'est le serpent qui se mord la queue : tu essayes de fermer un classeur qui est déjà en train de se fermer donc tu relances la macro BeforeClose alors qu'elle est déjà en train de s'exécuter.
    Ton Saved = True suffit à empêcher le message "voulez-vous sauvegarder ?".

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieur calcul structure
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur calcul structure
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut
    Merci pour votre réactivité, alors effectivement en remplaçant par cancel = true je solutionne le fait que la macro s’exécutait deux fois et la fermeture se passe très bien.

    Par contre j'ai toujours le problème si je clique sur "non" lorsque je demande si je suis sure de vouloir fermer le document. Cette fois j'ai le message "voulez vous enregistrer les modifications apportées au document?" qui apparaît or je souhaite que la macro de fermeture s'annule si je dis non et je ne veux pas voir apparaître ce message.

    Julie

Discussions similaires

  1. Lien html dans flash qui ne fonctionne pas?
    Par zuzuu dans le forum Flash
    Réponses: 5
    Dernier message: 08/12/2008, 17h01
  2. [DW MX] lien courriel dans firefox qui ne fonctionne pas
    Par xataka dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 02/11/2007, 14h54
  3. fonction onClick= dans IE6 ok Firefox fonctionne pas
    Par rejy_l'Édimestre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/08/2007, 21h58
  4. padding dans un table ne fonctionne pas sur IE
    Par J0r_x dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 05/03/2007, 11h15
  5. Réponses: 3
    Dernier message: 26/01/2006, 13h11

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