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 function

Si 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,

Rechercher des sujets similaires à "envoyer pdf place format"