XL 2013 Envoi Mail via VBA Excel

Saliou MBALO

XLDnaute Nouveau
Bonjour la famille,

j'essaie d'exécuter mon code pour envoyer un mail mais je bute sur une erreur dont je n'arrive pas à résoudre.

"erreur d'execution 91 variable objet ou variable de bloc with non définie"

1606729625293.png


Je mets le code à votre disposition pour aide svp.

En vous remerciant d'avance.

VB:
Option Explicit

Sub Mail()
Dim Destinataire As String
Dim objMessage As Object
Dim sNomPdf As String
Dim sDossier As String
Dim sNomCrypt As String

    sDossier = ThisWorkbook.Path

    Destinataire = "mymail@domain.com"
    sNomPdf = sDossier & "\" & "BSI 2019.pdf"

    Feuil1.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=sNomPdf, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

    sNomCrypt = sDossier & "\" & "Tempo.pdf"
    EncryptPDFUsingPdfforgeDll sNomPdf, sNomCrypt

    Kill sNomPdf
    Name sNomCrypt As sNomPdf

         Set objMessage = objMessage.CreateItem(0)

      With objMessage
          .From = "mymail@domain.com"
          .To = Destinataire
          .CC = ""
          .BCC = ""
          .Subject = "Essai"
          .Body = "Bonjour, ceci est un test"
          .AddAttachment sNomPdf
          .Send
      End With

    Set objMessage = Nothing
End Sub

Private Sub EncryptPDFUsingPdfforgeDll(sNomFichier As String, sOutputCrypt As String)
Dim Pdf As Object, Crypt As Object

    Set Crypt = CreateObject("pdfforge.pdf.PDFEncryptor")

    With Crypt
        .AllowAssembly = False
        .AllowCopy = False
        .AllowFillIn = False
        .AllowModifyAnnotations = False
        .AllowModifyContents = False
        .AllowPrinting = True
        .AllowPrintingHighResolution = True
        .AllowScreenReaders = False
        .EncryptionMethod = 2

        .OwnerPassword = "saliou"
        .UserPassword = "master"
    End With

    Set Pdf = CreateObject("pdfforge.pdf.pdf")
    Pdf.EncryptPDFFile sNomFichier, sOutputCrypt, Crypt
    Set Pdf = Nothing

    Set Crypt = Nothing
End Sub
 
Dernière édition:
Solution
Re,

Alors il vous faut déclarer une variable pour l'application Outlook, l'initialiser et ensuite vous pourrez créer un objet mailitem à partir de votre objet Outlook.

VB:
Dim objApp as Object

Dim objMessage as Object
'..... autres lignes de code

Set objApp = CreateObject("Outlook.Application")
Set objMessage = objApp. CreateItem(0) 

      With objMessage
          .From = "saliou.mballo@socgen.com"
          .To = Destinataire
          .CC = ""
          .BCC = ""
          .Subject = "Essai"
          .Body = "Bonjour, ceci est un test"
          .AddAttachment sNomPdf
          .Send
      End With
    '
     '---- nettoyage des variables objet
    Set objMessage = Nothing
    Set objApp = Nothing
'
'------- suite et autres...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Le message d'erreur vous dis :
"erreur d'execution 91 variable objet ou variable de bloc with non définie"

Comment voulez-vous que nous sachions d'où cela provient à partir d'une image à peine lisible et d'une macro dont on ne peut connaître ni l'origine ni l'état des variables et objets utilisés ! Nous ne savons même pas sur quelle ligne se produit l'erreur.

Cordialement
 

Saliou MBALO

XLDnaute Nouveau
Bonjour,

Le message d'erreur vous dis :


Comment voulez-vous que nous sachions d'où cela provient à partir d'une image à peine lisible et d'une macro dont on ne peut connaître ni l'origine ni l'état des variables et objets utilisés ! Nous ne savons même pas sur quelle ligne se produit l'erreur.

Cordialement
Bonjour Roblochon
Désolé si j'ai pas été explicite mais l'idée n'était pas de vous mettre dans une situation ou vous ne comprendrez pas mon problème.
Je mets en PJ le fichier
L'erreur se trouve à la ligne
VB:
Set objMessage = objMessage.CreateItem(0)
 

