Evénement "enregistrer"

  • Initiateur de la discussion Seb [DoA3's DiOu]
  • Date de début
S

Seb [DoA3's DiOu]

Guest
Bonjour a tous
J'aimerais savoir si c possible de lancer une macro quand l'utilisateur sauve le document avec l'option "enregistrer" et "enregistrer sous"

merci et bonne apetit
 
S

Sylvain

Guest
bonjour
dans VB au lieu de saisir dans un module il faut se positionner sur l'objet thisworkbook dans la fenêtre project à gauche

dans la fenêtre principale en haut il y a deux menus déroulants, dans celui de gauche on choisit Workbook
dans celui de droite on choisit beforesave

pour les détails on demande au petit chat.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

le même principe sert à faire des macros évènementielles sur une feuille, en choisissant une feuille dans la fenêtre de gauche.

A+

End Sub
 
T

Ti

Guest
tu mets la procédure suivante dans thisworkbook après avoir adapté le code bien sûr :)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel as Boolean)
dim a
a = MsgBox ("Vous voulez vraiment sauvegarder ?", vbYesNo)
If a = vbNo Then Cancel = True

End Sub
 
S

Seb [DoA3's DiOu]

Guest
Merci Sylvain mais si j'avais besoin de faire ce que tu me dis je t'aurais pas demander ca.
Relis la question, je pense que tu as omis ce léger petit détail: "quand l'utilisateur sauve " cad tu vas dans le menu : fichier, tu sélectionnes: enregistrer, ou enregistrer sous, cela t ouvre une boite de dialogue (xlDialogSaveAs) et quand tu clique sur le bouton "enregistrer" en bas à droite ça lance la macro. Parce que ds la cas où tu le sais pas beforesave ca veut dire avant de sauver.

Désolé j aime pas qu on me prenne pour un débile... En plus j'ai pas le chat j'ai Einstein

End Function
 
S

STéphane

Guest
bonjour


mais ceci fait exactement ce que tu veux, que tu utilises les commandes enregistrer ou enregistrer ou bien les boutons de barre d'outils, Excel va intercepter le désir de l'utilisateur de sauvegarder le fichier, et à ce moment là tu peux conditionner l'enregistrement, comme l'a fait Sylvain.

Tu peux par exemple conditionner la sauvegarde au remplissage de certains cellules.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Application.And([A1] <> "", [A2] <> "") = False Then
MsgBox "pensez à remplir A1 et A2"
Cancel = True
End If
End Sub

bye
Stéphane





ps : cela ne va pas commencer comme sur le MPFE où les gens font des attaques gratuites ou certains prennent mal des broutilles, ou d'autres abusent avec leur boutades (et que l'on ne me parle pas de susceptibilité).
 
S

Seb [DoA3's DiOu]

Guest
JE M'EXCUSE. Mais je suis pas sur que beforesave me soit utile

Désolé ce n est pas civilisé de ma part... faut que j'arrete le café. Sylvain je suis désolé t'as voulu m'aider c déjà sympa de ta part et je l ai mal pris.


En tout cas Stéph je suis pas d'acc avec toi g essayer avnat de demander de l:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox ("test")
end sub


pour voir a quel moment ca m envoyer le text, et ca me l'envoi avant la fenetre qui te demande quel nom tu veux donner.

Parce qu'on fait voila ce que je veux faire: le gars enregistre son document donne le nom du doc clique sur enregistrer, a ce moment ma macro prend le nom du doc qui vient d'entrer et l'affecte à une variable. est ce que tu crois que c possible avec beforeSave
??

MErci
 
S

STéphane

Guest
Re: JE M'EXCUSE. Mais je suis pas sur que beforesave me soit utile

un truc comme ça te va ?

Private Sub Workbook_BeforeSave(ByVal saveasUI As Boolean, Cancel As Boolean)

'permet de détecter s'il est fait appel à laméthode "Enregistrer sous"

If saveasUI Then

'annuler la prise en charge des évènements par excel
Cancel = True: Application.EnableEvents = False
fileSaveName = Application.GetSaveAsFilename( _
fileFilter:="Fichiers Excel (*.xls), *.xls")

If fileSaveName <> False Then
MsgBox "Enregistrer sous " & fileSaveName
ActiveWorkbook.Save
End If

Application.EnableEvents = True
End If
End Sub
 
F

Fred

Guest
Re: Steph [ExEl's DiOu]

Pour lancer une macro a l'enregistrement du fichier tu peux utiliser ceci:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.OnTime Now + TimeValue("00:00:20"), "Macro1"
End Sub

où 20 (secondes) est le delai d'attente pour executer ta macro et; où "Macro1" est le nom de ta macro.
 

Statistiques des forums

Discussions
302 292
Messages
2 002 296
Membres
215 541
dernier inscrit
yannisparquet