XL 2013 Envoi Mail via VBA Excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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...
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
 
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

Dernière édition:
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:
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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
358
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
634
Réponses
2
Affichages
714
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Réponses
2
Affichages
400
Retour