XL 2013 Envoyer Mail feuille en pdf par messagerie "defaut"

nobru26

XLDnaute Junior
Bonsoir,

Je cherche depuis un temps la syntaxe pour envoyer un mail de la feuille active générée en pdf.
ensuite soit enregistrer le pdf dans le dossier où se trouve le fichier classeur soit supprimer le pdf (mieux).

Le problème c'est que je veux que cela fasse appel à la messagerie par défaut qui n'est pas Outlook.

Le pdf doit être nommé par le nom de la feuille avec une cellule A3, soit "feuil1"valeurA3".pdf".
Les destinataires si c'est possible de les avoir dans des cellules différentes B3,B4,B5,B6 ou alors la case vide cela m'ira il faudra juste les renseigner dans la messagerie, ca me va!

Alors j'ai trouvé plein de codes, pdf cela fonctionne, me manque juste à trouver comment enregistrer dans le chemin du fichier classeur, par contre j'ai vu beaucoup de solutions pour les mails par Outlook.... et aussi une avec Excel directement, mais je patauge.

Si vous avez des pistes je suis preneur.
Merci
 

Joe[PT]

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Bonsoir Nobru26,

Je te soumets un bout de code que j'utilise dans une de mes applications (obtenu grâce à l'aide précieuse de plusieurs internautes) et qui permet de :
- générer un PDF d'une plage précise de ma feuille ;
- sauvegarder le fichier à un endroit précis du pc ;
- message d'avertissement si le fichier existe déjà : faut-il écraser le fichier oui / non ?

Le nom de mon fichier est obtenu avec :
- nom du classeur
- valeur d'une 1ère cellule
- valeur 2e cellule
Le tout séparé par des tirets "-" et on obtient : mafeuille-B18-C20.pdf

Code :
Code:
Sub DMI_Générer_PDF()
' Permet de générer une impression PDF d'une partie d'une feuille
' en sauvegardant le document .pdf avec un nom spécifique et dans répertoire déterminé

    Dim sRep As String                  ' Répertoire de sauvegarde
    Dim sFilename As String             ' Nom du fichier
    
    sRep = "C:\Users\Joe\Desktop\"                       ' Répertoire de sauvegarde (si non spécifié, répertoire actif par défaut)
    sFilename = "Douanes" & "-" & ActiveSheet.Name & "-" & Range("B18").Value & "-" & Range("C20") & "." & "pdf"      ' Nom du fichier
    
        ' Vérifier si un fichier portant ce nom existe
        If sRep = ("Douanes" & "-" & ActiveSheet.Name & "-" & Range("B18").Value & "-" & Range("C20").Value & "." & "pdf") <> "" Then
             If MsgBox("Un fichier ayant ce nom " & sFilename & " existe " & _
                "déjà dans ce répertoire " & sRep & "." & vbCrLf & _
                "Désirez-vous l'écraser ? ", vbCritical + vbYesNo, "Attention !") = vbNo Then
                 sFilename = Application.InputBox("Donner lui un nouveau nom.")
                 If Format(sFilename) = False Then
                      MsgBox "Opération de la Création des fichiers PDF annulée."
                 Else
             End If
         End If
    End If
    
' Impression PDF de la feuille "DMI"
    Range("A15:H54").Select
    Selection.ExportAsFixedFormat _
                     Type:=xlTypePDF, _
                     Filename:=sRep & sFilename, _
                     Quality:=xlQualityStandard, _
                     IncludeDocProperties:=True, _
                     IgnorePrintAreas:=False, _
                     OpenAfterPublish:=True
End Sub

Pour l'envoi par mail, ça m'intéresse aussi mais avec outlook.com je ne sais pas si c'est possible :confused:
Il y a bien un lien... à Ce lien n'existe plus !

Bonne soirée,

Joe :)
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

bonsoir,

voir ce code mis récemment sur le forum à mettre dans un module et à adapter !
Code:
Public Const ParamSendUsing As String = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Public Const ParamServeur As String = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Public Const ParamPort As String = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Public Const ParamIdentificateur As String = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Public Const ParamIdentifiant As String = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Public Const ParamMotDePasse As String = "http://schemas.microsoft.com/cdo/configuration/sendpassword"
Public Const ParamSsl As String = "http://schemas.microsoft.com/cdo/configuration/smtpusessl"
'
'Envois-Mail Hotmail-Gmail-Outlook.com
Sub EnvoiMailCDO()
Dim CdoMessage, CdoConfig, CdoParam
Dim Fichier As String
'Pour le serveur outlook.com
'smpt = smtp-mail.outlook.com
'Port = 25 (ou 587 si 25 est bloqué)
'Authentification:  oui
'Connexion chiffrée: TLS

