MACRO Pour sauvegarde et envoi PDF onglet Excel

Bonjour, je suis petit nouveau et je voudrais de l aide pour la réalisation d une macro qui me permettrait en cliquant sur un bouton crée

d une part de sauvegarder la feuille en PDF , juste l onglet actif sur un répertoire de mon disque et d envoyer ce PDF liste de diffusion Outlook.

4 onglets avec une sauvegarde sur même répertoire mais adresse différente .

Le nom de la sauvegarde doit comporter la date .Ma version d excel 2008.

Un grand merci pour le travail que vous réalisez, je suis admiratif :-) , moi complètement amateur .

Bonjour Mf77 et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum

Vous pouvez regarder dans "discussions similaires" en bas de cette page, le sujet à déjà été évoqué de nombreuses fois.

Merci de votre participation

Cordialement

BOnjour

voici un code que j'ai dans ma bibliothèque. Le fichier pdf généré est la feuille active, elle est enregistré dans le même dossier que le fichier exécutant le code., avec le nom, le nom de l'onglet. mais tous à fait personnalisable...

partie de code a changer :

Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Name & ".pdf"

une option est possible de supprimer le pdf après envoi...

le destinataire, le message, l'objet du mail,.... est a personnaliser...

Le chemin

Fred

Sub mail()
Dim OutApp As Object
Dim OutMail As Object

With Application
.ScreenUpdating = False
.EnableEvents = False
End With

'Désactiver fenêtre de compatibilité
Application.DisplayAlerts = False
'----------------------------------------------------------------------------
'Sauvegarde la nouvelle feuille/L'envoie par mail/La supprime
'----------------------------------------------------------------------------

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Name & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
     IgnorePrintAreas:=False, OpenAfterPublish:=False

Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)

'envoi/prépration du mail
With OutMail
.To = "fred@toto.fr"
.CC = "Moi@toto.fr"
.bcc = ""
.Subject = "sujet du mail"
.Attachments.Add ThisWorkbook.Path & "\" & ActiveSheet.Name & ".pdf"
.Body = "Bonjour, le message a mettre dans le mail "
.display 'ou alors utiliser
'.Send 'pour envoi
End With

'Effacer le fichier envoyé
'Kill ThisWorkbook.Path & "\" & ActiveSheet.Name & ".pdf"

Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub

bonjour,

merci beaucoup pour ce retour rapide, cela fonctionne tres bien , le problème est d avoir un format PDF qui n est pas a la bonne taille par rapport au excel.

est ce qu il est possible de faire la sauvegarde en excel , avec la date dans le nom de l onglet qui s incrémente en fonction du jour d envoi .

est ce qu il est possible d avoir une liste de diffusion différente en fonction de l onglet envoyé ? Comment mettre le message du mail sur plusieurs lignes ?

Beaucoup de question , excusez mon ignorance

Bonjour

le problème est d avoir un format PDF qui n est pas a la bonne taille par rapport au excel.

concernant le PDF... c'était la demande initiale.... cela ne fait que ce qui était initialement demandé... il faut peut-être redéfinir la zone d'impression... enfin bon, oui il est aussi possible de faire un fichier Excel.. mais enregistré sous quel format ? xls ? xlsx ?

est ce qu il est possible de faire la sauvegarde en excel , avec la date dans le nom de l onglet qui s incrémente en fonction du jour d envoi .

Oui certainement... mais merci de fournir un fichier test... car j'ai pas tout compris... et surtout cela dépend comment a été mis le nom de l'onglet

est ce qu il est possible d avoir une liste de diffusion différente en fonction de l onglet envoyé ?

oui... mais ou sera la listes des destinataires ? dans un onglet ? directement dans le code ??

Comment mettre le message du mail sur plusieurs lignes ?

par exemple :

.Body = "Bonjour, le message a mettre dans le mail " & vbcr & "Je suis à la ligne" & vbcr & "Cordialement"

Fred

Bonjour,

merci pour le retour , le message sur plusieurs ligne c est ok.

voici le code utilisé et le type de document qui n apparait pas entier en PDF.

La liste difusion en effet directement dans la macro , la difficulté c est si je veux envoyer un onglet avec une liste defini et autre onglet avec autre liste definie.

11classeur1.xlsm (32.38 Ko)

Bonsoir

faute de temps... je regarderais cela probablement vendredi

Fred

oui biensur , je trouve tellement formidable de s impliquer à la résolution.de mon.probleme

merci beaucoup et bonne semaine

fred

Bonjour

pour que le pdf soit conforme au fichier excel il faut :

1) redéfinir la zone d'impression sur la plage : A1:R52

2) définir dans la mise en page :

image

pour faire la liste des destinataires différents en fonction de l'onglet sélectionné , il faut personnaliser cette partie du code...

Select Case (ActiveSheet.Name)
Case "ROQ" 'feuille ROQ
    mail = "fred@toto.fr;pat@toto.fr;Flo@toto.fr"
    mailCc = "fred@fred.com"
Case "ROH" 'feuille ROH
    mail = "titi@fred.com;tata@fred.com"
    mailCc = "fred@fred.com;flo@fred.com"
End Select

le fichier est enregistré au format pdf dans le même dossier qui exécute le code. sous le format "nom onglet_dd-mm-yy.pdf "

exemple : ROQ_12-03-22.pdf

L'objet du mail et le message est le même pour les deux feuilles... mais cela est personnalisable aussi.

Ci joint le fichier en retour

Fred

14mf77.xlsm (27.67 Ko)

Bonjour

Un retour ??

Fred

Bonsoir,

désolé pour cette absence, j ai du faire un déplacement sans possibilité de me connecter , j étais seul au monde ! :-(

je regarde cela au plus vite et vous tiens au courant

un grand merci et encore désolé

fred

Bonjour,

le fichier fonctionne tres bien , un grand merci .

j aimerai pouvoir vous remercier :

Bonjour mf77

Bonjour ,

je galère et je n arrive pas a insérer une liste mail , du moins elle y est mais quand le mail s ouvre , les destinataire n apparaissent pas, obliger de rentrer a la main .

vous pouvez m aider , je poste le fichier récupérer que j ai modifier pour mon utilisation .

merci beaucoup

Fred

10evaluation.xlsm (100.94 Ko)

Bonsoir je n'arrive pas a comprendre la demande...

Dans le fichier initial c'était une liste de destinataire en fonction du nom de la feuille...

d'où le :

Select Case (ActiveSheet.Name)

avant il y avait une feuille ROH mais plus présente dans le fichier...

tu as modifié le code avec

Case "TGF"

mais je ne vois pas de nom de feuille... qui s'appelle TGF

et il y a aussi un nouveau case avec (pour ce qu'il me semble) toutes les feuilles visibles.... mais surtout pas la bonne syntaxe... (il faut utiliser le séparateur virgule)

donc pour cela je te propose donc si c'est bien le cas de faire un

case else

Pour la syntaxe voir :

https://docs.microsoft.com/fr-fr/office/vba/language/concepts/getting-started/using-select-case-stat...

Fred

Rechercher des sujets similaires à "macro sauvegarde envoi pdf onglet"