Si clique sur Enregisrer alors ... VBA

petedesky

XLDnaute Nouveau
Bonjour à tous,

Je cherche comment écrire, et surtout où mettre la fonction suivante en VBA :

Littéralement : Si quelqu'un clique sur le bouton "Enregistrer" alors, si le nom du fichier actif est égal à "MODELE" la fenêtre "Enregistrer sous" s'ouvre, sinon j'enregistre sans contrainte.

Voila le code que j'ai écrit dans ThisWorkbook:


-------------
Private Sub Workbook_Open()

If ActiveWorkbook.Save = True And ActiveWorkbook.Name = "MODELE.xlsm" Then

Application.Dialogs(xlDialogSaveAs).Show

Else

Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True

End If

End Sub

--------------

Mais ça ne réagit pas comme je le souhaite.

J'ai essayé de le mettre dans ma Feuille 1 et c'est pareil.

Si quelqu'un a une idée :))

Merci et bonsoir à tous
 

petedesky

XLDnaute Nouveau
Re : Si clique sur Enregisrer alors ... VBA

Salut,

Merci pour ce tuyau, je viens d'appliquer ça et j'ai maintenant un message :

"Erreur Compilation. La déclaration de la procédure ne correspond pas à la description de lévènement ou de la procédure de même nom"


Voila mon code dans ThisWorkbook
--------------------
Private Sub workbook_BeforeSave()

If ActiveWorkbook.Save = True And ActiveWorkbook.Name = "FORMULAIRE DE DEVIS MATIERES ET CREATION D'ARTICLE V2.xlsm" Then

Application.Dialogs(xlDialogSaveAs).Show

Else

Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True

End If

End Sub
-------------

En tout cas j'avance. Merci quand même ;)
 

petedesky

XLDnaute Nouveau
Re : Si clique sur Enregisrer alors ... VBA

Bonsoir Papou-net

@ Papou-net

Effectivement, en fait je ne sais pas si ça sauve quand même le fichier ou si ça ne fait rien.

En tout cas depuis que je suis passé en Worbook_Before Save j'ai le message d'erreur expliqué dans ma réponse juste au dessus.
 

vgendron

XLDnaute Barbatruc
Re : Si clique sur Enregisrer alors ... VBA

Re
Hello Papou


Code:
Private Sub workbook_BeforeSave()
'à priori. si tu arrives la. c'est que la condition "appuie sur le bouton" est vraie..
'donc pas besoin du activeworkbook.save (qui doit etre la source du message d'erreur??)
If ActiveWorkbook.Name = "FORMULAIRE DE DEVIS MATIERES ET CREATION D'ARTICLE V2.xlsm" Then

Application.Dialogs(xlDialogSaveAs).Show

Else

Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True

End If

End Sub
 

petedesky

XLDnaute Nouveau
Re : Si clique sur Enregisrer alors ... VBA

Nope toujours pas, j'ai toujours le message:
"Erreur Compilation. La déclaration de la procédure ne correspond pas à la description de l'évènement ou de la procédure de même nom"

J'ai l'impression que VBA attend quelque chose entre les () du BeforeSave

Merci pour ta patience.
 

petedesky

XLDnaute Nouveau
Re : Si clique sur Enregisrer alors ... VBA

Bon j'ai trouvé, grâce à votre aide et des explications sur le BeforeSave

Voici mon code au final :

--------
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


If ActiveWorkbook.Name = "FORMULAIRE DE DEVIS MATIERES ET CREATION D'ARTICLE V2.xlsm" Then

MsgBox ("Merci de ne pas écraser ce formulaire modèle, Enregistrez sous un autre nom s'il vous plait")

Application.Dialogs(xlDialogSaveAs).Show

Else

Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True

End If

End Sub

------

Merci à tous
 

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 138
Membres
104 047
dernier inscrit
bravetta