'Pour GMail: smtp.gmail.com

    Fichier = ThisWorkbook.Path & "\Classeur1.xls"  'Si fichier se trouve dans le même dossier
    Set CdoConfig = CreateObject("CDO.Configuration")
     
    CdoConfig.Load -1
    Set CdoParam = CdoConfig.Fields
    
    With CdoParam
    .Item(ParamSendUsing) = 2
    .Item(ParamServeur) = "smtp.live.com"                       ' < Ici Hotmail
    .Item(ParamPort) = 25
    .Item(ParamIdentificateur) = "1"
    .Item(ParamIdentifiant) = "xxxxx@hotmail.com"      'Votre Identifiant
    .Item(ParamMotDePasse) = "@@@xxx"                       'Votre mot de passe
    .Item(ParamSsl) = "true"
    .Update
    End With
    
    Set CdoMessage = CreateObject("CDO.Message")
    With CdoMessage
        Set .Configuration = CdoConfig
        .From = "xxx@hotmail.com"
        .To = "xxx@gmail.com"
        .CC = "" 'destinataires en copie (CC)
        .BCC = "" 'destinataires en copie cachée (CCI)
        .Subject = "Test Mail CDO"
        .HTMLBody = "<HTML><body><p>Bonjour Messieurs,</p>" _
        & "<p>Veuillez prendre note du fichier en pièce jointe mis à jour.</p>" _
        & "<A HREF='http://www.excel-downloads.com/'>Excel VBA</A><br></br>" _
        & "<br></br>Cordialement.<br></br><br></br>" _
        & "<p>Tom Tom</p></body><HTML>"
        .AddAttachment (Fichier)
        .Send
    End With
    Set CdoMessage = Nothing: Set CdoConfig = Nothing: Set CdoParam = Nothing:
End Sub
 

grisan29

XLDnaute Accro
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Bonsoir Roland_M,Joe[pt],nobru26

moi j'utilise un code qui se sert du nom du FAI qui est en dur sur une feuille et la colonne voisine est le serveur du FAI
Code:
Public mailok As Boolean
Public document As String
Public serveur As String
Dim iMsg As Object, iConf As Object, Flds As Object

Public Function paragraphe() As String
    paragraphe = paragraphe & "<HEAD>" & Chr(13)
    paragraphe = paragraphe & "<BODY>" & Chr(13)
    tableau = Split(form_email.corp_du_message, vbCrLf)  'coupe la chaine du textbox par les retour a la ligne
'boucle sur le tableau pour visualiser le résultat
    For I = 0 To UBound(tableau)
        
        paragraphe = paragraphe & "<BR>" & tableau(I)
        Next I
        paragraphe = paragraphe & "<BR>" & "<BR>" & " Vous souhaitant bonne réception"
        paragraphe = paragraphe & "<BR>Cordialement<BR>" '& [H1] & "<BR>"
'changer popeye par votre nom
        paragraphe = paragraphe & "<BR>popeye et olive<BR>" '& [H1] & "<BR>"
'paragraphe = paragraphe & "<br>" & "<br>" & "<img src=C:\Users\Admin\Desktop\image.png>"
        
'paragraphe = paragraphe & [H2] & "<BR>"
        paragraphe = paragraphe & "<center><font size=3 FACE=Comic sans MS style=font-weight:bold Color=#33CC00>Restant a votre service pour tout renseignement<br>cliquez sur le lien pour me contacter<br>"
        paragraphe = paragraphe & "<A href=mailto:" & form_email.Emetteur & "> popeye@olive.fr</A><br></center>"
'changer popeye avec votre adresse
        
    End Function


Sub EnvoiMail_CDO()
    serveur = Sheets("accueil").Range("D2").Value
    
    Set iMsg = CreateObject("cdo.message")
    Set iConf = CreateObject("cdo.configuration")
'*****************************************************************
    
    
'*****************************************************************
    Set Flds = iConf.Fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' cdoSendUsingPort '2
        .Item("http://schemas.Microsoft.com/CDO/configuration/SMTPServerPort") = 25
'remplacez "smtp.nomserveur.fr" par le nom de serveur de votre FAI :
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = serveur
        .Update
    End With
    
    With iMsg
        Set .Configuration = iConf
        .BodyPart.Charset = "utf-8"
        .To = form_email.destinataire.Value
        .CC = form_email.CC.Value
        If form_email.CCI.Value = "" Then
            .BCC = "popeye@olive.fr" ' changer popeye avec votre adresse
            Else:
            .BCC = form_email.CCI.Value & ";" & "popeye@olive.fr" ' changer popeye avec votre adresse
        End If
        .From = form_email.Emetteur 'emetteur
        .Subject = form_email.titre
        .HTMLBody = paragraphe
        For I = 0 To form_email.piece_jointe.ListCount - 1
            .AddAttachment form_email.piece_jointe.List(I)
            accuse_reception.pieces_jointes.AddItem form_email.piece_jointe.List(I)
        Next
'DoEvents
'On Error Resume Next
        .Send
'MsgBox Err.Number
'On Error GoTo 0
    End With
    form_email.piece_jointe.Clear

End Sub

ce code n'est pas de moi mais de PatrickToulon sur DVP qui a mis son classeur dans les contributions, mais qui a été modifié depuis par moi pour envoyer a plusieurs contacts
[XL-2007] formulaire mailers avec piece jointe

autrement il y a ce classeur en téléchargement qui utilise thunderbird

avec tous ces réponses tu devrai avoir de quoi faire ce que tu espère

Pascal
 
Dernière édition:

