Macro enregistrement
Bonjour à tous !
Je reviens vers vous car j'ai toujours été bien reçu et suis toujours surpris de l'investissement des utilisateurs.
Débutant en VBA j'aurais besoin de votre aide : je cherche à réaliser une macro assignée à un bouton pour enregistrer le premier onglet d'un fichier en copié valeur sous un nouveau nom.
Voilà où j'en suis au niveau de mon code pour l'instant :
'Procédure permettant de réaliser un fichier de sauvegarde
Sub SauvegardeEnregistre()
'Déclaration des variables
Dim NomDossier As String
Dim NomFichier As String
'Affectation des variables
NomDossier = "C:\Users\MATHIEU\Test Sauvegarde\"
'Désactiver les messages d'alertes
Application.DisplayAlerts = False
'On créé le nom du fichier de sauvegarde (Date + Nom)
NomFichier = Day(Date) & "." & Month(Date) & "." & Year(Date) & " " & "Test Sauvegarde.xlsm"
'On sauvegarde le fichier de backup
ActiveWorkbook.SaveCopyAs NomDossier & NomFichier
'On affiche un message de confirmation de sauvegarde
MsgBox "Votre fichier de sauvegarde : " & NomFichier & vbNewLine & _
"a bien été enregistré dans le dossier suivant : " & NomDossier, vbOKOnly + vbInformation, "VALIDATION DE SAUVEGARDE"
'On quitte excel
Workbooks("NomFichier").Close FalseJ'ai pu trouver ce code via un tutoriel sur youtube mais je ne trouve pas le moyen de n'enregistrer que l'onglet 1 en copié valeurs dans la macro. Cela permettrait d'éviter au fichier de ramer car les calculs sur les autres onglets sont conséquents et ralentissent le processus.
Cet onglet 1 reprend aussi des diagrammes construits dans un autre onglet, est-il possible de les afficher tout de même sans enregistrer l'onglet en question ?
Merci d'avance pour votre lecture, et d'autant plus pour ceux qui prendront le temps de me répondre.
Cordialement,
Mtlvq
Bonjour,
Vous ne pouvez pas enregistrer un fichier avec son nom commençant par un chiffre, vous devez mettre le nom en texte en premier suivi de la date.
le code pour n'enregistrer que la feuille active:
Application.DisplayAlerts = False
ActiveSheet.Copy
NomFichier = "Test Sauvegarde.xlsm" & Day(Date) & "_" & Month(Date) & "_" & Year(Date)
ActiveWorkbook.SaveAs Filename:=NomFichierCdlt
Bonjour Arturo83, merci beaucoup pour ces informations, mon code devrait donc être :
Sub SauvegardeEnregistre()
Dim NomDossier As String
Dim NomFichier As String
NomDossier = "C:\Users\MATHIEU\Test Sauvegarde\"
Application.DisplayAlerts = False
NomFichier = "Test Sauvegarde.xlsm" & Day(Date) & "_" & Month(Date) & "_" & Year(Date)
ActiveWorkbook.SaveCopyAs Filename:=NomFichier
MsgBox "Votre fichier de sauvegarde : " & NomFichier & vbNewLine & _
"a bien été enregistré dans le dossier suivant : " & NomDossier, vbOKOnly + vbInformation, "VALIDATION DE SAUVEGARDE"Mais j'y ai pensé ce matin, est-il possible de sauvegarder ce premier onglet au format PDF avec la date associée via ce code ?
Merci d'avance,
Bonjour,
Je viens de m'apercevoir d'une petite erreur sur le nom du fichier à enregistrer, ce devrait être:
NomFichier = "Test Sauvegarde_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".xlsm"Pour l'enregistrement en PDF je regarderai plus tard, là je n'ai pas le temps.
Cdlt
Bonjour,
Pour l'enregistrement de la feuille active au format PDF:
Sub Sauvegarde_Enregistre_En_PDF()
Dim NomDossier As String
Dim NomFichier As String
Application.DisplayAlerts = False
NomDossier = "C:\Users\MATHIEU\Test Sauvegarde\"
ActiveSheet.Copy
NomFichier = "Test Sauvegarde_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomDossier & NomFichier & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
MsgBox "Votre fichier de sauvegarde : " & NomFichier & vbNewLine & _
"a bien été enregistré dans le dossier suivant : " & NomDossier, vbOKOnly + vbInformation, "VALIDATION DE SAUVEGARDE"
End SubCdlt
Bonjour Arturo83,
Merci beaucoup de votre réponse et de manière si matinale :D
J'ai testé la macro qui fonctionne parfaitement. Merci beaucoup. Dernière question par soucis de perfectionnisme, je pense que la ligne ActiveSheet.Copy créé un fichier excel sous nom "Classeur1" avec la copie de l'onglet 1 pour en faire la publication PDF, est-ce cela ?
Est-il possible d'ajouter une ligne en fin de code pour fermer spécifiquement le Classeur1 en fin de publication PDF ?
Si d'autres personnes veulent s'en servir, n'oubliez pas de définir votre zone d'impression à la zone que vous souhaiterez retrouver dans votre PDF. (Affichage => Avec Sauts de Page)
Est-il possible d'ajouter une ligne en fin de code pour fermer spécifiquement le Classeur1 en fin de publication PDF ? OUI
Voilà:
Sub Sauvegarde_Enregistre_En_PDF()Dim NomDossier As String
Dim NomFichier As String
Application.DisplayAlerts = False
NomDossier = "C:\Users\MATHIEU\Test Sauvegarde\"
ActiveSheet.Copy
NomFichier = "Test Sauvegarde_" & Day(Date) & "_" & Month(Date) & "_" & Year(Date)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomDossier & NomFichier & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveWorkbook.Close
MsgBox "Votre fichier de sauvegarde : " & NomFichier & vbNewLine & _
"a bien été enregistré dans le dossier suivant : " & NomDossier, vbOKOnly + vbInformation, "VALIDATION DE SAUVEGARDE"
End SubCdlt
Superbe. Merci beaucoup pour votre investissement Arturo83 :)
Je vous souhaite une très bonne journée et au forum,
Cdlt,
Mtlvq