Sauvegarder une copie en utilisant la boîte de dialogue

Bonjour à tous!

Tout est dans le titre. Je souhaiterais trouver quelque chose qui regroupe Application.Dialogs(xlDialogSaveAs).Show et ActiveWorkbook.SaveCopyAs afin de permettre à l'utilisateur d'archiver son travail en créant une copie et en choisissant le nom de la copie via la boîte de dialogue "enregistrer sous". Quelqu'un aurait-il la solution?

Merci d'avance

Bonjour, un petit lien ce le cours concernant les boites de dialogues ;

Vous devriez facilement trouver la boite qui demande le "nom du fichier"

Ensuite pas très difficile d'utiliser la réponse de l'utilisateur dans votre ligne save copy as.

Par contre celà ne laissera pas le choix du l'endroit de l'enregistrement ( même endroit que l'original )

https://www.excel-pratique.com/fr/vba/boites_de_dialogue

Bonjour,

Merci j'ai réussi. Mais ce n'est pas ça que je voulais exactement car je ne connaissais pas encore la fonction ActiveWorkbook.SaveCopyAs. Pour le moment j'ai le code suivant :

If MsgBox("Would you like to save the document?", vbYesNo, "Confirmation request") = vbYes Then
Application.Dialogs(xlDialogSaveAs).Show
bookarchive = ActiveWorkbook.Name

Ce qui se passe : le fichier s'appelle "OTD", il choisit de l'enregistrer en "archive". A la fin de la macro, il se retrouve donc à travailler sur le fichier qui s'appelle désormais archive. Ce que j'aimerais, c'est la même chose sauf qu'à la fin de la macro, il soit toujours sur le fichier "OTD" tout en ayant sauvegardé le même fichier sous le nom "archive", et ceci en ayant choisi l'emplacement du fichier "archive" avec la dialogBox de sauvegarde.

Re bonjour,

Un petit exemple avec une boite de dialogue qui demande le nom de fichier pour la copie :

Sub Macro1()
'DELCARATION DES VARIABLE
Dim NOMCOPIE As String
Dim CHEMIN As String

'BOITE DE DIALOGUE POUR RECUPERER LE NOM DE FICHIER
NOMCOPIE = InputBox("Indiquez le Nom de fichier", "SOUHAITEZ VOUS ENREGISTRER UNE COPIE")

'ADRESSE D'ENREGISTREMENT PAR DEFAUT (Peut être personnalisée)
CHEMIN = ThisWorkbook.Path & "\"

'ON VERIFIE SI L'UTILISATEUR A INDIQUE UN NOM DE FICHIER
If NOMCOPIE = "" Then
Exit Sub
Else

'ON ENREGISTRE LA COPIE AVEC LE NOM PRECEDEMMENT INDIQUE
ThisWorkbook.SaveCopyAs CHEMIN & NOMCOPIE & ".xlsm"
End If

End Sub

Merci pour ta réponse Xmenpl.

Ta solution fonctionne très bien, mais c'est moi qui me suis mal exprimé quant à ma recherche.

J'ai trouvé une solution à mon problème et vous la partage, si quelqu'un en a besoin par la suite. Et si jamais le code nécessite amélioration, vous le fournir sera bien plus explicite que ma demande mal formulée :

Sub Archive()

ThisWorkbook.save
abc = ThisWorkbook.Name

If MsgBox("Would you like to archive this document?", vbYesNo, "Confirmation request") = vbYes Then
Application.Dialogs(xlDialogSaveAs).Show
bookarchive = ActiveWorkbook.Name
Workbooks.Open (abc)

Workbooks(bookarchive).Close
'Feuil3.Activate
End If
End Sub

C'est la seule méthode que j'ai trouvé pour pouvoir sauvegarder mon fichier sous un autre nom et reprendre mon travail sur ce même fichier. Cela consiste à sauvegarder le fichier au préalable, puis le sauvegarder sous un autre nom, puis réouvrir le fichier avec le nom original, puis fermer la copie avec l'autre nom.

Rechercher des sujets similaires à "sauvegarder copie utilisant boite dialogue"