VBA :Exporter d'Excel une facture en PDF et l'envoyer par mail avec outlook

Bonjour,

Je suis débutant en VBA. J'ai trouvé des éléments pour faire un code. Je souhaite exporter d'un fichier excel une facture en pdf. Je voudrais que cette facture soit rangée dans un dossier et qu'un mail soit envoyé automatiquement avec la pièce jointe. Résultat, le dossier fonctionne, le fichier apparait, le mail est envoyé avec la pièce jointe mais malheureusement cela ne fonctionne qu'une fois pour le mail. Pourriez-vous m'aider svp.

Merci

Sub exportPDF()

Nomdossier = Application.InputBox("DOSSIER D'ENREGISTREMENT", "ENREGISTREMENT EN PDF", "FACTURE PDF")
dossier = ThisWorkbook.Path & "/" & Nomdossier & "/"

On Error Resume Next

fichierexistant = GetAttr(dossier) And vbDirectory
If fichierexistant = False Then
MkDir (dossier)
End If

Sheets("FACTURE").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=dossier & "FACTURE" & " " & Sheets("FACTURE").Range("A4").Value & ".pdf", _
quality:=xlQualityStandard, _
includedocproperties:=True, _
ignoreprintareas:=False, _
From:=1, To:=1, _
openafterpublish:=False

Dim MaPJ
MaPJ = dossier & "FACTURE" & " " & Sheets("FACTURE").Range("A4").Value & ".pdf"

Dim Mail As Object
Set Mail = Create.Object("Outlook.Application")
Set Mail = Outlook.CreateItem(0)

With Mail
.To = "adresse mail"
.Subject = "Facture"
.Body = "Bonjour," & vbCr & vbCr & "Je vous transmets la facture pour cette période." & vbCr & vbCr & "Cordialement,"
.Attachments.Add MaPJ
.ReadReceiptRequested = True

End With

On Error Resume Next

Mail.Send

Set Mail = Nothing

End Sub

Bonjour,

Voici un essai avec quelques arrangements notamment au niveau des 2 variables outlook et mail. Peut-être que ça marchera mieux ainsi :

Sub exportPDF()

Dim oOutlook as object, oMail As Object
dim Nomdossier$, dossier$, PJ$

Nomdossier = Application.InputBox("DOSSIER D'ENREGISTREMENT", "ENREGISTREMENT EN PDF", "FACTURE PDF")
dossier = ThisWorkbook.Path & "\" & Nomdossier '<<< "\" sur windows !!!

If dir(dossier, vbdirectory) = "" Then MkDir (dossier)

with Sheets("FACTURE")
    PJ = dossier & "\FACTURE " & .Range("A4").Value & ".pdf"
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:=PJ, ignoreprintareas:=False
end with

Set oOutlook = Create.Object("Outlook.Application")
Set oMail = oOutlook.CreateItem(0)

With oMail
    .To = "adresse mail"
    .bcc = "mon adresse mail"
    .Subject = "Facture"
    .Body = "Bonjour," & vbCr & vbCr & "Je vous transmets la facture pour cette période." & vbCr & vbCr & "Cordialement,"
    .Attachments.Add PJ
    '.display
    .send
    .ReadReceiptRequested = True
End With

Set oMail = Nothing
set oOutlook = nothing

End Sub

Au fait, pour poster du code, vous pouvez utiliser l'icône </> présente sur le ruban en haut du commentaire.

Cdlt,

Rebonjour,

Je vous remercie pour votre réponse. J'ai essayé malheureusement cela ne fonctionne pas. Le pdf est bien rangé dans le dossier sur le bureau mais le mail ne part pas. J'ai un message "objet requis". Merci encore pour votre aide.

Cordialement,

Re,

Pouvez-vous essayer en modifiant ainsi cette ligne :

Set oMail = oOutlook.CreateItem(olMailItem)

En cas d'erreur, pouvez-vous m'indiquer la ligne ?

Cdlt,

Re,

Le message proposé est : "L'indice n'appartient pas à la sélection"

Bonne soirée

Oui, mais quelle ligne ? Au niveau de Sheets("Facture") ? Si c'est le cas, il faut contrôler que la feuille existe.

Je vous prie de m'excuser effectivement l'erreur venait de moi. Cela fonctionne merveilleusement bien. Je vous remercie mille fois !

Bonne soirée

Ouf, je commençais à m'inquiéter .

Merci, très bonne soirée à vous aussi !

Bonjour Redsha,

Je cherche à créer le même genre de fichier excel que vous avec création de facture (pour plusieurs clients avec services différent) en pdf et envoie par mail etc...

Mon soucis c'est que je ne sais pas du tout comment faire.

Serait-il possible d'avoir une copie vierge de votre fichier ?

En vous remerciant d'avance.

Cordialement.

Rechercher des sujets similaires à "vba exporter facture pdf envoyer mail outlook"