Pièces jointes

  • Contributions.xlsm
    486.8 KB · Affichages: 27
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Euh ! le numéro de ligne n'était qu'un élément de ce que je vous disais !
Lorsque vous avez une panne moteur, allez-vous chez le garagiste réparer votre voiture avec une image et en lui disant 'c'est le moteur qui tourne pas' ?

D'où sortez-vous votre macro ?

Avez-vous seulement un client mail, outlook ou autre sur votre machine ?

Votre variable 'objetMessage' est déclarée mais n'existe pas encore au moment où vous vous en servez, elle n'a été créée nulle part auparavant, 'c'est un sac vide'

Cordialement
 
Dernière édition:

Saliou MBALO

XLDnaute Nouveau
Bonjour,

Le message d'erreur vous dis :


Comment voulez-vous que nous sachions d'où cela provient à partir d'une image à peine lisible et d'une macro dont on ne peut connaître ni l'origine ni l'état des variables et objets utilisés ! Nous ne savons même pas sur quelle ligne se produit l'erreur.

Cordialement
Bonjour Roblochon
Désolé si j'ai pas été explicite mais l'idée n'était pas de vous mettre dans une situation ou vous ne comprendrez pas mon problème. Je
L'erreur se trouve à la ligne
VB:
Set objMessage = objMessage.CreateItem(0)
Re,

Euh ! le numéro de ligne n'était qu'un élément de ce que je vous disais !
Lorsque vous avez une panne moteur, allez-vous chez le garagiste réparer votre voiture avec une image et en lui disant 'c'est le moteur qui tourne pas' ?

D'où sortez-vous votre macro ?

Avez-vous seulement un client mail, outlook ou autre sur votre machine ?

Cordialement
J'utilise Outlook et c'est configuré avec mon adresse Email personnel.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Alors il vous faut déclarer une variable pour l'application Outlook, l'initialiser et ensuite vous pourrez créer un objet mailitem à partir de votre objet Outlook.

VB:
Dim objApp as Object

Dim objMessage as Object
'..... autres lignes de code

Set objApp = CreateObject("Outlook.Application")
Set objMessage = objApp. CreateItem(0) 

      With objMessage
          .From = "saliou.mballo@socgen.com"
          .To = Destinataire
          .CC = ""
          .BCC = ""
          .Subject = "Essai"
          .Body = "Bonjour, ceci est un test"
          .AddAttachment sNomPdf
          .Send
      End With
    '
     '---- nettoyage des variables objet
    Set objMessage = Nothing
    Set objApp = Nothing
'
'------- suite et autres lignes de code

Peux pas faire plus. Par contre vous avez sur la toile une myriade d'exemples, alors faites quelques recherches.

bonne journée
 

Saliou MBALO

XLDnaute Nouveau
Re,

Alors il vous faut déclarer une variable pour l'application Outlook, l'initialiser et ensuite vous pourrez créer un objet mailitem à partir de votre objet Outlook.

VB:
Dim objApp as Object

Dim objMessage as Object
'..... autres lignes de code

Set objApp = CreateObject("Outlook.Application")
Set objMessage = objApp. CreateItem(0)

      With objMessage
          .From = "saliou.mballo@socgen.com"
          .To = Destinataire
          .CC = ""
          .BCC = ""
          .Subject = "Essai"
          .Body = "Bonjour, ceci est un test"
          .AddAttachment sNomPdf
          .Send
      End With
    '
     '---- nettoyage des variables objet
    Set objMessage = Nothing
    Set objApp = Nothing
'
'------- suite et autres lignes de code

Peux pas faire plus. Par contre vous avez sur la toile une myriade d'exemples, alors faites quelques recherches.

bonne journée
Bien reçu,
je vais essayer votre proposition tout en espérant que cela fonctionnera.
Merci pour l'aide
Bonne journée
Cordialement
 

Discussions similaires

Réponses
2
Affichages
99

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 849
dernier inscrit
florentMIG