Erreur "Objet requis" sur macro

Bonjour

Je suis un petit nouveau sur ce forum, donc je vous remercie de votre compréhension si je fais quelques erreurs

Je suis novice en programmation (Pour le moment) et j'ai tenté de créer un code pour l'enregistrement d'une feuille EXCEL en PDF et l'envoi par mail avec la sauvegarde ce cette feuille en PDF dans le même répertoire que le fichier source

Lorsque je lance la macro, j'ai le message suivant "Objet requis"

Vous trouverez ci-dessous le code utilisé

Je vous remercie sincèrement de votre aide

Cordialement

Sub Envoi_Feuil_Excel_en_PDF()

    Dim messageHTML
    On Error GoTo errorHandler
    'on cré le fichier PDFdans le même dossier que le fichier source
        Sheets("Feuille1").ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
    ActiveWorkbook.Path & "\" & "Feuille1.PDF"  ' à changer"

    Set objMessage = CreateObject("CDO.Message")
    objMessage.Subject = "Enregistrement"  'A modifier
    objMessage.From = "jean-luc.david8888@orange.fr" 'adresse mail de l'expéditeur n'est pas obligatoire
    objMessage.To = "jean-luc.david8888@orange.fr"  'Email du destinataire doit-être correct ici
    objMessage.TextBody = Range("F2")
    piece_jointe = ActiveWorkbook.Path & "\" & "Feuille1.PDF" ' à modifier
    messageHTML = "Ceci est un message en HTML"

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtp.orange.fr ' "smtp.orange.fr"   'A modifier
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objMessage.Configuration.Fields.Update

    objMessage.Send
    MsgBox "Le mail a été bien envoyé !"
    'si erreur on sort de la procédure
    Exit Sub
errorHandler:
    'description de l'erreur survenue
    MsgBox Err.Description

End Sub

Bonjour à tous

Je vois que certains d'entre vous ont regardé ma question sans apporter de réponse

Y a t'il un problème dans ce que j'y ai écrit? ou dans la forme?

C'est la première fois que je viens sur ce forum

Bonne journée à vous

Merci de votre aide

Jean-Luc

bonjour,

si tu nous indiquais la ligne sur laquelle la macro se plante ? celle qui est surlignée en jaune.

Bonjour

Merci pour avoir pris ma demande en compte

C'est sur la première ligne, lorsque je fais démarrer la macro en pas à pas c'est la première ligne qui se surligne en jaune.

Je te mets le début de la macro telle qu'elle s'affiche

Merci

Sub Envoi_Feuil_Excel_en_PDF() ==> Ligne surlignée en jaune

    Dim messageHTML
    On Error GoTo errorHandler
    'on cré le fichier PDFdans le même dossier que le fichier source
        Sheets("Feuille1").ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
    ActiveWorkbook.Path & "\" & "Feuille1.PDF"  ' à changer"

bonjour,

si tu exécutes la macro en mode pas à pas, l'instruction qui va être exécutée est surlignée en jaune.

quelle est la ligne sur laquelle tu reçois le message d'erreur ?

La dernière

Lorsque je fais le pas sur end sub


H2So4

J'ai relancé la macro en pas à pas, le message d'erreur apparaît lorsque j'exécute la commande suivante: MsgBox Err.Description

Je me lance dans les macros mais ce n'est ps évident, on prendra le temps pour apprendre

A+

bonjour,

je n'avais pas remarqué que tu avais activé une gestion des erreurs personnalisées. Peux-tu re-exécuter ta macro en mettant la ligne on erreur goto errorhandler en commentaire. tu mets le caractère ' devant cette ligne.

et nous indiquer la ligne sur laquelle la procédure s'arrête avec le message d'erreur.

Bonjour

Je la mets à quel niveau cette ligne?

Merci

bonjour,

tu la laisses où elle se trouve, mais tu mets un ' en début de ligne.

ceci

ub Envoi_Feuil_Excel_en_PDF() ==> Ligne surlignée en jaune

Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source

doit devenir ceci

ub Envoi_Feuil_Excel_en_PDF() ==> Ligne surlignée en jaune

Dim messageHTML
' On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source

puis tu lances l'exécution et tu nous indiques la ligne surlignée en jaune au moment de l'erreur.

Bonjour

Lorsque je lance la macro avec ta modification il y a erreur 424 à la commande suivante:

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtp.orange.fr ' "smtp.orange.fr"   'A modifier

Et tout à l'heure effectivement au pas à pas elle saute cette ligne.

Bonjour,

utilises-tu outlook comme logiciel de messagerie ?

Oui Outlook 2007

