VBA - Enregistrer sous et imprimer

Bonjour à tous !

Ce forum m'a déjà bien dépatouillée il y a quelques semaines, et puisque j'arrive au bout de mon projet, je tente une dernière fois ma chance...

Je souhaiterais obtenir 2 choses de mes macro :

- Une macro qui permette d'"enregistrer sous" (mais sans avoir de chemin prédéfini, puisque ce sera à terme un fichier multi-utilisateurs) : grosso modo, je voudrais que s'ouvre la fenêtre de dialogue "enregistrer sous" avec comme nom prédéfini le libellé d'une cellule de la feuille Excel (j'ai réussi à récupérer une macro qui semblait marcher, mais... ben non, "Erreur d'éxecution 424 : objet requis" (mes connaissances en VBA étant clairement imitées... comprends pas !))

- Une macro permettant de choisir une des imprimantes connectées (ça ne sera pas les mêmes imprimantes pour tout le monde, puisqu'encore une fois, mon fichier sera multi-utilisateurs... sur des sites différents, sinon c'est pas drôle !), et de lancer l'impression si souhaité. Dans l'idéal, j'aurais voulu voir apparaitre l'aperçu avant impression qui permet également de régler les paramètres de l'imprimante (ou d'imprimer en PDF), mais j'ai cru comprendre que ce n'était pas possible. La macro "imprimer" que j'ai ds mon classeur ne permet d'imprimer que sur une imprimante physique (et donc pas de PDF possible), donc ça ne me convient pas...

Je vous joins mon petit fichier d'exemple.

Merci d'avance !

Salut,

Je te propose un fichier dans lequel se trouve une macro qui pourrait éventuellement être adaptable à ton cas. A voir.

La ligne nomFichier = "xxxxxxxxxxxxxxxxx" qui propose un nom de fichier est facultative.

Pour ta deuxième question, je te propose d'ouvrir un nouveau fil afin de ne pas trop mélanger les choses, à moins que l'instruction

PrintPreview te suffise (par exemple ActiveSheet.PrintPreview).

Cordialement.

147essai-v1.xlsm (17.50 Ko)

Merci pour ta réponse, c'est exactement ce dont j'ai besoin !!!

En revanche, en pratique, il ne se passe rien quand je clique sur le bouton "Enregistrer sous..." de ton fichier (et encore moins quand je retranscris la macro dans mon fichier à moi)

Je ne maîtrise pas du tout le sujet, mais est-ce que tu l'as fait sur Excel 2013 ? Je sais qu'il peut des fois y avoir des soucis de portabilité entre les VBA des différentes versions d'Excel.

Je suis venu à l'ordinateur afin de l'éteindre pour la journée et je vois ton dernier message.

Es-tu certain que les macros sont enclenchées sur ton PC ?

L'instruction Application.Dialogs(xlDialogSaveAs).Show devrait ouvrir la fenêtre qui te permet d’enregistrer un fichier sous un nom quelconque dans ton arborescence (le ‘’Enregistrer sous …’’ d’Excel).

Va éventuellement jeter un coup d’œil à ce fil si tu ne connais pas la méthode ‘’Pas à pas’’ pour étudier un code

https://forum.excel-pratique.com/post333120.html?hilit=arrêt#p333120 (La balise URL ne fonctionne pas, copie et colle ce lien dans ton explorateur internet)

Eventuellement à ce soir.

Oui oui les macros sont bien enclenchées, puisque toutes les autres dans mon classeur fonctionnent.

Coup de bol : je viens de tomber sur un message de ce forum qui reprenait exactement ce dont j'avais besoin pour le "Enregistrer sous" :

Sub EnregFichXlsm()

    Dim Sauvegarde As Variant

    If [C5] = "" Then MsgBox ("Veuillez renseigner le champ ""INTITULÉ"" "): Exit Sub

    On Error Resume Next
    Sauvegarde = Application.GetSaveAsFilename(Range("C5"), FileFilter:=" Excel Macro Enabled Workbook (*.xlsm), *.xlsm")
       If Sauvegarde = False Then
        Exit Sub
       End If

    ThisWorkbook.SaveAs Filename:=Sauvegarde, FileFormat:=xlOpenXMLWorkbookMacroEnabled

End Sub

Et là, ça marche impeccable.

Reste le pb de l'imprimante (le problème du PrintPreview, que j'utilise actuellement, c'est qu'on ne peut imprimer QUE sur une imprimante physique, mais pas en PDF), que j'essaie de régler dans la journée (pas le choix de toutes façons, je présente mon outil demain !) Je reposterai effectivement un nouveau message si je ne m'en sors pas.

Merci et bonne journée !

Je me suis également débrouillée pour l'impression, ça donne, avec 2 lignes :

Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut preview:=True

Donc c'était bien en passant par un PrintOut avec preview

Bonne fin de WE !

Rechercher des sujets similaires à "vba enregistrer imprimer"