Macro - bouton enregistrer sous (format uniquement possible .xlsm)

Bonjour,

Je souhaiterai affecter une macro à un bouton (sur mon modèle) afin d'ouvrir la fenêtre "enregistrer sous" en préremplissant le nom du fichier selon des cellules et en "forçant" le format d'enregistrement en .xlsm

Quelqu'un peu m'aider ?

Bonne journée !

BOB

J'ai trouvé cela en parcourant internet

Sub EnregTOT()

    Fichier = Worksheets("accueil").Range("S7") & "-" & Worksheets("accueil").Range("M8") & "-" & "Analyse SPS" & "-" & Worksheets("accueil").Range("E3") & "-" & Format(Date, "dd-mm-yyyy")

    f = Application.GetSaveAsFilename(Fichier, "Fichiers Excel en prenant charge les macros (*.xlsm), *.xlsm", , "Save As xlsm file")

End Sub

Le nom de fichier fonctionne parfaitement.

Le format semble être bon, mais au moment d'enregistrer, le fenêtre se ferme, je reste sur mon modèle et le fichier qui "semble" s'être enregistré-sous est introuvable dans le fichier de destination...

Bonjour,

Ci-contre un code qui fonctionne. Vous ne récupériez pas le chemin de la dialogbox pour l'enregistrer :

Sub EnregTOT()
With Worksheets("accueil")
    Fichier = .[S7] & "-" & .[M8] & "-" & "Analyse SPS" & "-" & .[E3] & "-" & Format(Date, "dd-mm-yyyy")
End With
With Application.FileDialog(msoFileDialogSaveAs)
    .InitialFileName = Fichier
    .FilterIndex = 2
    If .Show = -1 Then ThisWorkbook.SaveAs Filename:=.SelectedItems(1), FileFormat:=xlOpenXMLWorkbookMacroEnabled
End With
End Sub

Cdlt,

Bonjour

Il vous manque une ligne. essayez ceci

Sub EnregTOT()
Dim fichier As String
Dim f As String
With Worksheets("accueil")
    fichier = .Range("S7") & "-" & .Range("M8") & "-" & "Analyse SPS" & "-" & .Range("E3") & "-" & Format(Date, "dd-mm-yyyy")
    f = Application.GetSaveAsFilename(fichier, "Fichiers Excel en prenant charge les macros (*.xlsm), *.xlsm", , "Save As xlsm file")
    ThisWorkbook.SaveAs Filename:=f
End With
End Sub

Cordialement

Merci pour votre réponse,

Je viens d'essayer, la macro se stoppe au moment après avoir appuyé sur "enregistrer".

image

Je n'ai aucun souci de mon coté

Le problème doit venir d'ailleurs

Edit : une fois sur l'arrêt (ligne jaune), passer votre curseur de souris sur la variable F pour voir quelle est sa valeur

En mettant mon curseur sur f, Il m'indique le chemin d'accès f="D:\Documents\...(le nom que je demande à mon fichier)

D:\documents\ c'est le répertoire que vous avez choisi

En cliquant sur enregistrer, cela doit fonctionner.

Votre code est bien dans le classeur à enregistrer ?

Je vous mets en PJ mon fichier.

Le bouton se trouve sur la feuille "SPS"

PS: je débute en macro ^^ il n'y a pas beaucoup d'ordre dans tout ça =)

image
24amo-mod-v4.zip (1.14 Mo)

Bonjour Bob , et Bonjour Dan Votre original est au format "xltm" un format différent de celui d'enregistrement.

Dans ce cas en remplacçant la dernière ligne celà devrait fonctionner :

ThisWorkbook.SaveAs Filename:=f

'Remplacer par 

ThisWorkbook.SaveCopyAs Filename:=f

Bonjour,

Merci pour votre réponse, est ce que le fichier "xltm" va se fermer pour que l'utilisateur travail sur sa copie en "xlsm" ?

Non comme c'est un copie et que vous laissez le choix de l'endroit de l'enregistrement le document ne sera pas réouvert.

Par contre si vous souhaiter fermer le xltm à la fin de la copy il suffut d'ajouter à la fin ( aprés le End with )

ActiveWorkbook.Close

Ou vous repartez en arrière : Vous changer le format de votre orignal pour le remettre en Xlsm.

Vous remettez le code de Dan à son origine ainsi aprés enregistrement l'utilisateur se trouve directement sur le bon fichier

puisque cette fois ci ce n'est plus un "Savecopy"

Je pense avoir compris ^^

Je vais essayer ca ! je reviens vers vous.

Merci !

Ca fonctionne par contre, étant donné que le fichier de base n'est plus un modèle, il risque d'être écrasé si quelqu'un n'enregistre pas par le biais du bouton ...

Il y a t-il une solution pour que cela n'arrive pas ? ce document sera ouvert vierge et doit être enregistré sous à chaque utilisation ...

Oui il vous suffit de faire un clic doit sur votre fichier dans l'explorateur option "Propriété" et vous cochez lecture seule.

Aucune modification ne pourra s'enregistrer et même si l'utilisateur utilise l'option d'enregistrement automatique ( CTRL S )

il sera automatiquement redirigé vers l'option d'enregistrement de copie.

C'est noté, merci à vous deux pour votre aide ! Je clôture ma demande =)

A bientôt ^^

Bonjour,

Mon code ne fonctionnait pas ? Chez moi il semblait être OK. Ou tout le monde est passé à travers ou il ne répondait pas assez spécifiquement au besoin ?

Par avance merci.

Cdlt,

Rechercher des sujets similaires à "macro bouton enregistrer format uniquement possible xlsm"