nobru26

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Wahoo!! Demain j'ai du taf pour adapter et tenter de faire un truc...
Merci de ces pistes, sujet apparement d'actualité.

A adapter pour moi, sauvegarde dans le dossier où se trouve le classeur.
Problème avec le code Outlook et FAI en DUR car je passe par un intranet et je ne connais pas le FAI...

Je vous tiens au jus! Merci
 

nobru26

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Bon j'avance doucement:

Sauvegarde sous pdf dans le dossier du classeur ok

Code:
Sub pdf()
Dim Chemin As String, NomFic As String, extens As String, annee As String, nbcarExt As Byte
Chemin = ThisWorkbook.Path
'nomfeuille =
annee = Sheets("LISTE").Range("D2").Value
'extension du fichier :
extens = Split(ThisWorkbook.Name, ".")(1)
'nombre de caractères contenus dans l'extension du fichier :
nbcarExt = Len(extens)
'extraction du nom du fichier, sans l'extension, mais avec le point :
NomFic = ActiveSheet.Name
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        Chemin & "\" & "FIFI" & " " & annee & NomFic, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
End Sub

Par contre dans tous les exemples de mails, c'est soit Outlook, soit direct smtp depuis Excel, donc impossible pour moi d'utiliser ces sripts, avez-vous des pistes?

Même déjà si ça fait comme le "clic droit envoyer vers email" à la limite ça me va, mais faudrait pouvoir configurer les Emails dans des cellules Excel serait le TOP!

Je continue mes recherches en //
Merci
 
Dernière édition:

grisan29

XLDnaute Accro
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

bonsoir nobru26

après 46 messages tu devrai savoir mettre tes codes entre balises pour être plus lisible

dans ton premier post tu dits
je veux que cela fasse appel à la messagerie par défaut qui n'est pas Outlook.
et dans le dernier tu dits
c'est soit Outlook, soit direct smtp depuis Excel

outlook où pas outlook sur quel pied il faut danser, moi je passe la main car je n'utilise pas outlook qui d'ailleurs n'est pas installé chez moi

Pascal
 

nobru26

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Bonsoir,

Désolé pour les balises j'étais passé par réponse rapide...

Non, si tu lis bien je dis que dans tous les exemples qu'il y a soit Outlook soit smtp direct!
Par contre dans tous les exemples de mails, c'est soit Outlook, soit direct smtp depuis Excel, donc impossible pour moi d'utiliser ces sripts, avez-vous des pistes?


Je viens de chercher et j'ai trouvé un code qui pourrais me convenir mais je n'arrive pas à y attacher le pdf que je viens de créer avec le code du message précédant:

Ce code m'ouvre la messagerie par défaut avec un nouveau mail, le classeur en PJ
Pou y attacher le pdf des idées?

Code:
Sub mailz()
 Dim AccuseReception As Boolean
 Dim Sujet As String
 AccuseReception = True
 Sujet = "azerty"
 ActiveWorkbook.SendMail "", Sujet, AccuseReception
 ActiveWorkbook.Close False
 
End Sub

Merci
 

nobru26

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Merci mais j'ai regardé ce lien déjà.. je suis un peu dépité tous les exemples c'est soit pdf mail CDO ou Outlook, soit directement un workbook et moi je veux type messagerie par defaut et pdf...

Est-ce que vous avez une aide sur cette fonction .sendmail?
Car apparemment cela ne fonctionne qu'avec activeworkbook... impossible de trouver la syntaxe avec un fichier tier en pdf, même une feuille je n'arrive pas à passer avec cette commande!

Merci pour votre aide!
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Bonsoir,

voir ce classeur que j'ai peaufiné !
je n'y ai pas mis la fonction pdf il faudra que j'y regarde !
mais tu peux le créer et l'envoyer les boites de dialogues t'aideront
lis bien les infos et fais des essais simples avec ton adresse expéditeur/destinataire
tu comprendras vite le fonctionnement.

EDIT: je dois m'absenter, suis invité au resto !

voir ici:
https://www.excel-downloads.com/threads/envoyer-des-mails-avec-vba.187821/
 
Dernière édition:

nobru26

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Merci pour ce fichier tout bonnement complet mais je ne peux pas utiliser CDO car je serai dans un réseau intranet d'entreprise, pas d'identifiants ni de smtp, tout est géré par les serveurs.
 

nobru26

XLDnaute Junior
Re : Envoyer Mail feuille en pdf par messagerie "defaut"

Bonsoir,

Oui c'est Lotus notes, et j'ai un lien vers une procédure pour Email Lotus, par contre cela à l'air d'être usine à gaz... et surement lié à la version de Lotus qui change sans arrêt au grès du service IT.

Le simple clic droit sur un fichier, envoyer vers, destinataires fonctionne avec toutes les messageries pourquoi ne peut'on pas faire une macro dans ce sens?

J'ai fait une macro "en attendant, qui mail la sheet excel direct mais le pdf serait mieux...

Merci
 

Discussions similaires

Réponses
2
Affichages
217

Statistiques des forums

Discussions
312 161
Messages
2 085 843
Membres
103 003
dernier inscrit
Maxmarie14