[Excel / VBA] Fermeture Excel

cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007 - 8 nov. 2007 à 12:53
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 31 mai 2008 à 16:48
Bonjour,

est-ce possible de fermer Excel depuis une macro (Excel / VBA) ?
je veux dire fermer completement le logiciel et pas seulement les feuilles
Par avance merci à tous pour votre aide

12 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 nov. 2007 à 12:58
Salut,
Application.Quit (dans une ligne de code VBA)

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
8 nov. 2007 à 18:34
Bonsoir,
merci pour cette infos, j'ai tester et malheureusement cela ne fonctionne pas ?? je comprend pas pourquoi, a toute fin utiles voir ci-dessous le code que j'utilise :

Private Sub FermerTOUSLesClasseurs(EnregistrerLesAutresClasseurs As Boolean, EnregistrerCeClasseur As Boolean)
    Dim xlBook As Workbook
    For Each xlBook In Application.Workbooks
        If xlBook.Name <> ThisWorkbook.Name Then xlBook.Close EnregistrerLesAutresClasseurs
    Next xlBook
    ThisWorkbook.Close EnregistrerCeClasseur
    Set xlBook = Nothing
    xlBook.Quit
End Sub

j'ai egalement essayer Application.Quit dans les deux cas toutes mes feuilles sont fermées, mais l'appli (Excel) reste ouvert

je remercie par avance toute la communauté de leurs aide.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
8 nov. 2007 à 23:26
Est-ce que tu déclares un objet Excel.Application à quelque part dans ton code ?
Parce qu'ici, tu ne déclares qu'un Workbook...

Autrement, Application.Quit devrait suffire.

MPi²
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
9 nov. 2007 à 00:18
bonsoir,
Tout d'abord je te remercie de ta reponse
non je ne déclare pas d'objet excel. en fait j'ai déjà essayer Application.Quit sans résultat, j'ai toujours le même fonctionnement c'est à dire cela ferme le classeur mais laisse excel ouvert du coup faut cliquer sur la croix pour fermer excel
mais j'ai aussi essayer en déclarant un objet mais je suis pas très a l'aise je sais pas par exemple si je peut créer un objet sur un classeur ouvert, dejà modifier et pres a etre détruit en fait (juste pour le fermer quoi...) enfin en tout état de cause sans résultat également mais il se peut que je l'utilise mal ?
en fait dans toutes mes procedures je n'utilise aucun objet excel mais si tu as une procedure... et que tu veux bien m'en faire profiter ;-)

et encore merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2007 à 08:08
Salut,
Tu serais bien le premier chez qui Application.Quit ne  fonctionne pas

Essaie dans un nouveau classeur pour voir. Tu ajoutes un bouton et tu mets juste Application.Quit.

NOTE:  pour éviter les problèmes il es possible que Application.Quit, doive être la derniere chose ecrite. Est ce que tu execute autre chose après FermerTOUSLesClasseurs

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
9 nov. 2007 à 12:35
salut,
effectivement j'ai essayer dans un fichier excel vide comme tu me la suggeré et ca marche
cela veut dire que le probleme vient de la procedure FermerTOUSLesClasseurs ? hein ?
je comprend pas pourquoi
la procedure est appele dans un evenement Click voir ci-apres. Comme tu peut le voir il me semble bien que c'est la dernière instruction... non ?
He merci encore de ton aide

Private Sub FermerTOUSLesClasseurs(EnregistrerLesAutresClasseurs As Boolean, EnregistrerCeClasseur As Boolean)
    Dim xlBook As Workbook
    For Each xlBook In Application.Workbooks
        If xlBook.Name <> ThisWorkbook.Name Then xlBook.Close EnregistrerLesAutresClasseurs
    Next xlBook
    ThisWorkbook.Close EnregistrerCeClasseur
    Set xlBook = Nothing
    Application.Quit
End Sub


Private Sub CommandButton1_Click()
    Call FermerTOUSLesClasseurs(True, True)
End Sub
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 nov. 2007 à 13:02
Salut,
Est ce que ceci est dans un UserForm je n'ai pas testé mais peu être que cela vient de la.

Est ce que tu travaille directement sur les classeurs, ou est ce un Add in.
Il faut explorer un peu toutes les pistes.

