Capter une information à la fermeture d'un classeur.

coco_lapin

XLDnaute Impliqué
Bonjour le forum.

J'ai un classeur qui est utilisé comme base de données pour une centaines de personnes.
Une fois que les données ont été saisies je les stocke dans un autre onglet.
Il y en a qui n'enregistre pas le classeur à la fermeture de celui-ci étant donné que pour eux stocker dans un onglet revient à enregistrer le classeur. Et bien entendu il me contacte ensuite en étant surpris de ne pas retrouver leurs données le coup d'après.

J'essais de trouver une parade d'ou ma question suivante (si vous aviez d'autres idées je suis preneur!):

A la fermeture d'un classeur, après une modification, Excel génère le message suivant via une boîte de dialogue:

"Voulez-vous enregistrer les modifications apportées à Nom_du_classeur.xls"
Il nous laisse alors le choix entre "OUI" "NON" et "ANNULER"

Dans le cas ou l'utilisateur a répondu "NON" je souhaiterais présenter ma propre boîte de dialogue pour lui demander confirmation (ce qui me permettrais d'attirer son attention sur le fait qu'il ne va pas enregistrer ses données en jouant sur un message personnalisé avec des couleurs).

Je ne sais pas comment capter la réponse "NON" de l'utilisateur pour que je puisse enclencher une macro.

Merci pour votre aide.
 
Dernière édition:

En 1 Clic

XLDnaute Nouveau
Re : Capter une information à la fermeture d'un classeur.

Bonjour coco,

Vous pouvez recopier ce code dans This Workbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub

Le fichier sera sauvegardé automatiquement lors de la fermeture.

Cordialement,
 

coco_lapin

XLDnaute Impliqué
Re : Capter une information à la fermeture d'un classeur.

Bonjour En 1 Clic et merci pour ta réponse,

Effectivement je pourrais mettre du code dans Private Sub Workbook_BeforeClose que j'utilise déjà pour d'autres actions mais ce code s'effectue avant la fermeture du classeur et Excel me propose alors la boîte de dialogue que j'ai présenté ci-dessus et je vais donc perturber les utilisateurs en présentant deux fois la même question.

Ton idée serait bonne si j'arrivais à ne pas afficher la boîte de dialogue proposée par Excel.

J'ai aussi une contrainte qui est de donner le choix à l'utilisateur d'enregistrer ou pas le classeur au cas ou il aurait fait des boulettes.
 

En 1 Clic

XLDnaute Nouveau
Re : Capter une information à la fermeture d'un classeur.

Bonjour Coco,

Voici un fichier avec la macro modifiée.

Elle propose à l'utilisateur d'enregistrer ou non le fichier et si celui ci dit non, une nouvelle boite de dialogue s'ouvre pour lui demander de confirmer.

Et la boite de dialogue d'Excel ne doit normalement pas apparaître.
 

Pièces jointes

  • Enregistrement.xls
    31 KB · Affichages: 24
  • Enregistrement.xls
    31 KB · Affichages: 22
  • Enregistrement.xls
    31 KB · Affichages: 21

coco_lapin

XLDnaute Impliqué
Re : Capter une information à la fermeture d'un classeur.

Bonjour En 1 Clic, camarchepas et le forum

Merci pour vos deux solutions,

Je les ai essayées et aussi bien celle de En 1 Clic que de camarchepas répondent parfaitement à mon attente.

Pour les curieux qui passeraient par ici ce code "ActiveWorkbook.Saved = True" permet de fermer un classeur modifié sans l'enregistrer ou sans qu'un message vous propose de le faire.

Bonne journée et bon week-end.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine