Envoi PDF en VBA

Résolu
joseB45 Messages postés 22 Statut Membre -  
tilo75 Messages postés 50 Statut Membre -
Bonjour,
voila mon souci. par une macro, je convertis un dossier Excel en doc PDF, jusque la ca va.
mais je n'arrive pas a l'envoyer par Mail.
j'utilisais ca pour envoyer le .xxl
_______________________________________________________________
Sub EnvoiMail()
  Workbooks("UnClasseur").SendMail Recipients:="tartem.pion@mimi.com", _
                          Subject:="Test envoi classeur", _
                          ReturnReceipt:=True
End Sub

_______________________________________________________________

mais ca ne marche pas avec le .pdf
et toutes les propositions que j'ai pu trouver sur les forums n'ont pas fonctionné ou alors c'est surement que je n'ai pas su les adapter.
a savoir que la plupart de mes macros, je les fais par l'intermediaire de l'enregistreur.
par avance merci pour votre aide

8 réponses

  1. yannpl7 Messages postés 1535 Statut Membre 305
     
    Ci dessous une macro que je me suis servi dans le passé

    ' configuration SMTP pour envoi de mail
    Public Const MAIL_SENDUSING = 2
    Public Const MAIL_AUTHENTICATE = 1
    Public Const MAIL_CPT_SENDUSR = "expediteur@gmail.com"
    Public Const MAIL_CPT_SENDPASS = "motdepasseexpéditeur"
    Public Const MAIL_FROM = "expediteur@gmail.com"
    Public Const MAIL_SMTP_SERVER = "smtp.gmail.com"
    Public Const MAIL_SMTP_SERVERPORT = 465
     '''""""""""""""""""""""""""""""""""""""""""""""""""""'''
     '
     ' FONCTION : envoyer un mail par SMTP
     ' pstrTo : 1 ou plusieurs destinataire(s)
     ' pstrSubject : objet du mail
     ' pvarAttachFile : 1 ou plusieurs fichiers joints - string ou array de string
     '
     '''""""""""""""""""""""""""""""""""""""""""""""""""""'''
     Public Function SMTPSendMail(pstrTo As String, pstrSubject As String, Optional pvarAttachFile As Variant) As Boolean
     On Error GoTo SMTPSendMail_Err
    
     Dim i As Long
     Dim objEmail As New CDO.Message
     'Set objEmail = CreateObject("CDO.Message")
    
    
     objEmail.From = MAIL_FROM
     objEmail.To = pstrTo
     objEmail.Subject = pstrSubject
    
     ' Aucun corps de message, uniquement la pièce jointe
     ' laisser un TextBody avec chaine vide, sinon le mail peut planter (pièce jointe incomplète)
        objEmail.TextBody = "By yannpl7"
    
     ' Ajout de la pièce jointe, 1 ou plusieurs fichiers
     If Not IsMissing(pvarAttachFile) Then
     If IsArray(pvarAttachFile) Then
     ' parcourrir le tableau
     For i = LBound(pvarAttachFile) To UBound(pvarAttachFile)
     objEmail.AddAttachment pvarAttachFile(i)
     Next i
     Else
     
     objEmail.AddAttachment pvarAttachFile
    
     End If
     End If
    
     With objEmail.Configuration.Fields
     .Item(CdoConfiguration.cdoSendUsingMethod) = MAIL_SENDUSING
     .Item(CdoConfiguration.cdoSMTPAuthenticate) = MAIL_AUTHENTICATE
     .Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
     .Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
     .Item(CdoConfiguration.cdoSMTPServer) = MAIL_SMTP_SERVER
     .Item(CdoConfiguration.cdoSMTPServerPort) = MAIL_SMTP_SERVERPORT
     .Item("[http://schemas.microsoft.com/cdo/configuration/smtpusessl]") = "true"
     .Update
     End With
     objEmail.Send
    
     SMTPSendMail = True
     Exit Function
    SMTPSendMail_Err:
     MsgBox Err.Description
    
     End Function
    
    Sub envoiemail()
    Dim result As Variant
    Dim file As Variant
    file = "C:\repertoiredufichier\" & "Nomdufichier" &  & ".PDF"
    
    result = SMTPSendMail("destinataire@desti.fr", "Titre", file)
    
    End Sub


    celui qui détient le savoir détient le pouvoir
    1
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,

      Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
      Le mode d'emploi (au cas ou) est ICI.

      Cordialement,
      pijaku
      0
  2. joseB45 Messages postés 22 Statut Membre
     
    ok merci yannpl7
    je vais essayer d'adapter ca a mon cas
    petites questions =
    //Public Const MAIL_CPT_SENDPASS = "motdepasseexpéditeur"// est ce obligatoire ?
    //result = SMTPSendMail("destinataire@desti.fr", "Titre", file)// puis je laisser le champs du destinataire vide ?
    0
  3. yannpl7 Messages postés 1535 Statut Membre 305
     
    Si tu veux envoyé un email il faut obligatoirement renseigner le mot de passe du compte de l'expéditeur et une adresse d'un destinataire.

    attention petite correction

    file = "C:\repertoiredufichier\" & "Nomdufichier" &  ".PDF"


    Merci à pijaku pour l'info
    celui qui détient le savoir détient le pouvoir
    0
    1. tilo75 Messages postés 50 Statut Membre
       
      Bonjour, yann et josé

      Je me permets de rentrer dans votre discussion car j'ai un sujet similaire que j'essai de résoudre mais en vain.

      J'utilise la macro suivante pour laquelle je veux rajouter d'autres pièces jointes (feuilles excel qui viennent du même fichier) à l'envoie d'un email .

      Sub Envoyer_Email() 

      Dim DrLig As Long, maDate As String

      Sheets("A").Copy
      maDate = Format(Now, " yyyy.mm.dd hh-mm")
      DrLig = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1 'Cherche la première ligne vide de la colonne 1 (colonne A)
      Rows(DrLig & ":" & Rows.Count).EntireRow.Delete 'Supprime entièrement toutes les lignes de la ligne DrLig (première ligne vide) jusqu'à la toute dernière
      ActiveWorkbook.SaveAs Filename:="B" & maDate & ".xlsx"

      ActiveWorkbook.SendMail Recipients, _
      Subject:="B"
      ActiveWorkbook.Close savechanges:=False

      End sub

      J'ai essayé de faire mettre deux fois ActiveWorkbook.SendMail Recipients, _... mais ne marche pas, il créé deux emails, ce qui est logique en soit.

      J'ai essayé aussi "attachement .add" "add" Sheets("C").Copy mais ne marche pas aussi

      Est ce que vous avez une idée?
      Merci d'avance
      0
  4. joseB45 Messages postés 22 Statut Membre
     
    je me retrouve avec un message d'alerte a l'execution du code

    //attribut incorrect dans une procédure sub ou function//

    et j'ai le premier "Public const" surligné en bleu
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yannpl7 Messages postés 1535 Statut Membre 305
     
    Les Public Const doivent se trouvées tout au dessus du code et non dans un SUB. Enregistre ton fichier ferme le et relance le
    0
  7. joseB45 Messages postés 22 Statut Membre
     
    ok cette alerte a disparu, j'avais mis tout ton code entre sub et end sub ^^

    mais comme j'y vais au pas a pas vu que je suis nul en vba j'ai une autre alerte

    //erreur compilation : type defini par utilisateur non defini//

    objEmail As New CDO.Message surligné en bleu

    je pense que j'ai du oublié de changer quelque chose
    0
  8. yannpl7 Messages postés 1535 Statut Membre 305
     
    Non c'est moi qui est oublié quelque chose

    Dans Ton visual Basic tu va dans Outils -> Références
    et tu coche Microsoft CDO for Windows 2000 Library puis OK
    0
  9. joseB45 Messages postés 22 Statut Membre
     
    grand merci yannpl7
    ca fonctionne nickel !

    tilo75 je ne peux pas t'aider, mais je suis sur qu'un cador vba viendra a ton aide

    a bientot
    0
    1. tilo75 Messages postés 50 Statut Membre
       
      Merci d'avoir répondu josé, même si tu n'as pas de réponses à m'offrir. Effectivement, j'espère qu'un cador VBA viendra.
      0