Transformation d'un fichier excel en PDF par macro
lebeaujo
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
lebeaujo -
lebeaujo -
Bonjour,
Voila, j'utilise le code si dessous qui a été fourni par Mike 31 pour une autre utilisateur que moi.
Cela fonctionne impec, mais le seul souci que j'ai, est que j'utilise ce code pour des commande de mazout pour différents engins ferrovières et je voudrais pouvoir garder une preuve de commande.
J'ai supprimé la ligne "Kill..............., le fichier PDF reste bien dans un dossier, mais quand je lance une nouvelle commande ce fichier est remplacé par le fichier de la nouvelle commande, comment pourrais-je faire pour garder tous les fichiers automatiquement
D'avance je vous remercie
la feuille Devis est créée en extension PDF, Envoyée et supprimée.
coller ce code dans un module et l'associer à un bouton ou verra plus tard de l'associer à un activeX
renseigner cette ligne du code en remplaçant les xxxx par l'adresse mail du destinataire
objMessage.To = "xxx.xxxxx@free.fr"
et éventuellement objMessage.From = "adresse mail expéditeur" ou simplement un "Nom" entre guillemet
mettre à jour le SMTP qui est celui de votre fournisseur d'accès
Sub Envoi_Feuil_Excel_en_PDF()
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("Devis").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & "Devis.pdf"
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Sujet du Message"
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = "xxx.xxxxx@free.fr" 'Email du destinataire doit-être correct ici
objMessage.TextBody = "Bonjour," & vbCrLf & "Veuillez trouver en piéce jointe votre facture" & vbCrLf & "en votre aimable réglement"
piece_jointe = ActiveWorkbook.Path & "\" & "Devis.pdf"
''piece_jointe = "C:\Documents and Settings\Les Lagouanère\Bureau\0917_001.pdf" 'chemin du fichier à envoyer en piéce-jointe
'piece_bis = "C:\Documents and Settings\Les Lagouanère\Bureau\Cligno.xls" ' Si on souhaite envoyer plusieurs pièces les déclarer
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe, il est possible d'envoyer plusieurs pièces
'objMessage.AddAttachment (piece_bis) 'dans ce cas on ajoute un objMessage.AddAttachement () par pièce
objMessage.Send
MsgBox "Le mail a été bien envoyé !"
'la feuille PDF créée est est supprimée après l'envoi
Kill ActiveWorkbook.Path & "\" & "Devis.pdf"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
Voila, j'utilise le code si dessous qui a été fourni par Mike 31 pour une autre utilisateur que moi.
Cela fonctionne impec, mais le seul souci que j'ai, est que j'utilise ce code pour des commande de mazout pour différents engins ferrovières et je voudrais pouvoir garder une preuve de commande.
J'ai supprimé la ligne "Kill..............., le fichier PDF reste bien dans un dossier, mais quand je lance une nouvelle commande ce fichier est remplacé par le fichier de la nouvelle commande, comment pourrais-je faire pour garder tous les fichiers automatiquement
D'avance je vous remercie
la feuille Devis est créée en extension PDF, Envoyée et supprimée.
coller ce code dans un module et l'associer à un bouton ou verra plus tard de l'associer à un activeX
renseigner cette ligne du code en remplaçant les xxxx par l'adresse mail du destinataire
objMessage.To = "xxx.xxxxx@free.fr"
et éventuellement objMessage.From = "adresse mail expéditeur" ou simplement un "Nom" entre guillemet
mettre à jour le SMTP qui est celui de votre fournisseur d'accès
Sub Envoi_Feuil_Excel_en_PDF()
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("Devis").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & "Devis.pdf"
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Sujet du Message"
objMessage.From = "xxx.xxxxxx@free.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
objMessage.To = "xxx.xxxxx@free.fr" 'Email du destinataire doit-être correct ici
objMessage.TextBody = "Bonjour," & vbCrLf & "Veuillez trouver en piéce jointe votre facture" & vbCrLf & "en votre aimable réglement"
piece_jointe = ActiveWorkbook.Path & "\" & "Devis.pdf"
''piece_jointe = "C:\Documents and Settings\Les Lagouanère\Bureau\0917_001.pdf" 'chemin du fichier à envoyer en piéce-jointe
'piece_bis = "C:\Documents and Settings\Les Lagouanère\Bureau\Cligno.xls" ' Si on souhaite envoyer plusieurs pièces les déclarer
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe, il est possible d'envoyer plusieurs pièces
'objMessage.AddAttachment (piece_bis) 'dans ce cas on ajoute un objMessage.AddAttachement () par pièce
objMessage.Send
MsgBox "Le mail a été bien envoyé !"
'la feuille PDF créée est est supprimée après l'envoi
Kill ActiveWorkbook.Path & "\" & "Devis.pdf"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Sub
A voir également:
- Transformation d'un fichier excel en PDF par macro
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Fichier bin - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
4 réponses
Bonjour, je vois que passes par CDO pour envoyer ton mail, je penses donc que tu n'as pas de logiciel de messagerie type Outlook ou Thundebird
Bonjour, en effet, en testant le code le fichier pdf est remplacé par le plus récent. Et avec la commande Kill il est supprimé après l'envoie.
Pour ton problème d'historisation (garder une copie), la solution est donnée ici.
Il faudrait, pour différencier les pdf que tu leur attribue un nom personnalisé qu'un générique. Je pense plus à Devis Truc pour l'entreprise Truc.
Pour ton problème d'historisation (garder une copie), la solution est donnée ici.
Il faudrait, pour différencier les pdf que tu leur attribue un nom personnalisé qu'un générique. Je pense plus à Devis Truc pour l'entreprise Truc.
Bonjour, c'est la propriété filename qui contiendra la variable.
Admettons que la cellule A1 contienne le nom de la société (ex : "Truc"), le contenu de A1, donc sa valeur, sera ma variable (par exemple nom).
Donc
ce qui donne
Admettons que la cellule A1 contienne le nom de la société (ex : "Truc"), le contenu de A1, donc sa valeur, sera ma variable (par exemple nom).
Donc
filename:= ActiveWorkbook.Path & "" & "Devis " & nom & ".pdf"
ce qui donne
Sheets("Devis").ExportAsFixedFormat Type:=xlTypePDF, Filename:= ActiveWorkbook.Path & "\" & "Devis " & nom & ".pdf"
Merci, cela fonctionne.
Sans abuser, j'ai le même problème avec un fichier Excel
J'ai créé une macro toujours pour une commande et une macro pour l'envoi par mail et sauvegarde.
La macro pour commande impec
La macro pour l'envoi me donne une erreur comme quoi il ne trouve pas le fichier
Ces macros se trouve dans un serveur au boulot car différente personnes pourraient l'utiliser.
La sauvegarde du fichier peux rester dans le dossier émetteur et comme référence une cellule cette cellule serait le B30 qui contiendrai le N° de machine ainsi que la date de livraison.
Pourriez vous me donner un code pour cela.
Encore un très grand merci
Sans abuser, j'ai le même problème avec un fichier Excel
J'ai créé une macro toujours pour une commande et une macro pour l'envoi par mail et sauvegarde.
La macro pour commande impec
La macro pour l'envoi me donne une erreur comme quoi il ne trouve pas le fichier
Ces macros se trouve dans un serveur au boulot car différente personnes pourraient l'utiliser.
La sauvegarde du fichier peux rester dans le dossier émetteur et comme référence une cellule cette cellule serait le B30 qui contiendrai le N° de machine ainsi que la date de livraison.
Pourriez vous me donner un code pour cela.
Encore un très grand merci
Bonjour, admettons que tu utilises la même macro pour enregistrer la feuille Devis en pdf et pour envoyer celle-ci, il te suffit d'ajouter le chemin donné précédemment.
Cependant, ton message me laisse penser que tu as deux macros, une pour l'enregistrement et une autre pour l'envoi.
Pour la seconde, indiques juste dans le chemin de la pièce jointe l'endroit exact où ton fichier se trouve. En reprenant mon exemple, si ton fichier Excel se trouvait sur le bureau, le fichier pdf "Devis Truc.pdf" doit se trouver sur ton bureau. Donc il faut que la macro trouve ce fichier pdf sachant que son nom est variable. Je te propose un peu de lecture sur les variables. Dans Excel, tu importes donc le code d'envoi par mail mais il faut le mettre dans le même module sinon ta variable ne sera pas gardée (tu met ton curseur dessus pour voir)
Cependant, ton message me laisse penser que tu as deux macros, une pour l'enregistrement et une autre pour l'envoi.
Pour la seconde, indiques juste dans le chemin de la pièce jointe l'endroit exact où ton fichier se trouve. En reprenant mon exemple, si ton fichier Excel se trouvait sur le bureau, le fichier pdf "Devis Truc.pdf" doit se trouver sur ton bureau. Donc il faut que la macro trouve ce fichier pdf sachant que son nom est variable. Je te propose un peu de lecture sur les variables. Dans Excel, tu importes donc le code d'envoi par mail mais il faut le mettre dans le même module sinon ta variable ne sera pas gardée (tu met ton curseur dessus pour voir)
Je te remercie beaucoup, car maintenant cela fonctionne impec.
Vu l'heure que tu as envoyé le message, n'oublie pas de te reposer quand même.
Encore merci.
Encore une petite question, mais cela ne presse pas
Dans une cellule de ma commande je dois donner une adresse de livraison suivant ou la machine ce trouve ex: CLI Luttre ou CLI Mons ou CLI Tournai .....
Pour cela j'ai fait : Tapez 1 pour CLI Luttre; Tapez 2 pour CLI Mons ....etc
et dans mon fichier Excel suivant le N° tapez je fais une recherche verticale
Ma question: serait il possible de faire cela avec une macro ?
Vu l'heure que tu as envoyé le message, n'oublie pas de te reposer quand même.
Encore merci.
Encore une petite question, mais cela ne presse pas
Dans une cellule de ma commande je dois donner une adresse de livraison suivant ou la machine ce trouve ex: CLI Luttre ou CLI Mons ou CLI Tournai .....
Pour cela j'ai fait : Tapez 1 pour CLI Luttre; Tapez 2 pour CLI Mons ....etc
et dans mon fichier Excel suivant le N° tapez je fais une recherche verticale
Ma question: serait il possible de faire cela avec une macro ?
Si au travail sur le PC j'ai Outlook