Bonjour,

une solution qui utilise outlook pour envoyer ton message.

Sub Envoi_Feuil_Excel_en_PDF()

'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("Feuille1").ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
ActiveWorkbook.Path & "\" & "Feuille1.PDF" ' à changer"

Set OutApp = CreateObject("Outlook.Application")
    Set objmessage = OutApp.CreateItem(0)

objmessage.Subject = "Enregistrement" 'A modifier
objmessage.To = "jean-luc.david88@orange.fr" 'Email du destinataire doit-être correct ici
objmessage.Body = Range("F2") & "test"
objmessage.attachments.Add ActiveWorkbook.Path & "\" & "feuille1.PDF" ' à modifier
objmessage.Send
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description

End Sub

Cher H2So4

Je te remercie, ça fonctionne très bien

Bonne fin de journée

Bonsoir,

si la solution te convient peux-tu clôturer le sujet ?

peux-tu également changer le titre en "envoi de mail avec annexe via outlook" ? se sera plus proche de l'objectif que tu cherchais à atteindre ?

merci

Bonjour

Je te remercie de ton aide

J'ai également changé le titre et clôturé le sujet

Je te souhaite une très bonne journée


Bonjour H2SO4

J'ai bien essayé de trouver un code mais ce n'est pas évident lorsque l'on ne débute pas par un initiation correcte

Dans mon code je voudrai ajouter un accusé réception lorsque mon destinataire à lu le mail mais également faire passer une cellule d'un autre onglet à 1 dés que 'accusé réception de lecture est arrivé dans ma boite mail

Pour un débutant c'est plus que compliqué, pour information j'ai commandé un bouquin sur le VBA

Je te redonne mon code

Sub Envoi_Feuil_Excel_en_PDF()

'on cré le fichier PDFdans le même dossier que le fichier source
ActiveSheet.ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
ActiveWorkbook.Path & "\" & "Feuille1.PDF" ' à changer"

Set OutApp = CreateObject("Outlook.Application")
    Set objmessage = OutApp.CreateItem(0)

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
objmessage.To = "patrick.hunter@bbox.fr" 'Email du destinataire doit-être correct ici
objmessage.Body = "Bonjour," & _
vbCrLf & vbCrLf & _
"Veuillez trouver ci-joint votre fiche de réservation à nous renvoyer remplie au plus vite" & _
vbCrLf & vbCrLf & _
"Cordialement" & _
vbCrLf & vbCrLf & _
"L'équipe organisatrice du tournoi"
objmessage.attachments.Add ActiveWorkbook.Path & "\" & "feuille1.PDF" ' à modifier
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description

End Sub

Merci de ta précieuse aide

Jean-Luc

Bonjour,

pour demander un avis de lecture de ton mail tu peux essayer

.ReadReceiptRequested=true

voici le code adapté

Sub Envoi_Feuil_Excel_en_PDF()

'on cré le fichier PDFdans le même dossier que le fichier source
ActiveSheet.ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
ActiveWorkbook.Path & "\" & "Feuille1.PDF" ' à changer"

Set OutApp = CreateObject("Outlook.Application")
Set objmessage = OutApp.CreateItem(0)

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
objmessage.To = "patrick.hunter@bbox.fr" 'Email du destinataire doit-être correct ici
objmessage.Body = "Bonjour," & _
vbCrLf & vbCrLf & _
"Veuillez trouver ci-joint votre fiche de réservation à nous renvoyer remplie au plus vite" & _
vbCrLf & vbCrLf & _
"Cordialement" & _
vbCrLf & vbCrLf & _
"L'équipe organisatrice du tournoi"
objmessage.attachments.Add ActiveWorkbook.Path & "\" & "feuille1.PDF" ' à modifier
objmessage.ReadReceiptRequested=true ' demande d'un avis de lecture
objmessage.send ' cette ligne provoque l'envoi du message, elle n'y est plus dans ton code
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description

End Sub

Pour la gestion de cette information, n'utilisant pas outlook, je pourrais difficilement t'aider,

voici ce qu'il faudrait faire :

il faut lancer régulièrement un programme qui parcourt les messages arrivés dans ta boite mail.

pour chaque mail, détecter s'il s'agit d'un avis de lecture

si avis de lecture trouvé, retrouver la personne qui l'a envoyé et mettre une valeur à 1 dans ton tableau excel

tout simple quand on le formule en langage courant, plus compliqué quand on ne maîtrise pas le modèle de données d'outlook.

afin de te pouvoir t'aider pourrais-tu exécuter ce code, il devrait lire les messages non-lus de ta boitemail outlook.

