Ne pas fermer un fichier ou tous les fermer

marie49

XLDnaute Occasionnel
Bonjour,

Dans mon projet, j'ai plusieurs fichiers. L'utilisateur peut quitter le projet (en enregistrant ou non les fichiers ouverts) grâce à un bouton se trouvant dans un des fichiers.

Je veux maitriser le cas où l'utilisateur veut fermer un fichier (du data principalement). Si, je le laisse faire, l'outil ne fonctionnera pas bien.

Dans certain cas, l'appel par une macro à un fichier teste si le fichier est déjà ouvert (si il n'est pas ouvert, la macro l'ouvre) dans d'autres cas non.

J'ai essayé d'utiliser ce code qui permet d'utiliser la macro associée au bouton décrit dans le premier paragraphe (Macros.xla!QUITTER):

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Rép As VbMsgBoxResult

Rép = MsgBox("Attention, cette action va fermer l'application excel et tous ces fichiers ouverts. Souhaitez-vous continuer?", vbOKCancel, "Fermeture d'excel")
Stop
If Rép = vbOK And Cancel = False Then
    Application.Run "Macros.xla!QUITTER"
    
Else
    Cancel = True
End If

End Sub

Code:
Sub QUITTER()

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Quit
Application.Quit

End Sub

Le résultat obtenu n'est pas bon. Excel demande si l'utilisateur veut enregistrer avant de quitter ; s'il clique sur annuler, le fichier que l'utilisateur a demandé de fermer se ferme quand même.

Quelle est la meilleure solution a adopté?

Merci de vos réponses
Marie
 

MJ13

XLDnaute Barbatruc
Re : Ne pas fermer un fichier ou tous les fermer

Bonjour Marie

Cela me paraît bien compliqué ton affaire.

Je veux maitriser le cas où l'utilisateur veut fermer un fichier (du data principalement). Si, je le laisse faire, l'outil ne fonctionnera pas bien.

Il faudrait testé le nom de fichier avant de le fermer ou non.

Code:
Application.Quit

Ensuite ici, tu quittes l'application (c'est vraiment ce que tu veux).

Attention ce que tu demandes est assez complexe.

Le mieux est de tester chaque fichier sur le before_close pour savoir que faire.

Ce sont des pistes mais bon j'ai sans doute pas tout compris mais seule toi peut savoir comment fonctionnent tes fichiers.

Enfin si besoin tu peux empêcher l'enregistrement automatique, mais bon, bonjour la programmation!
 

marie49

XLDnaute Occasionnel
Re : Ne pas fermer un fichier ou tous les fermer

Bonjour,

Je pense que je n'ai pas trop bien expliqué.

En fait, ce que je voudrai : si l'utilisateur veut fermer un fichier (utile lors de l'utilisation du projet), il ait un message d'alerte lui donnant deux possibilités ; soit laisser le fichier ouvert, soit fermer l'ensemble des fichiers et de l'application;


Sinon, je vérifie systématiquement que les fichiers sont ouverts quand je les utilise. Je vais m'orienter vers ça, c'est plus judicieux.

Merci
Marie
 

Pierrot93

XLDnaute Barbatruc
Re : Ne pas fermer un fichier ou tous les fermer

Bonjour Marie, Michel:)

petites reflexions au passage en lisant ton post.

1/ tu doublonnes l'instruction "application.quit"...
2/ si c'est pour déployer ton appli à d'autres utilsateurs, pas top de les forcer à quitter excel, et même dangereux pour eux si version antérieure à 2000, ne leur demandera même pas d'enregistrer les classeurs en cours...

bon après midi
@+
 

marie49

XLDnaute Occasionnel
Re : Ne pas fermer un fichier ou tous les fermer

Bonjour Pierrot



1/ tu doublonnes l'instruction "application.quit"...

Oui, je sais. Cela ne marchait pas avec une seule instruction et je n'ai pas trouvé pourquoi. Si tu as une idée, je prends

2/ si c'est pour déployer ton appli à d'autres utilsateurs, pas top de les forcer à quitter excel, et même dangereux pour eux si version antérieure à 2000, ne leur demandera même pas d'enregistrer les classeurs en cours...

En fait, les macros se chargent de faire tous les enregistrements des modifications réalisées par l'utilisateur. Donc, l'enregistrement des classeurs qu'il se fasse ou non, ne pose pas de problèmes.

Marie
 

Pierrot93

XLDnaute Barbatruc
Re : Ne pas fermer un fichier ou tous les fermer

Re

quoique chez moi, après test avec événement "before close" dans 2 classeurs, une seule instruction "application.quit" est nécessaire si enregistrement des fichiers répondu par oui ou non. Si bouton "annuler" cliqué, pas de sortie de l'appli...
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 313
Membres
102 860
dernier inscrit
fredo67