XL 2019 interdire sauvegarde du modele

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

  • MODELE.xlsm
    17.2 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

thibaut93800

XLDnaute Nouveau
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!!!
 

thibaut93800

XLDnaute Nouveau
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é
 

thibaut93800

XLDnaute Nouveau
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,
 

thibaut93800

XLDnaute Nouveau
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

  • MODELE.zip
    18.1 KB · Affichages: 2
  • MODELE.xlsm
    21 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 322
Membres
111 102
dernier inscrit
driss touzi