Enregistrer sous

bonjour, après avoir cherché (mal surement) je n'arrive pas

Ma formule ci dessous me permets, en cliquant sur le bouton, de recuperer la valeur txt de la cellule H5, et d'enregistrer dans un endroit précis mon onglet uniquement en tant que nouvelle feuille, avec le nom Fiche_Mouvement_"H5".

    Sub Enregistrer()

    If Range("H5") = "" Then
    MsgBox "Merci de remplir le numéro @Services"
    Exit Sub

  Else

    Dim extension As String
    Dim chemin As String, nomfichier As String
    Dim style As Integer
    Application.ScreenUpdating = False
    ThisWorkbook.ActiveSheet.Copy
    extension = ".xlsx"
    chemin = "C:\"
    nomfichier = ActiveSheet.Range("A1") & "Fiche_Mouvement_" & Range("H5") & extension
    With ActiveWorkbook
        .ActiveSheet.DrawingObjects.Delete
        .SaveAs Filename:=chemin & nomfichier
        .Close
    End With
     End If
    End Sub

Ma question est comment faire pour faire afficher la boite de dialogue "Enregistrer sous" au lieux de faire un enregistrement direct dans le c:\ ? et si possible faire en sorte de pré renseigner le nom du ficher "Fiche_Mouvement_" & Range("H5")

bonsoir,

Ça va surement poser problème surtout si tu dissocies chemin et filename ou alors il faudra que tu prépares le coup en faisant un un changement de path préalable... Bref ça va pas être trop simple.

Fais une recherche sur : GetSaveAsFileName

Je te donne une macro qui te donnera un aperçu du problème : (en mettant un point d'arrêt sur If fname = False

Sub Enregistrer()
Dim extension As String
Dim chemin As String, nomfichier As String
Dim style As Integer
Dim fname '************** Nouveau

If Range("H5") = "" Then
    MsgBox "Merci de remplir le numéro @Services"
    Exit Sub
Else
Application.DisplayAlerts = False 'pour éviter un message relatif à la suppression du VBA
ThisWorkbook.ActiveSheet.Copy
extension = ".xlsx"
chemin = "C:\"
nomfichier = ActiveSheet.Range("A1") & "Fiche_Mouvement_" & Range("H5") & extension
'********************
fname = Application.GetSaveAsFilename(InitialFileName:=nomfichier, FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Save As")
'A ce stade le fichier n'est pas sauvegardé :
'fname contient seulement le nom du fichier qui a été entré
If fname = False Then Exit Sub
With ActiveWorkbook
    .ActiveSheet.DrawingObjects.Delete
    .SaveAs Filename:=chemin & fname ' :( !!!
    .Close
End With
 End If
End Sub

A ce stade InitialFileName:=nomfichier semble ne pas fonctionner au moins chez moi avec 2016.

Cependant je suppose que c'est peut-être un problème lié au path qui crée cette anomalie. En tout cas la syntaxe est bonne : Attention de noter au passage le contenu de fname sinon à l'exécution, tu risques d'avoir des problèmes pour retrouver ton fichier (peut-être même un plantage) lié à un conflit entre chemin et fname....

A+

Ok merci bcp !!!

Je vais voir cela à tête reposée

Rechercher des sujets similaires à "enregistrer"