afficher l'adresse mail de l'expéditeur et le sujet.

vérifier que cela fonctionne

si cela fonctionne,

me dire à quoi ressemble le sujet, quand il s'agit d'un avis de réception de lecture. (pour tester cela tu dois t'envoyer un message et le lire)

me donner la structure de ton classeur, (dans quel onglet et quelles cellules je peux trouver les adresses mail des mails envoyés, et dans quels onglet et quelles cellules mettre la valeur 1.

bonne chance !

Public Sub lireaccusé()

    'get reference to inbox
    Set outlook = CreateObject("Outlook.Application")
    Set outlooknamespace = outlook.GetNamespace("MAPI")
    Set outlookinbox = outlooknamespace.GetDefaultFolder(olFolderInbox)

    For Each m In outlookinbox.Items

        With m
            If .unread Then    'si message non lu
                ms = .Senderemailaddress
                MsgBox ms
                sujet = .Subject
                MsgBox sujet
            End If

    End With
    Next

Next

Set oAttachment = Nothing
Set oAttachments = Nothing
Set oMessage = Nothing
Set oFldr = Nothing
Set oNs = Nothing
Set oOutlook = Nothing

End Sub

Bonjour H2SO4

Je suis désolé pour le retard dans ma réponse mais je ne suis pas toujours disponible

Le code que tu m'as envoyé pour l'accusé réception fonctionne très bien et je t'en remercie

J'ai ajouté la ligne Copie qui fonctionne très bien

Par contre j'essaye d'envoyer le même message à deux destinataires dont les adresses se trouvent dans la feuille en cellule F5 & F7

J'ai essayé Range As Range mais ça ne fonctionne pas

Je te mets le code qui fonctionne

Sub Envoi_Feuil_Excel_en_PDF()
'on cré le fichier PDFdans le même dossier que le fichier source
ActiveSheet.ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
ActiveWorkbook.Path & "\" & "Feuille1.PDF" ' à changer"

Set OutApp = CreateObject("Outlook.Application")
Set objmessage = OutApp.CreateItem(0)

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
objmessage.To = "Range(n13,n16)As Range"
'Email du destinataire doit-être correct ici
objmessage.CC = "jean-luc.david8888@orange.fr" 'Adresse mail de la personne en copie
objmessage.Body = "Bonjour," & _
vbCrLf & vbCrLf & _
"Veuillez trouver ci-joint votre fiche de réservation à nous renvoyer remplie au plus vite" & _
vbCrLf & vbCrLf & _
"Cordialement" & _
vbCrLf & vbCrLf & _
"L'équipe organisatrice du tournoi"
objmessage.attachments.Add ActiveWorkbook.Path & "\" & "feuille1.PDF" ' à modifier
objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture
objmessage.send ' cette ligne provoque l'envoi du message [color=#FF0000][color=#FF0000]==> Ca bloque à cette ligne de commande il me met "Erreur d'execution" Impossible d ereconnaitre 1 ou plusieurs noms[/color][/color]
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description

End Sub

Je te remercie de ta nouvelle aide

JLD

bonjour,

essaie ainsi (non testé)

Sub Envoi_Feuil_Excel_en_PDF()
'on cré le fichier PDFdans le même dossier que le fichier source
ActiveSheet.ExportAsFixedFormat Type:=xlTypexslm, Filename:= _
ActiveWorkbook.Path & "\" & "Feuille1.PDF" ' à changer"

Set OutApp = CreateObject("Outlook.Application")
Set objmessage = OutApp.CreateItem(0)

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
for each dest in range("n13:n16")
destlist=destlist & sep & dest.value
if sep="" then sep=";"
next
objmessage.to=destlist 

objmessage.CC = "jean-luc.david88@orange.fr" 'Adresse mail de la personne en copie
objmessage.Body = "Bonjour," & _
vbCrLf & vbCrLf & _
"Veuillez trouver ci-joint votre fiche de réservation à nous renvoyer remplie au plus vite" & _
vbCrLf & vbCrLf & _
"Cordialement" & _
vbCrLf & vbCrLf & _
"L'équipe organisatrice du tournoi"
objmessage.attachments.Add ActiveWorkbook.Path & "\" & "feuille1.PDF" ' à modifier
objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture
objmessage.send ' cette ligne provoque l'envoi du message [color=#FF0000]==> Ca bloque à cette ligne de commande il me met "Erreur d'execution" Impossible d ereconnaitre 1 ou plusieurs noms[/color]
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description

End Sub
Rechercher des sujets similaires à "erreur objet requis macro"