Macro permettant d'envoyer par mail un pdf

Bonjour, j'ai crée un fichier excell avec différentes macro VBA :

Une me permettant d'imprimer le feuillet

Une autre me permettant de créer une copie de ce feuillet

Une autre me permettant d'envoyer par email ce feuillet en pièce jointe au format pdf, mais le soucis que j'ai, c'est que lorsque je créer la copie de ce feuillet via la macro, l'envoi par email joint l'original et nom la copie.

Que faut-il que je paramètre, afin que lorsque j'ai crée une copie, la pièce jointe dans le mail soit bien cette copie et non le feuillet original

https://www.cjoint.com/c/GLxkMqbWJvu

Bonjour,

Un poil compliqué ton fichier ... peux-tu expliciter, de quel feuillet s'agit-il ? où est la fameuse copie ?

Voici un code bien plus simple ...

102envoi-email-pdf.xlsm (16.75 Ko)

Quand tu prends par exemple le feuille pneus et que tu cliques sur créer une nouvelle feuille, et bien ce la va créer une nouvelle feuille, que je renseignerai à la date du jour, et c'est cette feuille que j'aimerais envoyer par email en pdf. Mais pour l'instant ce qui part en pdf c'est la page pneus et non la page Pneus_1_NICE OUEST.

Je ne peux pas regarder le fichier complet ... désolé ; erreur 400

capture d ecran 166

Quel dommage, car c'est bien cette feuille par exemple que je souhaite envoyer en pdf par email

Sur le fichier, que tu m'as joint je ne vois pas de macro concernant le bouton '"envoi de mail", malheureusement je ne peux pas essayer sur mon mac, car je n'ai pas oulook, il faudra que j'attende d'être au bureau.

ja'i regardé le code, ce qu'il faut modifier, c'est

    ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator"

et remplacer ActiveSheet par Sheets("______") avec le nom de la nouvelle feuille

Le seul soucis, c'est qu'à chaque fois que je vais créer une nouvelle feuille, il va falloir que je modifie la macro? en y changeant le nom de nouvelle feuille.

Non, car quand tu crées une nouvelle feuille, si tu lui donnes un nom, tu sauvegardes ce nom et celui-ci que tu réutilises dans Sheets(______) sans guillemets cette fois-ci.

Où est donné le nom de la nouvelle feuille dans la macro ?

Lorsque je créer une nouveau feuillet, en cliquant sur le bouton "créer une nouvelle feuille", j'utilise ce code, et sur ce même code il y a également celui pour envoyer le mail.

Je pense que le problème vient de là, car les macros de la nouvelle feuille font référence à la précédente et non à la nouvelle.

Option Explicit

Sub CopycartouchesSheetRename()

Dim Cpt13 As Byte

If MsgBox("Etes vous certain(e) de vouloir dupliquer cette feuille ?", vbYesNo + vbInformation, _

"Demande de confirmation PNEUS") = vbYes Then

For Cpt13 = 1 To 1

With ActiveWorkbook.ActiveSheet

.Copy Before:=Worksheets("Pneus")

End With

ActiveSheet.Name = "Pneus_" & Cpt13 & "_" & Sheets("Pneus").Range("F18").Value

Next Cpt13

Else

Sheets("Pneus").Range("A1").Select

End If

End Sub

Sub SendMail_Outlook()

Dim ol As Object

Dim olmail As Object

Dim Texte As String

Set ol = CreateObject("Outlook.Application")

Set olmail = ol.CreateItem(0)

Texte = "Nice, le " & Format(Date, "dd/mm/yy") & vbCrLf & vbCrLf

Texte = Texte & "Bonjour Gilles," & vbCrLf

Texte = Texte & vbCrLf

Texte = Texte & "Objet: Caissons de Pneus pleins Nice Ouest" & vbCrLf & vbCrLf

Texte = Texte & "Tu trouveras ci-joint une demande pour l'_vacuation des pneus sur Nice Ouest " & vbCrLf & vbCrLf

Texte = Texte & "Merci ˆ toi de faire le n_cessaire" & vbCrLf & vbCrLf

Texte = Texte & vbCrLf

Texte = Texte & "Dans l'attente, salutations cordiales" & vbCrLf

With olmail

.To = [T1] 'adresse du destinataire en T1

.CC = [T3]

.Subject = "CAISSON DE PNEUS PLEIN A NICE OUEST"

Range("A1:L69").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\PNEUS.pdf"

.Attachments.Add ThisWorkbook.Path & "\PNEUS.pdf"

.Body = Texte

.Display

.Send 'envoi automatique

End With

'D_sactivation s_lection

Application.CutCopyMode = False

End Sub

Ce que je propose (à tester)

' à mettre au début
dim nouvellefeuille as string

' on peut changer la ligne ActiveSheet.Name = "Pneus_" & Cpt13 & "_" & Sheets("Pneus").Range("F18").Value comme ceci
nouvellefeuille = "Pneus_" & Cpt13 & "_" & Sheets("Pneus").Range("F18").Value
ActiveSheet.Name = nouvellefeuille

' dans la ligne Export, ajouter le nom de la nouvelle feuille devant la zone
sheets(nouvellefeuille).Range("A1:L69").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\PNEUS.pdf"

Est-cela, le soucis c'est que maintenant quand je clik sur "nouvelle feuille", il y a un message d'erreur

Option Explicit

Sub CopycartouchesSheetRename()

Dim Cpt13 As Byte

If MsgBox("Etes vous certain(e) de vouloir dupliquer cette feuille ?", vbYesNo + vbInformation, _

"Demande de confirmation PNEUS") = vbYes Then

