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 SubBonjour à 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 sourcedoit 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 sourcepuis 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 modifierEt tout à l'heure effectivement au pas à pas elle saute cette ligne.
Bonjour,
utilises-tu outlook comme logiciel de messagerie ?
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 SubCher 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 SubMerci de ta précieuse aide
Jean-Luc
Bonjour,
pour demander un avis de lecture de ton mail tu peux essayer
.ReadReceiptRequested=truevoici 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 SubPour 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 SubBonjour 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 SubJe 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