Interdire la sauvegarde si nom du fichier identique

bonjour à tous,

je sais que le sujet a déjà été évoquer, j'ai trouver ce code sur le forum,

Option Explicit

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

' A adapter en remplaçant NomInterdit par le Nom de ton Fichier Modèle '''''''''''''''''''''''''''''''''''''''

Dim strNomFichier As String

Const strNomInterdit As String = "ENQUETTE PP H225 OR R5_2.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

mais mon problème est que j'ai déjà un autre code dans ThisWorkbook qui est:

' A l'ouverture du fichier orginal

Private Sub Workbook_Open()

If Worksheets("Enquête").Range("J2") = "N° XXX" Then

MsgBox "Renseigner la référence et le N° de série pour récupérer " _

& "ces informations dans toutes les feuilles. " _

& "ATTENTION ce fichier est l'original " _

& "renommer le avant la sauvegarde.", vbOKOnly + vbExclamation, "Enquête pale principale 330A Original"

End If

End Sub

comment faire fonctionner ces 2 codes?

merci d'avance pour votre aide.

Nojour

Je ne vois pas à première vue où est ton problème .

Tu peux avoir ces 2 codes dans ThisWorkBook !!

Ce ne sont pas les mêmes

A+

bonjour Patty5046

j'ai essayé de mettre Option Explicit au début, tout simplement, mais j'ai une erreur 1004

ActiveWorkbook.SaveAs strNomFichier est en jaune après l’exécution.

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' A adapter en remplaçant NomInterdit par le Nom de ton Fichier Modèle '''''''''''''''''''''''''''''''''''''''
Dim strNomFichier As String
Const strNomInterdit As String = "ENQUETTE PP H225 OR R5_2.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
[b]ActiveWorkbook.SaveAs strNomFichier[/b]
End If
Cancel = True
Application.EnableEvents = True
End Sub
Private Sub Workbook_Open()
    If Worksheets("Enquête").Range("J2") = "N° XXX" Then
        MsgBox "Renseigner la référence et le N° de série pour récupérer " _
         & "ces informations dans toutes les feuilles " _
         & "ATTENTION ce fichier est l'original " _
         & "renommer le avant la sauvegarde.", vbOKOnly + vbExclamation, "Enquête pale principale H225 Original"
    End If
End Sub

Re

Pour moi, le problème n'existe que si tu veux enregistrer le fichier avec le même nom

et que lors de la question ... Voulez-vous le remplacer ?? tu réponds NON

Est-ce bien cela??

Et s'il te plaît , mets ton code avec </> , position 5 ci-dessus, le code sera plus lisible

Merci

C'est bien çà.

la MsgBox "pour sauvegarder....." n’apparaît pas .

Désolé je n'ais pas compris pour le </> position 5.

En tout cas merci pour tes réponses.

Bonjour,

enregistre ton fichier modèle que tu veux préserver en ... fichier modèle *.xltx ou *.xltm justement.

A l'ouverture ça sera une copie où l'utilisateur sera obligé de faire Enregistrer sous...

eric

Merci Eric

C'est plutôt efficace et radical

Si quelqu'un peut m'expliquer pourquoi mon code ne fonctionne pas, je suis preneur. En attendant je prends ta solution Eric

Merci pour ton aide et merci aussi à Patty

Pour rendre la lecture plus agréable et facile édite tes post, indente ton code, sélectionne-le et met le en forme avec l'icone <\> au-dessus

Pour obtenir qq chose comme ça :

    If Target.Column = 3 And IsDate(Target) Then
        'raz compteurs
        [C1:AG1].Offset(Target.Row - 2).ClearContents
        Range("N1:N5,R1:R5,V1:V5").ClearContents
        Exit Sub
    End If

eric

PS : lance ton code et à l'erreur positionne le curseur souris sur strNomFichier, attend 2s et regarde le chemin s'il est conforme

merci Eric

Rechercher des sujets similaires à "interdire sauvegarde nom fichier identique"