Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Forcer l'option Enregistrer sous

3 réponses
Avatar
Claire
Bonjour,

J'ai créé un modèle et j'aimerais qu'une fois qu'un fichier est créé à
partir de ce modèle, il soit possible de l'enregistrer une seule fois. Si des
modifications doivent être apportées au fichier par la suite, j'aimerais que
l'utilisateur soit forcé à l'enregistrer sous un autre nom.

Pouvez-vous m'aider?

Merci!

Claire

3 réponses

Avatar
MichDenis
Dans le ThisWorkbook de ton classeur, copie ce type de procédure :
que tu peux améliorer selon tes goûts.


'-------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
Else
x = ThisWorkbook.FullName
Do
z = Application.InputBox(PROMPT:="Inscrivez le NOUVEAU nom du classeur.", _
Title:="Enregistrer sous", Default:="SonNom.xls", Type:=2)
If LCase(Right(z, 4)) <> ".xls" Then z = z & ".xls"
If UCase(z) = UCase(ThisWorkbook.Name) Then
If MsgBox("Ce nom existe déjà. Vous devez choisir un autre nom." & _
"Désirez-vous continuer?", vbCritical + vbYesNo, "Nouveau nom") = vbNo Then
Cancel = True
Exit Sub
End If
Else
On Error Resume Next
Application.EnableEvents = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "" & z
Application.EnableEvents = True
If Err <> 0 Then
Err.Clear
MsgBox "Vous avex saisi un caractère interdit dans " & _
"le nom du fichier : |/*?:><"
Cancel = False
Else
Cancel = True
End If
End If
Loop Until Cancel = True
End If
End Sub
'-------------------------------------


"Claire" a écrit dans le message de news:

Bonjour,

J'ai créé un modèle et j'aimerais qu'une fois qu'un fichier est créé à
partir de ce modèle, il soit possible de l'enregistrer une seule fois. Si des
modifications doivent être apportées au fichier par la suite, j'aimerais que
l'utilisateur soit forcé à l'enregistrer sous un autre nom.

Pouvez-vous m'aider?

Merci!

Claire
Avatar
MichDenis
Utilise plutôt cette version, une légère correction a été apportée
: à copier dans le thisWorkbook de ton classeur :

'---------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Z As String
If SaveAsUI = True Then
Else
Do
Z = Application.InputBox(PROMPT:="Inscrivez le NOUVEAU nom du classeur.", _
Title:="Enregistrer sous", Default:="SonNom.xls", Type:=2)
If Format(Z) = False Then Cancel = True: Exit Sub
If LCase(Right(Z, 4)) <> ".xls" Then Z = Z & ".xls"
If UCase(Z) = UCase(ThisWorkbook.Name) Then
If MsgBox("Ce nom existe déjà. Vous devez choisir un autre nom." & _
"Désirez-vous continuer?", vbCritical + vbYesNo, "Nouveau nom") = vbNo Then
Cancel = True
Exit Sub
End If
Else
On Error Resume Next
Application.EnableEvents = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "" & Z
Application.EnableEvents = True
If Err <> 0 Then
Err.Clear
MsgBox "Vous avex saisi un caractère interdit dans " & _
"le nom du fichier : |/*?:><"
Cancel = False
Else
Cancel = True
End If

End If
Loop Until Cancel = True
End If
End Sub
'---------------------------------------




"Claire" a écrit dans le message de news:

Bonjour,

J'ai créé un modèle et j'aimerais qu'une fois qu'un fichier est créé à
partir de ce modèle, il soit possible de l'enregistrer une seule fois. Si des
modifications doivent être apportées au fichier par la suite, j'aimerais que
l'utilisateur soit forcé à l'enregistrer sous un autre nom.

Pouvez-vous m'aider?

Merci!

Claire
Avatar
Claire
Bonjour MichDenis,

Un gros merci, c'est génial. Tout à fait ce que j'avais besoin.

Claire


Utilise plutôt cette version, une légère correction a été apportée
: à copier dans le thisWorkbook de ton classeur :

'---------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Z As String
If SaveAsUI = True Then
Else
Do
Z = Application.InputBox(PROMPT:="Inscrivez le NOUVEAU nom du classeur.", _
Title:="Enregistrer sous", Default:="SonNom.xls", Type:=2)
If Format(Z) = False Then Cancel = True: Exit Sub
If LCase(Right(Z, 4)) <> ".xls" Then Z = Z & ".xls"
If UCase(Z) = UCase(ThisWorkbook.Name) Then
If MsgBox("Ce nom existe déjà. Vous devez choisir un autre nom." & _
"Désirez-vous continuer?", vbCritical + vbYesNo, "Nouveau nom") = vbNo Then
Cancel = True
Exit Sub
End If
Else
On Error Resume Next
Application.EnableEvents = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "" & Z
Application.EnableEvents = True
If Err <> 0 Then
Err.Clear
MsgBox "Vous avex saisi un caractère interdit dans " & _
"le nom du fichier : |/*?:><"
Cancel = False
Else
Cancel = True
End If

End If
Loop Until Cancel = True
End If
End Sub
'---------------------------------------




"Claire" a écrit dans le message de news:

Bonjour,

J'ai créé un modèle et j'aimerais qu'une fois qu'un fichier est créé à
partir de ce modèle, il soit possible de l'enregistrer une seule fois. Si des
modifications doivent être apportées au fichier par la suite, j'aimerais que
l'utilisateur soit forcé à l'enregistrer sous un autre nom.

Pouvez-vous m'aider?

Merci!

Claire