Boîte de dialogue à la fermeture du fichier

Marie-CoinCoin

XLDnaute Nouveau
Bonjour,
Je souhaiterais créer une boîte de dialogue qui autoriserait ou non la fermeture d'un fichier excel. :confused:
En clair, je veux que lorsque l'utilisateur ferme le fichier, une boîte de dialogue s'affiche en disant "avez-vous bien complété l'onglet X?" avec 2 boutons, Oui, qui autoriserait donc la fermeture du fichier, et Non, qui laisserait le fichier ouvert pour que l'utilisateur puisse compléter cet onglet.
Je sais pas du tout si c'est faisable et/ou facile à faire mais je tente ma chance ici... :D
Merci !
 

camarchepas

XLDnaute Barbatruc
Re : Boîte de dialogue à la fermeture du fichier

Bonjour,
Si tu souhaites verrouiller davantage :
il faut utiliser l'évenementiel beforeclose du thisworkbook et mettre cancel à true tant que la validation de sortie n'est pas confirmé , cela traitera aussi la fermeture via la croix rouge de fermeture fenêtre.
 

Marie-CoinCoin

XLDnaute Nouveau
Re : Boîte de dialogue à la fermeture du fichier

@jofdm : euh, ça fonctionne pas chez moi, je dois avoir un truc décoché qq part, il me dit "Ce classeur a perdu son projet VBA, ses contrôles ActiveX et d'autres fonctionnalités liées à la programmabilité." Tu saurais dire quoi faire ?

@camarchepas : j'suis pas très douée en prog, alors j'ai pour ainsi dire strictement rien compris à ce que tu as dit... :confused: Ceci dit je pense que ta solution va m'intéresser, j'aurais voulu que le truc marche en fermant le fichier par la croix de fermeture de fenêtre, sans rajouter un bouton, l'idée est vraiment qu'on puisse pas sortir du fichier sans répondre oui à la question...
 

Marie-CoinCoin

XLDnaute Nouveau
Re : Boîte de dialogue à la fermeture du fichier

J'ai toutes les macros activées donc ça doit pas venir de là...
Ceci dit, j'ai un second pb, en cherchant dans l'aide, j'ai trouvé en partie ce que voulait dire camarchepas mais j'ai Visual Basic qui est grisé... Une idée du pb ? (sachant que c'est au bureau, c'est pas impossible qu'un truc soit pas activé pour raisons de sécurité, si c'est ça, j'appellerai mon admin...)
 

camarchepas

XLDnaute Barbatruc
Re : Boîte de dialogue à la fermeture du fichier

Voici un fichier Exemple,

Attention les puristes du forum, ce fichier démontre l'utilisation des évenementiels thisworkbook beforeclose.

Donc si vous ne désiréz pas avoir cette macro qui ce déclenche, ouvrez le fichier sans exécuter les macros.:D:D:D
 

Pièces jointes

  • SortieControlée.xls
    30.5 KB · Affichages: 173

Marie-CoinCoin

XLDnaute Nouveau
Re : Boîte de dialogue à la fermeture du fichier

@camarchepas : chez moi c'est ok, et c'est exactement ça que je veux :)
Et euh maintenant, tu peux m'expliquer comment je crée ça sur un fichier existant svp ? :p Bon par contre désolée, mais va falloir me parler comme à un vrai boulet hein... :D

@croco40 : ok merci, je regarderai ça demain au taf...
 

camarchepas

XLDnaute Barbatruc
Re : Boîte de dialogue à la fermeture du fichier

Ok,
la première chose est de charger le fichier dans lequel tu veux mettre ce controle de sortie. Ensuite aller dans l'éditeur VBA [Alt] et [F11].
Puis (CTRL] R pour ouvrir l'explorateur de projet.
Là tu double clic sur Thisworkbook, Je pense qu'il est vide puisque les macro n'étaient pas actives.
Ensuite tu recopies ou tu fais un copié / collé du petit bloc suivant :

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Autorise Then UserForm1.Show
Cancel = Not Autorise
End Sub

Ensuite un clic touche droite de la souris dans l'explorateur de projet
Le menu te propose une option Insertion puis l'on choisi Module

Là écriture dans le module de :

Public Autorise As Boolean

Reste le Userform ou formulaire :

Reclic droit dans la zone Explorateur de projet :

Insertion Userform

Clic droit sur Userform1 puis code

Le bloc suivant à recopier dans ce corps de module

Option Explicit

Private Sub CommandButton1_Click()
Worksheets("Onglet X").Activate
Me.Hide
End Sub

Private Sub CommandButton2_Click()
Autorise = True
Me.Hide
End Sub

Private Sub UserForm_Initialize()
Autorise = False
End Sub

Reclic droit sur userform1 puis afficher objet

la une boite à outil va s'ouvrir

clic sur le A( Intitulé), il va te permettre de positionner une zone rectangulaire dans le userform et ou tu pourras écrire ta phrase BlaBla pour demander de renseigner la feuille désignée,

puis à nouveau dans la boite à outil clic sur un petit rectangle appelé bouton de commande

Reportes le dans l'userform et met en forme le texte de ce bouton

Faire à nouveau la même chose pour le bouton de sortie validée.

Faire enfin une sauvegarde du fichier puis il ne reste plus qu'a essayer

Dis moi si tu coinces sur une étape , j'essayerai de développer davantage.

Bon courage

Ensuite
 

testosteronde

XLDnaute Nouveau
Re : Boîte de dialogue à la fermeture du fichier

Bonjour,
Moi c'est le contraire...
Dans ma macro, je demande à fermer un fichier excel mais à chaque fois la boite de dialogue apparait pour répondre si l'on veut enregistrer ou non les modifications, moi je voudrais que cette boite n'apparaisse plus ou que ca réponde NON automatiquement sans être obligé de cliquer sur NON.

Merci d'avance.

JM
 

Fo_rum

XLDnaute Accro
Re : Boîte de dialogue à la fermeture du fichier

Salut

sans Userform, copier dans Thisworbook,
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If MsgBox("Avez-vous traité la feuille Onglet XXX ?" & Chr(10) & "Si oui, le classeur se ferme de suite !", vbYesNo, "Attention !") = vbNo Then
    Cancel = True
    Sheets("Onglet XXX").Activate
  End If
End Sub

testosteronde, c'est un tout autre sujet.
 

Pièces jointes

  • Quitter Si(MsgBox).xls
    17.5 KB · Affichages: 109

testosteronde

XLDnaute Nouveau
Re : Boîte de dialogue à la fermeture du fichier

Merci beaucoup de votre aide mais je m'exprime mal.
Ce que je souhaiterai faire, c'est lorsque ma macro execute la fermeture d'un autre fichier Excel on est pas besoin de répondre oui ou non au message :"Voulez vous enregistrer..."
Je ne veux pas que les fichiers de ce second fichier Excel soit modifiés lors de la fermeture et que je n'ai pas besoin de répondre OUI ou NON, que cela se ferme sans enregistrer et sans me le demander surtout.
Merci d'avance.
 

Discussions similaires

Statistiques des forums

Discussions
299 702
Messages
1 978 588
Membres
206 297
dernier inscrit
ousssama