XL 2019 interdire sauvegarde du modele

  • Initiateur de la discussion Initiateur de la discussion thibaut93800
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thibaut93800

XLDnaute Nouveau
Bonjour,

Je cherche à interdire l'enregistrement de mon fichier Modèle sous ce nom mais toujours pouvoir utiliser la macro d'enregistrement suivante:

Sub Enregistre()
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\Tsixte\Desktop\TEST\" & Sheets("PM").Range("B3")
End Sub

J'ai utiliser une macro trouvé sur le net, mais elle ne fonctionne plus si j'ai les deux macros dans le meme fichier.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim strNomFichier As String
Const strNomInterdit As String = "MODELE.xlsm"
Application.EnableEvents = False
strNomFichier = Application.GetSaveAsFilename(fileFilter:="Microsoft Office Excel Workbook (*.xlsm), *.xlsm")
strNomFichier = Mid$(strNomFichier, InStrRev(strNomFichier, "\") + 1)
If UCase$(strNomFichier) = UCase$(strNomInterdit) Then
MsgBox "Pour Sauvegarder ... Merci de modifier le Nom du Fichier", vbCritical, "Stop"
Else
ActiveWorkbook.SaveAs strNomFichier
End If
Cancel = True
Application.EnableEvents = True
End Sub

Quelqu'un à t'il une idée
 

Pièces jointes

Bonjour Thibault,
Dans la macro BeforeSave, vous ne vous préoccupez pas du nom présent en PM B3.
Une solution : Si PM B3 n'est pas vide alors vous enregistrez sous ce nom, sinon vous exécutez normalement.
VB:
Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim strNomFichier As String
Const strNomInterdit As String = "MODELE.xlsm"
Application.EnableEvents = False
' Si PM B3 non vide, alors on utilise ce nom pour enregistrer.
If Sheets("PM").Range("B3") <> "" Then
    ActiveWorkbook.SaveAs Filename:="C:\Users\Tsixte\Desktop\TEST\" & Sheets("PM").Range("B3")
    Exit Sub
End If
strNomFichier = Application.GetSaveAsFilename(fileFilter:="Microsoft Office Excel Workbook (*.xlsm), *.xlsm")
strNomFichier = Mid$(strNomFichier, InStrRev(strNomFichier, "\") + 1)
If UCase$(strNomFichier) = UCase$(strNomInterdit) Then
MsgBox "Pour Sauvegarder ... Merci de modifier le Nom du Fichier", vbCritical, "Stop"
Else
ActiveWorkbook.SaveAs strNomFichier
End If
Cancel = True
Application.EnableEvents = True
End Sub
 
Bonjour jmfmarques,

J'ai essayé d'enregistrer en type Modèle Excel avec prise en charge macro. Une fois enregistré, je peux toujours faire des modifications et les enregistrer. Soit je ne sais pas utiliser le type modèle de excel soit je suis un boulet!!!
 
Bonjour Sylvanu,

Merci pour la macro, mais j'ai toujours un soucis.
J'ai fait un bouton pour pouvoir éditer un rapport ou des rapports.
Une fois le rapport éditer, je dois pouvoir le récupérer et le sortir du dossier "TEST" ou il est édité. Jusque là pas de soucis ta macro fonctionne.
Le problème est que lorsque je récupère le document, je vais vouloir remplir mon rapport et là le sauvegarder normalement sur mon pc. Ba là il cherche à sauvegarder sur "TEST" le fichier avec les modif, mais je me retrouve avec moi le rapport vide sur mon pc.

Je ne suis peu être pas très clair mais pour faire simple:

Le modèle ne doit pas être enregistrable peu importe la modif faite sur le fichier
Mais une fois que j'ai utilisé le bouton pour éditer mon rapport et que je me retrouve avec un rapport renommé il doit pouvoir être enregistré normalement sans chemin spécifique et modifiable.

Merci à tout cas pour le temps passé
 
Bonsoir Chris,

Merci pour ton retour, non je n'avais pas vu ta réponse lorsque je répondais à Sylvanu.
Je comprends pourquoi mon modèle ne fonctionnait pas à la base, je n'allais pas chercher le modèle en définitif, j'allais chercher directement le nouveau fichier que j'enregistrais.

Merci en tout cas, je vais pouvoir avancer.

Bonne continuation,
 
Bonjour,

Je rencontre un soucis de format de fichier ma macro lorsque j'appuie sur le bouton 1 le fichier s'enregistre en format xls comment puis-je appliquer un enregistrement en xlsm.

J'ai testé cela mais ca ne fonctionne pas:

Sub Enregistre()
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\Tsixte\Desktop\TEST\" & Sheets("PM").Range("B3") & ".xlsm"
End Sub

Je remarque que je rencontre le problème lorsque je pars du modèle avec prise en charge macro
Lorsque je pars d'un fichier déjà en xlsm et que j'utilise le bouton le format reste xlsm.

Merci d'avance,
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
523
Réponses
27
Affichages
2 K
Retour