POur voir si cela vient FermerTOUSLesClasseurs , n'appelle pas cette procédure et remplace simplement par Application.Quit.

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
9 nov. 2007 à 15:35
re,
Oui lorsque j'appele Application.Quit directement dans la procedure commandButton1_click
cela marche !

Private Sub CommandButton1_Click()
    Application.Quit
End Sub

Par contre mes classeurs ne sont pas enregistré
je peut faire u  truc comme cela non ?

Quand pense tu ?

Private Sub CommandButton1_Click()
    Application.Workbooks.clase(true)
    Application.Quit
End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 nov. 2007 à 23:38
Et si tu essayais comme ceci ?

Private Sub FermerTOUSLesClasseurs(EnregistrerLesAutresClasseurs As Boolean, EnregistrerCeClasseur As Boolean)
    Dim xlBook As Workbook
    For Each xlBook In Application.Workbooks
        If xlBook.Name <> ThisWorkbook.Name Then xlBook.Close EnregistrerLesAutresClasseurs
    Next xlBook
    ThisWorkbook.Close EnregistrerCeClasseur
    Set xlBook = Nothing
<strike>    Application.Quit
</strike>End Sub Private Sub CommandButton1_Click()
    Call FermerTOUSLesClasseurs(True, True)
    Application.Quit
End Sub

Une idée comme ça...

MPi²
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
10 nov. 2007 à 10:38
salut,
Oui j'ai déjà essayer cette solution... sans résultat
en fait j'ai essayer aussi

Private Sub CommandButton1_Click()
   Application.ThisWorkBooks.Close True
    Application.Quit
End Sub

sans plus de succés, il y a seulement cela qui marche pour l'instant

Private Sub CommandButton1_Click()
    Application.Quit
End Sub

Mais dans ce cas excel m'ouvre la boite de dialogue "Voulez vous enregistrer"
avant de fermer, je voudrais enregistrer et fermer sans message et en un seul click (CommandButton1)
je suis en train de tester diverses procédures mais je n'arrive a aucun résultat, je commence a désespéré
le pire c'est que je comprend pas pourquoi ca fonctionne pas... a vrai dire j'ai même pas une idée, c'est dramatique
j'ai trouver sur la toile plein d'exemple qui traite de la fermeture d'excel, mais aucun ne fonctionne si tu as de ton coté encore une idée a me suggérer... elle est la bien venu
Je te remercie de ton implication ;-)
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
10 nov. 2007 à 10:59
salut,
j'ai trouver une solution !
Il s'agit de ne pas utiliser la methode Close de l'objet workbook mais la methode Save. Là l'application se ferme bien avec Application.Quit . Certe les classeurs ne sont plus fermés mais peu importe puisque c'est l'application qui se ferme ;-) et les données sont bien enregistré avant fermeture et sans demande... c'est le Top
voir ci-dessous :

Private Sub CommandButton1_Click()
    Dim xlBook As Workbook
    For Each xlBook In Application.Workbooks
    xlBook.Save
    Next xlBook
    Set xlBook = Nothing
    Application.Quit
End Sub

Je te remercie vraiment de ton aide
a bientôt
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 16:48
salut,

y'avait mon snippet :

Public Sub FermerTOUSLesClasseurs(EnregistrerLesAutresClasseurs As Boolean, EnregistrerCeClasseur
As Boolean)
    Dim xlBook As Workbook
    
    For Each xlBook In Application.Workbooks
        If xlBook.Name <> ThisWorkbook.Name Then xlBook.Close
EnregistrerLesAutresClasseurs
    Next xlBook
    ThisWorkbook.Close EnregistrerCeClasseur
    Set xlBook = Nothing
End Sub
Sub EXEMPLE()
    Call FermerTOUSLesClasseurs(False, True)
'  ** Ici tous les classeurs ouverts se fermeront sans
être  enregistrés
' MAIS le classeur qui contient
la  procédure se fermera en enregistrant les modifs
End Sub
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Visible ici :
http://www.codyx.org/snippet_fermer-tous-classeurs-excel-avec-parametres-enregitrement-true_331.aspx

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Rejoignez-nous