Macro Excel : enregistrer feuille en PDF et envoi pièce jointe
Dernière réponse : dans Programmation
Et oui, encore moi avec mes macros.
Pour ma future activité, je crée une facture sous Excel. J'ai créé une macro qui permet d'enregistrer la facture dans un dossier portant le nom du client, le fichier étant automatiquement nommé avec la date et le numéro de facture. Voilà le code.
Maintenant, je cherche à ce que ma feuille soit automatiquement générée en PDF avec le même nom et, si possible, qu'un mail soit automatiquement ouvert avec le fichier au format PDF en pièce jointe.
Si quelqu'un peut m'aider......
Pour ma future activité, je crée une facture sous Excel. J'ai créé une macro qui permet d'enregistrer la facture dans un dossier portant le nom du client, le fichier étant automatiquement nommé avec la date et le numéro de facture. Voilà le code.
Sub Enregistrement()
Dim Chemin1$, Chemin2$, Client$, Fichier$, Numfact$, Jour$
Chemin1 = "D:\Gestion\Factures\"
Chemin2 = "H:\Zerobug backup\Factures\"
Jour = Format(Day(Now()), "00") & Format(Month(Now()), "00") & Year(Now)
Client = Range("G4")
Numfact = Range("H12")
Fichier = Jour & "_" & Numfact & ".xls"
If Dir(Chemin1 & Client, 16) = "" Then MkDir Chemin1 & Client
ActiveWorkbook.SaveAs Chemin1 & Client & "\" & Fichier
If Dir(Chemin2 & Client, 16) = "" Then MkDir Chemin2 & Client
ActiveWorkbook.SaveAs Chemin2 & Client & "\" & Fichier
End Sub
Maintenant, je cherche à ce que ma feuille soit automatiquement générée en PDF avec le même nom et, si possible, qu'un mail soit automatiquement ouvert avec le fichier au format PDF en pièce jointe.
Si quelqu'un peut m'aider......
Autres pages sur : macro excel enregistrer feuille pdf envoi piece jointe
Lassé par la pub ? Créez un compte
En passant, la ligne 4, tu peux l'écrire comme ça
:
PDF n'est pas géré par Office2003. Il te faut une application externe. Une astuce consiste à installer une "imprimante PDF". Va voir ce que la catégorie "Le monde de Windows" ( http://www.presence-pc.com/forum/ppc/Logiciels/liste_su... ) te propose.
: Jour = Format(Now(), "ddmmyyyy")
PDF n'est pas géré par Office2003. Il te faut une application externe. Une astuce consiste à installer une "imprimante PDF". Va voir ce que la catégorie "Le monde de Windows" ( http://www.presence-pc.com/forum/ppc/Logiciels/liste_su... ) te propose.
Oui, mais j'ai Acrobat qui installe une imprimante PDF !
Sinon, merci pour la ligne 4, ça simplifie pas mal en effet.
Sinon, comme macro pour le PDF, j'ai déjà ça comme début :
A rajouter à la suite de me première macro.
Mais je veux que le fichier soit automatiquement enregistré dans le bon dossier (Then MkDir Chemin1 & Client) et avec le bon nom (Jour & "_" & Numfact), sans que j'ai la moindre action à faire....et c'est là que je coince.
Sinon, merci pour la ligne 4, ça simplifie pas mal en effet.
Sinon, comme macro pour le PDF, j'ai déjà ça comme début :
Application.ActivePrinter = "Adobe PDF sur Ne03:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Adobe PDF sur Ne03:", Collate:=True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Adobe PDF sur Ne03:", Collate:=True
A rajouter à la suite de me première macro.
Mais je veux que le fichier soit automatiquement enregistré dans le bon dossier (Then MkDir Chemin1 & Client) et avec le bon nom (Jour & "_" & Numfact), sans que j'ai la moindre action à faire....et c'est là que je coince.
Bon, ça progresse doucement, mais toujours pas au point.
Voilà la dernière version de ma macro :
Donc, ça m'enregistre bien mon fichier XLS avec le bon nom et dans le bon dossier (nom et prénom du client qui fait référence à la cellule H7), ça me lance ensuite "l'impression" PDF via l'imprimante Acrobat, avec là aussi le bon nom. Mais je dois sélectionner le dossier de destination, et même en sélectionnant le bon dossier de destination, il l'enregistre dans C:\Mes Documents (qui fait référence au port de l'imprimante PDF). Vous me direz bien que le plus simple serait de modifier le port de l'imprimante, mais vu que chaque PDF est enregistré dans un dossier différent, ça ne me convient pas.
Je rappelle que j'utilise Acrobat 7.
Merci à l'âme charitable qui pourrait venir me donner un coup de main.
Voilà la dernière version de ma macro :
Sub Enregistrement()
Dim Chemin1$, Chemin2$, Client$, Fichier$, Numfact$, Jour$, F$, N$
Chemin1 = "H:\Zerobug backup\Factures\"
Chemin2 = "D:\Gestion\Factures\"
Jour = Format(Now(), "ddmmyyyy")
Client = Range("H7")
Numfact = Range("I15")
Fichier = Jour & "_" & Numfact & ".xls"
If Dir(Chemin1 & Client, 16) = "" Then MkDir Chemin1 & Client
ActiveWorkbook.SaveAs Chemin1 & Client & "\" & Fichier
If Dir(Chemin2 & Client, 16) = "" Then MkDir Chemin2 & Client
ActiveWorkbook.SaveAs Chemin2 & Client & "\" & Fichier
N = Jour & "_" & Numfact
F = Application.GetSaveAsFilename(N, "fichier pdf,*.pdf")
Application.ActivePrinter = "Adobe PDF sur Ne03:"
SendKeys N & "{ENTER}", False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Adobe PDF sur Ne03:"
End Sub
Donc, ça m'enregistre bien mon fichier XLS avec le bon nom et dans le bon dossier (nom et prénom du client qui fait référence à la cellule H7), ça me lance ensuite "l'impression" PDF via l'imprimante Acrobat, avec là aussi le bon nom. Mais je dois sélectionner le dossier de destination, et même en sélectionnant le bon dossier de destination, il l'enregistre dans C:\Mes Documents (qui fait référence au port de l'imprimante PDF). Vous me direz bien que le plus simple serait de modifier le port de l'imprimante, mais vu que chaque PDF est enregistré dans un dossier différent, ça ne me convient pas.
Je rappelle que j'utilise Acrobat 7.
Merci à l'âme charitable qui pourrait venir me donner un coup de main.
Salut,
J'ai déjà fait ce genre de chose, pour créer le pdf on a un logiciel appelé PDFCreator qui simule une imprimante, par contre il faut régler le logiciel pour qu'il créé automatiquement la sauvegarde dans un répertoire paramétré.
Ensuite tu fais boucler le programme jusqu'à que la création soit fini et la tu le copie dans le répertoire voulu.
Voilà ce que ca donne dans mon programme.
Les constantes sont
K_REP_PDF : répertoire de création automatique du PDF
K_REP_MIRA : répertoire de destination finale du fichier
K_SHEET_TEMP : nom de l'onglet et donc du fichier créé.
Bon courage
J'ai déjà fait ce genre de chose, pour créer le pdf on a un logiciel appelé PDFCreator qui simule une imprimante, par contre il faut régler le logiciel pour qu'il créé automatiquement la sauvegarde dans un répertoire paramétré.
Ensuite tu fais boucler le programme jusqu'à que la création soit fini et la tu le copie dans le répertoire voulu.
Voilà ce que ca donne dans mon programme.
Private Function GenererPDF() As Boolean
On Error GoTo sortie_erreur
GenererPDF = False
Application.ActivePrinter = "PDFCreator sur Ne00:"
wb_file.Sheets(K_SHEET_TEMP).PrintOut
While UCase(Dir(K_REP_PDF & K_SHEET_TEMP & ".pdf")) <> UCase(K_SHEET_TEMP & ".pdf")
DoEvents
Wend
If UCase(Dir(K_REP_PDF & K_SHEET_TEMP & ".pdf")) = UCase(K_SHEET_TEMP & ".pdf") Then
GenererPDF = True
End If
sortie:
Exit Function
sortie_erreur:
MsgBox Err.Description
Resume sortie
End Function
Private Function CopyMira() As Variant
On Error GoTo sortie_erreur
Dim system As Object
Dim file As Object
Dim sname As Variant
'K_REP_PDF & K_SHEET_TEMP & ".xls.pdf"
sname = Null
Set system = CreateObject("Scripting.FileSystemObject")
Set file = system.GetFile(K_REP_PDF & K_SHEET_TEMP & ".pdf")
If system.FolderExists(K_REP_MIRA) Then
sname = K_REP_MIRA & Format(Now, "dd-mm-yy") & "_Dashboard_v2.pdf"
file.Copy sname, True
' 12-12-06_Dashboard_Bayplans_LARA_v2.pdf
system.DeleteFile K_REP_PDF & K_SHEET_TEMP & ".pdf", True
Else
MsgBox "Impossible de trouver le répertoire de destination.", vbCritical
End If
sortie:
CopyMira = sname
Exit Function
sortie_erreur:
MsgBox Err.Description
Resume sortie
End Function
Les constantes sont
K_REP_PDF : répertoire de création automatique du PDF
K_REP_MIRA : répertoire de destination finale du fichier
K_SHEET_TEMP : nom de l'onglet et donc du fichier créé.
Bon courage
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumMacro excel enregistrer fichier
- ForumMacro excel enregistrer les mã mes pages pdf
- ForumEnregistrer feuille excel en pdf
- ForumExcel enregistrer pdf
- ForumEnvoi mail avec pièce jointe pdf php
- ForumEnregistrer feuille excel en pdf vba
- ForumEnvoi mail pièce jointe
- ForumComment imprimer une pièce jointe pdf
- ForumExcel enregistrer macro pour tout classeur
- ForumMacro excel pdf
- Voir plus