Obliger d'enregistrer sous un autre nom

Bonjour,

J'ai encore besoin de votre aide.

Lorsque l'on clique sur le bouton valider de l'Userform2 la fenêtre "enregistrer sous" s'ouvre.

Voici mon code

Dim fichier As String

On Error Resume Next

ChDir "C:\CITINEA_DR\08_EDP\11_Partage\STAGIAIRES"

fichier = Application.GetSaveAsFilename( _

fileFilter:="Excel Files (*.xls), *.xls")

If fichier <> False Then ThisWorkbook.SaveAs fichier

mais il est incomplet car j'aimerai le complexifier

J'aimerais afficher une MsgBox, "enregistrer votre fichier sous un nouveau nom"

J'aimerais obliger l'utilisateur à enregistrer sous un autre nom, qu'il ne puisse pas appuyer sur le bouton annuler, je veux l'obliger à faire cette étape.

Merci pour votre aide

Bonjour,

lorsque tu cliques sur Valider de l'Userform2, celui-ci doit ouvrir Userform3 par exemple avec une TextBox, un bouton et ta phrase "enregistrer votre fichier sous un nouveau nom".

Sur ce bouton valider, tu peux mettre ton code :

ThisWorkbook.SaveCopyAs("C:\CITINEA_DR\08_EDP\11_Partage\STAGIAIRES\" & Textbox1.value)

pour encore plus d'efficacité, tu peux mettre ce code sur ton userform :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

il empechera la personne de fermer l'userform avec la croix rouge.

A plus

Re

Merci de votre réponse! J'ai appliqué les codes que vous m'avez donnés

Une erreur survient, excel n'arrive pas à enregistrer le fichier sous ce chemin

C:\CITINEA_DR\08_EDP\11_Partage\STAGIAIRES\"

Ne peut-on pas laisser l'utilisateur choisir ou il veut classer son fichier ?

Ci-joint le fichier modifié avec vos codes

Merci de votre aide

Voilà, je pense que ca ira comme ça, dis nous

Re

Je suis exigeante désolé

Il manque un petit truc à votre code:

  • il empêche bien à l'utilisateur d'appuyer sur annuler
  • mais il n'empêche pas d'enregistrer sous le même nom

Dans la capture d'écran que je vous ai joint, "ChiffrageCES1-Enregistrement (1)" existe déjà dans mon dossier, pourtant si j'appuie sur "enregistrer", je vais le remplacer.

Et c'est ce que je veux éviter absolument. Le fichier de base reste intacte et chaque utilisateur enregistre sa version

Merci pour votre aide et pour le temps que vous y passez

6exemple.docx (276.69 Ko)

Pas de soucis, c'est normal de vouloir un fichier fonctionnel.

Sur la ligne de code d'enregistrement, tu as :

If Fichier <> False then 'blablabla
'tu peux mettre
If Fichier <> False and Fichier <> ThisWorkbook.name then 'blablabla

Normalement ca devrait fonctionner.

Après le problème peut venir du fait que ton classeur est en .xlsm et que l'enregistrement se fait en .xls il me semble !

si c'est le cas après ton test, tu peux essayer de mettre :

Fichier <> Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5) 'A la place de ThisWorkbook.Name tout seul

A tester !

Re

J'ai fais ce que vous m'avez dit. Comme si dessous mais ça ne marche toujours pas. Je peux toujours enregistrer le fichier sous le même nom.

Private Sub CommandButton1_Click()

Dim fichier As String

On Error Resume Next

ChDir "C:\Users\"

Do

fichier = Application.GetSaveAsFilename( _

fileFilter:="Excel Files (*.xlsm), *.xlsm")

If fichier <> False And fichier <> fichier <> Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5) Then

ThisWorkbook.SaveCopyAs fichier

End

Exit Do

End If

Loop While 1 = 1

End Sub

Bonjour,

désolé, je pensais vous avoir répondu lol !

Voilà le code à mettre pour éviter d'enregistrer sous le même nom.

Private Sub CommandButton1_Click()

Dim fichier As String
On Error Resume Next
ChDir "C:\Users\"
Do
    fichier = Application.GetSaveAsFilename( _
    fileFilter:="Excel Files (*.xlsm), *.xlsm")
    Nom = Split(fichier, "\")
    For I = 1 To UBound(Nom)
        If I = UBound(Nom) Then Mot = Nom(I)
        Mot = Left(Nom(I), Len(Nom(I)) - 5)
    Next I
    TW = ThisWorkbook.Name
    Wk = Left(TW, Len(TW) - 5)
    If Mot <> Wk Then
        If fichier <> False Then
            ThisWorkbook.SaveCopyAs fichier
            End
            Exit Do
        End If
    End If
Loop While 1 = 1
End Sub

A plus !

Rechercher des sujets similaires à "obliger enregistrer nom"