Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Alors voilà : je cherche un code permettant de fermer le classeur actif et, s'il ne reste plus de classeur ouvert (i.e. que le classeur actif était le seul fichier XL ouvert) alors de fermer Excel.
Pour fermer le classeur j'ai mis le code suivant (sur évènement "click" d'un bouton)...mais il me manque la partie qui vérifie s'il reste un fichier ouvert pour savoir si on quitte ou non Excelc (partie en commentaires)...
Code:
Private Sub Bouton_Quitter_Click()
Confirmation_Quitter = MsgBox("Souhaitez-vous réellement quitter l'application ?" & Chr(10) & Chr(10) & "ATTENTION : si vous quittez sans avoir enregistré au préalable, toutes les modifications apportées ne seront pas prises en compte", vbYesNo, "Confirmer la sortie de l'application")
If Confirmation_Quitter = vbYes Then
'on ferme le classeur Excel (sans enregistrer les modification s'il y en a eu)
Excel.Application.ThisWorkbook.Close (False)
's'il n'y pas d'autres classeurs ouverts alors on quitte excel
'If ...................... Then
'Excel.Application.Quit
'Else
'End If
Else: Exit Sub
End If
End Sub
Avec cette méthode, pas la peine de fermer avant ton classeur, displayAlerts=False ne demandera pas s'il faut enregistrer ou pas le classeur ouvert et le fermera sans l'enregistrer.
Code:
If WorkBooks.Count=1 then
Application.DisplayAlerts=False
Application.Quit
End if
Sub test()
If MsgBox("Souhaitez-vous réellement quitter l'application ?" & Chr(10) & Chr(10) & "ATTENTION : si vous quittez sans avoir enregistré au préalable, toutes les modifications apportées ne seront pas prises en compte", vbYesNo, _
"Confirmer la sortie de l'application") = vbYes Then
'a noter que le classeur de macros personnelles même s'il est masqué compte 1
If Workbooks.Count > 1 Then
ThisWorkbook.Close False
Else
'Attention quittera l'appli en fermant le classeur sans enregistrement
'du classeur et sans message d'invite
Application.DisplayAlerts = False
Application.Quit
End If
End If
End Sub
ne me donne que le nombre de classeur effectivement ouvert (sans en compter un supplémentaire...)
Enfin cela n'est pas le plus "grave" :
- Le code fournit par Pierrot93 fonctionne parfaitement lorsqu'il y a d'autres classeurs ouverts (seul le classeur courant se ferme)
En revanche, lorsqu'il n'y en a pas d'autres, Excel ne se ferme pas et en plus bug (obligé de fermer Excel via le gestionnaire des tâches)
Et là je comprends pas : j'ai testé ce code dans un fichier de test et il fonctionne parfaitement.
Auriez-vous une idée de ce qui pourrait clocher ?
Précisions :
OS =Win2000 Pro
Excel version Office 2002 SP3
En réponse à la question de Jean-Pierre : le but est que l'utilisateur puisse avoir la sensation qu'il s'agit d'une application (donc un clic sur le bouton "Quitter" ne doit pas lui laisser Excel ouvert sans classeur.
A l'inverse s'il travaillait en parallèle sur des documents Excel, il ne faut pas que le code lui ferme également ceux-là !
comprends pas, chez moi ce code fonctionne bien...
Pour ce qui est du classeur de macro personnelles ou PERSO.xls, c'est un classeur qui permet de stocker des macros et que celles ci soient toujours disponibles...
Généralement ce classeur est masqué par défaut, et tu ne le vois pas. Pour vérifier si il est présent, dans Excel => barre de menu => Fenêtre => afficher.
Pour en créer un, lorsque tu cliques sur enregistrer une macro, dans la liste déroulante "Enregistrer la macro dans ", tu choisis "classeur de macros personnelles".
J'étais sur autre chose mais comme pour finaliser le thread je tien à préciser que le code fournit par Pierrot93 a finalament fini pas fonctionner (les mystères de VBA des fois....)
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD