cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 novembre 2007
-
8 nov. 2007 à 12:53
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 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
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 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.
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 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 ;-)
cs_sql84
Messages postés21Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention24 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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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>