Envoyer en pdf à la place du format Excel
Bonjour,
j'ai réussi à trouver le bon code vba pour faire des envoies onglet par onglet vers des adresses mails spécifiques pour chaque mais je n'arrive pas du tout à transformer le format de onglet envoyé.
Actuellement, le mail envoi une copie de l'onglet au format xls mais je souhaite que cette copie s'envoi au format pdf.
voici mon code:
Sub Email()
Dim olApp As Outlook.Application
Set olApp = CreateObject("outlook.application")
Dim LWorkbook As Workbook
Dim LFileName As String
Dim i As Integer: i = 1
Do
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
With olMail
.Recipients.Add (Sheets("BDD").Range("H" & i).Value)
.CC = (Sheets("BDD").Range("I" & i).Value)
.Subject = "SITUATION des SILLONS"
Sheets(Sheets("BDD").Range("G" & i).Value).Copy
Set LWorkbook = ActiveWorkbook
LFileName = LWorkbook.Worksheets(1).Name
LWorkbook.SaveAs Filename:=LFileName
.Body = "Bonjour," & vbCrLf _
& vbCrLf _
& "Vous trouverez ci joint les sillons obtenus et les commandes en cours." & vbCrLf _
& vbCrLf _
& "Cordialement" & vbCrLf _
& vbCrLf & vbCrLf _
& "Adrien LOBEL"
.Attachments.Add LWorkbook.FullName
.Display
.Send
LWorkbook.ChangeFileAccess Mode:=xlReadOnly
Kill LWorkbook.FullName
LWorkbook.Close SaveChanges:=False
End With
i = i + 1
Loop While Sheets("BDD").Range("G" & i).Value <> ""
End Sub
merci d'avance pour votre aide !
up personne pour m'aider svp
Bonjour,
Je ne suis pas sûr du tout d'avoir compris mais voici un essai pour envoyer la feuille BDD, exportée en PDF, en PJ :
Sub Email()
Dim olApp As Outlook.Application
Set olApp = CreateObject("outlook.application")
Dim wb As Workbook
Dim filename As String
Dim olMail As Outlook.MailItem
Dim i As Integer
set wb = activeworkbook
with wb
filename = .path & "\" & .sheets(1).Name & ".pdf"
.sheets(1).exportasfixedformat xltypepdf, filename, , , false
with .Sheets("BDD")
dl = .cells(.rows.count, "G").end(xlup).row
for i = 1 to dl
with olApp.CreateItem(olMailItem)
.to = wb.Sheets("BDD").Range("H" & i).Value '.Recipients.Add Sheets("BDD").Range("H" & i).Value
.CC = wb.Sheets("BDD").Range("I" & i).Value
.Subject = "SITUATION des SILLONS"
.Body = MyBody
.Attachments.Add filename
.Display
'.Send
End With
next i
end with
end with
Kill filename
End Sub
function MyBody()
temp = "Bonjour," & vblf & vblf
temp = temp & "Vous trouverez ci joint les sillons obtenus et les commandes en cours." & vblf & vblf
temp = temp & "Cordialement" & vblf & vblf & vblf
temp = temp & "Adrien LOBEL"
MyBody = temp
end functionSi je suis à côté de la plaque, il faudra bien expliquer l'opération, pas forcément évidente à comprendre à la lecture du code.
Cdlt,
merci pour le code il fonctionne mais pour être explicit:
j'ai sur l'onglet BDD en colonne G la liste de mes onglets, je souhaite que pour par exemple l'onglet nommé en G1 cette onglet soit envoyé au mail en H1 et I1.
J'ai essayé de modifié ainsi mais ca ne fonctionne pas :
Sub testEmail()
Dim olApp As Outlook.Application
Set olApp = CreateObject("outlook.application")
Dim wb As Workbook
Dim filename As String
Dim olMail As Outlook.MailItem
Dim i As Integer
Set wb = ActiveWorkbook
With wb
filename = .Path & "\" & .Sheets(1).Name & ".pdf"
.Sheets(Sheets("BDD").Range("G" & i).Value).ExportAsFixedFormat xlTypePDF, filename, , , False
With .Sheets("BDD")
dl = .Cells(.Rows.Count, "G").End(xlUp).Row
For i = 1 To dl
With olApp.CreateItem(olMailItem)
.To = wb.Sheets("BDD").Range("H" & i).Value '.Recipients.Add Sheets("BDD").Range("H" & i).Value
.CC = wb.Sheets("BDD").Range("I" & i).Value
.Subject = "SITUATION des SILLONS"
.Body = MyBody
.Attachments.Add filename
.Display
'.Send
End With
Next i
End With
End With
Kill filename
End Sub
Function MyBody()
temp = "Bonjour," & vbLf & vbLf
temp = temp & "Vous trouverez ci joint les sillons obtenus et les commandes en cours." & vbLf & vbLf
temp = temp & "Cordialement" & vbLf & vbLf & vbLf
temp = temp & "Adrien LOBEL"
MyBody = temp
End Function
dsl je suis novice
Bonjour,
Au cas où vous ne le sauriez pas, vous pouvez poster du code à l'aide des balises </> du ruban d'icônes. Ca permet de le mettre en forme et de la copier plus facilement.
Ca ne marche pas donc j'imagine qu'il y a une erreur sur la ligne ? Quel est le message d'erreur ?
Est-ce qu'il y a un seul classeur ouvert lors de l'exécution ? Car activeworkbook (le classeur actif) est différent de thisworkbook (le classeur exécutant le code).
S'il n'y a qu'un seul classeur, thisworkbook est aussi activeworkbook donc il conviendrait de changer toutes les occurrences de activeworkbook par thisworkbook.
Ensuite, s'il n'y a qu'un seul classeur et que vous rencontrez tout de même une erreur (erreur 9 probablement), c'est que le nom en Gi ne correspond à aucune feuille du classeur. Cela signifie que le nom en Gi est mal orthographié ou qu'il y a (comme souvent) un espace indésirable, soit sur le nom de feuille soit en Gi.
Cdlt,