[VBA] Fermeture avec enreg sans boite de dial [Fermé]

Signaler
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
-
 gugu45000 -
Bonjour,

Voila je viens de créer une application de Excel et je voudrais quand je fais fichier fermer ou quitter ou encrore la croix en haut a droite que mon fichier s'enregistre automatiquement sans rien ne me demander avec le meme nom et à l'endroit ou il se trouve!
Precisions: je pensais le mettre dans Private Sub Workbook_BeforeClose(Cancel As Boolean) de la feuille Thisworkbook, dans cette partie il y a déja une macro qui me met en mise en page standard. cela va posé problème ???

merci de vos réponses!

7 réponses

Messages postés
17298
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
31 décembre 2020
4 427
Salut,

Places ce code dans la ThisWorbook.
Clic droit sur un onglet/Visualiser le code/double clic sur ThisBokbook et colles le code

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each w In Application.Workbooks
w.Save
Next w
Application.Quit
End Sub

A+
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

ca marche pas.

J'ai bien écris ce script, puis je teste en faisant :

ouverture manuel du fichier
une modif quelquonc sur le fichier
je ferme le fichier
et là, il me redemande si je veux enregistrer ....


d'ou viens le pbm ?? . . .
Ok j'étais pas sur ma workbook mais sur ma feuille

Ok ca marche, super.


Merci !
merci pour cette solution fonctionnel et utilisable de moins de 15sec ;)
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
74
Tu peux parfaitement rajouter une macro dans le "BeforeClose" pour enregistrer ton classeur.

Sinon, tu peux créer un bouton (ou un évènement) exécutant le code "ActiveWorbook.Close True".

Sir_DEC
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
74 >
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007

Plusieurs manières de faire :

La première que je t'ai donné, sers à fermer le classeur "ActiveWorkbook.Close" en lui donnant en paramètre si l'on veut sauvegarder ou non ("True" ou "False") de la manière suivante : "ActiveWorkbook.Close True". Par contre je ne me rappelle plus si la sauvegarde est automatique dans ce cas (en tout cas pas si le classeur n'a jamais été enregistré, ça c'est certain).

Ensuite : "Application.GetSaveAsFilename" qui ouvre simplement la fenêtre "Enregistrer sous..." (Save As...)

Et enfin : "ActiveWorkbook.SaveAs filename:=nom_souhaité" (en remplaçant le "nom_souhaité" par le nom que l'on veut donner au fichier).

Bien sûr le "ActiveWorkbook" peut être remplacé par ThisWorkbook ou par le nom du classeur Workbooks("Nom_du_classeur.xls").

Voilà pour toi
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
23 >
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012

merci c'est très clair , je vais le faire tout de suite
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
23 >
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012

par contre je ne veux pas qu'il me change le nom quand je quitte
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
74 >
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007

ActiveWorkbook.SaveAs filename:=ThisWorkbook.Name
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
23 >
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012

par contre il ne me ferme pas excel mais juste le classeur !!!
serait ce possiblee de fermer excel aussi ???
merci
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
74
ActiveWorkbook.Close -> Fermeture du classeur
Application.Close -> Fermeture d'Excel

A noter que si tu fermes ton application avec en paramètre "False" (pas de sauvegarde), tous les classeurs ouverts seront fermés sans sauvegarde, fais bien attention donc.
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
23
il me met erreur 438 propriété ou méthode non géré par cet objet
pour Application.Close
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
74
Autant pour moi, c'est Application.Quit.
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
23
par contre il faut que je mette les composant dans quel ordre???



merci
Messages postés
57
Date d'inscription
lundi 28 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
23
up
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
74
Tu parles des lignes de code ?

A priori il vaudrait mieux sauvegarder avant de quitter, non ?

;-)
Bonjour,

je remonte se post avec une légère nuance,

Serait il possible, par option, de ne pas faire apparaitre la fenetre d'enregistrement lors de la fermeture d'excel.

Je precise, trouver une option à selectionner kk part afin que le fichier se ferme et s'enregistre automatiquement, et si possible sans faire de script macro.(contrainte)

Merci d'avance . . .
Messages postés
17298
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
31 décembre 2020
4 427
Salut,


Récupères l'exeple avec le lien ci dessous, saisis n'importe quoi et ferme le de la façon que tu souhaites, il va se fermer après enregistrement sans aucun avertissement et fermer Excel

https://www.cjoint.com/?celd2fCucg

A+

Nos posts se sont croisés, si tu ne souhaites pas fermer Excel supprimes cette ligne ou mets unesapostrophe devant

'Application.Quit

N'oublis pas de mettre ton statut en résolu merci A+