Savoir si il reste fichier ouvert

  • Initiateur de la discussion Initiateur de la discussion roy
  • Date de début Date de début

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 !

roy

XLDnaute Nouveau
Savoir si il reste fichier ouvert [Résolu]

Bonjour à tout le monde !

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
 
Dernière édition:
Re : Savoir si il reste fichier ouvert

Bonsoir Roy,

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

A bientôt
 
Re : Savoir si il reste fichier ouvert

Bonsoir,

salut jp 🙂

pour info :

Code:
Application.Windows.Count 'ou
Application.Workbooks.Count

te donne le nombre de fichiers ouverts, mais si tu as un Perso.xls, il t'en donnera 2 même si tu n'as qu'un seul fichier

pour tester, essaye ce code :

Code:
For i = 1 To Application.Windows.Count
Cells(i, 1).Value = Application.Windows(i).Caption
Next i

ou

Code:
For i = 1 To Application.Workbooks.Count
Cells(i, 1).Value = Application.Workbooks(i).Name
Next i

Edit : salut Hasco, mef au Perso.xls.....
 
Re : Savoir si il reste fichier ouvert

Bonsoir à tous

un peu en retard, mais c'est fait alors ....

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

bonne soirée
@+
 
Re : Savoir si il reste fichier ouvert

Bonjour à tous et merci pour vos réponses.

J'ai testé les codes fournis et voilà les problèmes rencontrés:

- Je n'ai pas compris les remarques de bhbh :
si tu as un Perso.xls, il t'en donnera 2 même si tu n'as qu'un seul fichier
et Pierrot93
'a noter que le classeur de macros personnelles même s'il est masqué compte 1
En effet,
Code:
Application.Workbooks.Count
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à !
 
Dernière édition:
Re : Savoir si il reste fichier ouvert

Bonjour Roy, le fil

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".

bonne soirée
@+
 
Re : Savoir si il reste fichier ouvert [R

Bonjour à tous,

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....)

Merci à tous en tout cas !
 
- 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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Retour