For Cpt13 = 1 To 1

With ActiveWorkbook.ActiveSheet

.Copy Before:=Worksheets("Pneus")

End With

nouvellefeuille = "Pneus_" & Cpt13 & "_" & Sheets("Pneus").Range("F18").Value

ActiveSheet.Name = nouvellefeuille

Next Cpt13

Else

Sheets("Pneus").Range("A1").Select

End If

End Sub

Sub SendMail_Outlook()

Dim ol As Object

Dim olmail As Object

Dim Texte As String

Set ol = CreateObject("Outlook.Application")

Set olmail = ol.CreateItem(0)

Texte = "Nice, le " & Format(Date, "dd/mm/yy") & vbCrLf & vbCrLf

Texte = Texte & "Bonjour Gilles," & vbCrLf

Texte = Texte & vbCrLf

Texte = Texte & "Objet: Caissons de Pneus pleins Nice Ouest" & vbCrLf & vbCrLf

Texte = Texte & "Tu trouveras ci-joint une demande pour l'_vacuation des pneus sur Nice Ouest " & vbCrLf & vbCrLf

Texte = Texte & "Merci ˆ toi de faire le n_cessaire" & vbCrLf & vbCrLf

Texte = Texte & vbCrLf

Texte = Texte & "Dans l'attente, salutations cordiales" & vbCrLf

With olmail

.To = [T1] 'adresse du destinataire en T1

.CC = [T3]

.Subject = "CAISSON DE PNEUS PLEIN A NICE OUEST"

sheets(nouvellefeuille).Range("A1:L69").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\PNEUS.pdf"

.Attachments.Add ThisWorkbook.Path & "\PNEUS.pdf"

.Body = Texte

.Display

.Send 'envoi automatique

End With

'D_sactivation s_lection

Application.CutCopyMode = False

End Sub

Ne vaudrait-il pas mieux créer directement une macro dans un module pour l'ajout d'une nouvelle feuille et une maco dans un module pour l'envoi du pdf par email. Sans passer du code VBA dans chaque whorsheet

Voici ce qui s'affiche quand je clique sur nouvelle feuille, en ayant remplacer le code

capture d ecran 2017 12 23 a 15 27 43

Difficile de répondre sans pouvoir tester ...

Néanmoins, je viens de m'apercevoir de ceci :

For Cpt13 = 1 To 1
With ActiveWorkbook.ActiveSheet
.Copy Before:=Worksheets("Pneus")
End With
nouvellefeuille = "Pneus_" & Cpt13 & "_" & Sheets("Pneus").Range("F18").Value
ActiveSheet.Name = nouvellefeuille
Next Cpt13

Cela veut dire que tu crées "beaucoup" de nouvelle feuilles ? dans ce cas la macro ne saura pas laquelle

sheets(nouvellefeuille).Range("A1:L69").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\PNEUS.pdf"

et elles seront toutes avec le même nom, est-ce bien cela ?

Malheureusement, encore une fois j'ai une erreur 400 qui m'empêche de t'aider davantage. Désolé.

Oui malheureusement à chaque fois que je vais vouloir envoyez un email, je vais envoyer une nouvelle feuille avec la date du jour et les différents champs renseignés (ceci me permettra d'avoir une archive)

Les feuilles portant le nom de la souche suivie du "nbr_1_NICE OUEST" comme par exemple "Pneus_1_NICE OUEST ou Pneus_2_NICE OUEST ou Cartouches_1_NICE OUEST ou Cartouches_2_NICE OUEST"

Que penses tu de faire une macro générique avec un module et non travailler dans les worksheet

Car le soucis, c'est que ce sont des personnes novices en excell qui vont manipuler ce fichier, et ne pourrons pas modifier le code VBA.

je vais revoir cela demain ...

tu es en

option explicit

et tu n'as pas déclaré

' à mettre au début
dim nouvellefeuille as string

comme je l'avais demandé

comme il s'agit de 2 macros différentes, il faut mettre cette déclaration de variable juste après option explicit

Encore merci pour ton aide, je suis désolé mais je n'avais pas tout compris, cette fois c'est OK au niveau du code.

Malheureusement, je ne peux pas tester d'ou je suis, car sur mon imac, je n'ai pas outlook.

Par contre je pense qu'il y a encore un soucis, mais je n'en suis pas certain au niveau de l'envoi des emails.

Quand je clique sur la référence de l'envoi d'email (sur l'onglet pneus, elle fait référence à la feuille 13"Pneus") et sur la nouvelle feuille Pneus_1_NICE OUEST, elle fait référence également à la feuille 13, ne devrait elle pas faire référence à la feuille 14?

capture d ecran 2017 12 24 a 08 57 24 capture d ecran 2017 12 24 a 08 58 25

Il faut que je teste au bureau, ce que je souhaiterais c'est lorsque je clique sur "Pneus_1_NICE OUEST" et bien cela envoie par pdf cette page et à l'heure actuelle et bien ça envoie la souche "Pneus" (mais à tester depuis ta modification).

Encore merci de ton aide

Passes de bonnes fêtes.

Quand je clique sur la référence de l'envoi d'email (sur l'onglet pneus, elle fait référence à la feuille 13"Pneus") et sur la nouvelle feuille Pneus_1_NICE OUEST, elle fait référence également à la feuille 13, ne devrait elle pas faire référence à la feuille 14?

Le code d'envoi prend en compte la dernière feuille copiée. Si aucune n'a été copiée entre deux envois c'est toujours la même qui sera envoyée.

Teste au boulot, et re-précise la règle d'envoi des mails.

Rechercher des sujets similaires à "macro permettant envoyer mail pdf"