Erreur "Objet requis" sur macro

Désolé il bloque toujours à la même ligne "objmessage.Send" il ne reconnait pas les noms

re-Bonjour,

remplace le .send par .display, il devrait t'afficher le mail dans outlook, jette un oeil sur les destinataires ...

Re bonjour

En remplacant Send par Display, j'ai vu que j'avais une erreur de syntaxe dans une adresse

Maintenant il bloque sur l'accusé réception ou il me dit que à la ligne de code suivante:

objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture

L'élément à été déplacé ou supprimé alors que je n'i rien touché sur cette ligne, mais peut être est-ce dû au fait que nous avons plusieurs destinataires

Qu'en penses tu?

cela fonctionne-t-il encore avec un seul destinataire ?

Oui si je ne mets qu'une valeur de cellule ça fonctionne

Dés que j'en ajoute une deuxième ça bloque et il me dit qu'il ne reconnait pas les noms pourtant l'adresse est valide

J'avoue que je ne vois absolument pas ou alors le signe entre les cellule n'est pas correct.

bonjour,

en laissant le .display

peux-tu me faire un copier coller de ce qui se trouve dans le champ envoyer à : ?

ou bien essayer les noms un par un. pour essayer de trouver celui qui pose problème.

Re bonjour

En fait le signe séparateur doit être ; et non :

J'ai modifié le code et visiblement ça marche

Je fais des tests avec des destinataires extérieurs et reviens vers toi

Ce qui est bien c'est que j'analyse les lignes de commande et je commence à comprendre la signification

J'attends mon bouquin sur le VBA avec une grande impatience

A tout à l'heure

Merci encore

Re bonjour

J'ai fait les tests avec des adresses extérieures et ça fonctionne très bien.

J'ai une deuxième requête à te faire

Je souhaite envoyer une partie de feuille EXCEL (A1:W60) au format EXCEL et non PDF avec une liste d'adresse mail située dans les cellules A62 à a200. J'ai testé le code suivant, il fonctionne mais je n'ai pas la pièce jointe.

Que me manque t'il?

Merci de ton aide

Sub Macro1()
'on cré le fichier excel dans le même dossier que le fichier source
ActiveSheet.Range("A1:w60").Select ' la plage de cellules à envoyer
ActiveSheet.Range("A1:w60").Copy 'crée une copie de la feuille active"

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

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
For Each Dest In Range("h65,h66") ' Adresse des destinataires dans les cellules 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 ActiveSheet ' à modifier
objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture
objmessage.send
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
DAVIDADAM a écrit :

Re bonjour

En fait le signe séparateur doit être ; et non :

il me semble pourtant que j'avais mis ; dans le code que je t'ai donné.

Non c'était bien : mais c'est très bien ça m'a permis de chercher un peu....

Et pour le deuxième code tu as une idée?

Merci

DAVIDADAM a écrit :

Non c'était bien : mais c'est très bien ça m'a permis de chercher un peu....

Et pour le deuxième code tu as une idée?

Merci

tu as dû mal recopier car j'ai bien utilisé ";" comme séparateur dans le code que je t'ai donné.

if sep="" then sep=";"

pour le 2nd point.

remplace cette instruction par

objmessage.attachments.Add ActiveSheet ' à modifier
activesheet.saveas ws.name & ".xlsx"
objmessage.attachments.add ws.name & ".xlsx"

Re bonjour

J'ai fait comme tu me l'as proposé mais ça ne fonctionne pas

Je te joins le code complet et ça bloque à ActiveSheet.SaveAs ws.Name & ".xlsx"

Merci

Pour le code tu avais raison c'est dans la ligne ou il y a les cellules que le séparateur était éronné

Sub Macro1()
'on cré le fichier excel dans le même dossier que le fichier source
ActiveSheet.Range("A1:w60").Select ' la plage de cellules à envoyer
ActiveSheet.Range("A1:w60").Copy 'crée une copie de la feuille active"

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

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
For Each Dest In Range("h65,h66") ' Adresse des destinataires dans les cellules 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"
set ws=activesheet
fn = ws.Name 'fn nom de la feuille
Set wb = Workbooks.Add(xlWBATWorksheet) 'on crée un nouveau classeur
ws.copy after:=wb.worksheets(worksheets.count) ' on copie la feuille dans le nouveau classeur
set ws1=wb.worksheets(worksheets.count) ' ws1= nouvelle feuille dans le nouveau classeur
wb.Sheets(1).delete ' on supprime une feuille inutile
ws1.name=ws.name ' on renomme la feuille copiée dans le nouveau classeur
set ws1=nothing
wb.SaveAs fn 'on sauve le nouveau classeur qui contient une feuille (la feuille active)
wb.Close 'on ferme le classeur
set wb=nothing
fn=fn & ".xlsx" 'nom du classeur sauvé
objmessage.attachments.Add fn 'on ajoute le classeur en annexe au mail
objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture
objmessage.send
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True

End Sub
Sub Macro1()
'on cré le fichier excel dans le même dossier que le fichier source
ActiveSheet.Range("A1:w60").Select ' la plage de cellules à envoyer
ActiveSheet.Range("A1:w60").Copy 'crée une copie de la feuille active"

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

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
For Each Dest In Range("h65,h66") ' Adresse des destinataires dans les cellules 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"
set ws=activesheet
fn = ws.Name 'fn nom de la feuille
Set wb = Workbooks.Add(xlWBATWorksheet) 'on crée un nouveau classeur
ws.copy after:=wb.worksheets(worksheets.count) ' on copie la feuille dans le nouveau classeur
set ws1=wb.worksheets(worksheets.count) ' ws1= nouvelle feuille dans le nouveau classeur
wb.Sheets(1).delete ' on supprime une feuille inutile
ws1.name=ws.name ' on renomme la feuille copiée dans le nouveau classeur
set ws1=nothing
wb.SaveAs fn 'on sauve le nouveau classeur qui contient une feuille (la feuille active)
wb.Close 'on ferme le classeur
set wb=nothing
fn=fn & ".xlsx" 'nom du classeur sauvé
objmessage.attachments.Add fn 'on ajoute le classeur en annexe au mail
objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture
objmessage.send
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True

End Sub

Bonjour

Visiblement ça marche correctement

Je vais essayer d'analyser les lignes de code pour comprendre le fonctionnement

Je te remercie encore

Je ne sais pas ou se trouve le bouton "Résolu"

A bientôt

Re bonjour

Je me suis peut être réjouis trop vite

Il bloque à la ligne suivante

objmessage.attachments.Add fn 'on ajoute le classeur en annexe au mail

Le message dit "Fichier introuvable vérifier que le chemin d'accès et le nom de fichier sont corrects

Je te mets le code complet mais ce que je trouve drôle c'est que ça fonctionnait

Sub Macro1()
'on cré le fichier excel dans le même dossier que le fichier source
ActiveSheet.Range("A1:w60").Select ' la plage de cellules à envoyer
ActiveSheet.Range("A1:w60").Copy 'crée une copie de la feuille active"

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

objmessage.Subject = "Enregistrement de votre réservation" 'A modifier
For Each Dest In Range("h66:h215") ' Adresse des destinataires dans les cellules h66 à h215
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 renseignée au plus vite" & _
vbCrLf & vbCrLf & _
"Seules les cellules à fond blanc sont à remplir" & _
vbCrLf & vbCrLf & _
"Cette feuille est à renvoyer au plus tard pour le XX/XX/2015 remplie dans sa totalité (Participation aux repas, Mode de réglement)" & _
vbCrLf & vbCrLf & _
"Veuillez noter que le montant dû au titre de l'engagement et de la prise des repas est calculé en fonction de vos données rentrées dans la fiche de réservation" & _
vbCrLf & vbCrLf & _
"Afin d'organiser au mieux le service de restauration, tout repas non réservé ne pourra être servi le jour de la compétition" & _
vbCrLf & vbCrLf & _
"Cordialement" & _
vbCrLf & vbCrLf & _
"L'équipe organisatrice du tournoi"
Set ws = ActiveSheet
fn = ws.Name 'fn nom de la feuille
Set wb = Workbooks.Add(xlWBATWorksheet) 'on crée un nouveau classeur
ws.Copy after:=wb.Worksheets(Worksheets.Count) ' on copie la feuille dans le nouveau classeur
Set ws1 = wb.Worksheets(Worksheets.Count) ' ws1= nouvelle feuille dans le nouveau classeur
wb.Sheets(1).Delete ' on supprime une feuille inutile
ws1.Name = ws.Name ' on renomme la feuille copiée dans le nouveau classeur
Set ws1 = Nothing
wb.SaveAs fn 'on sauve le nouveau classeur qui contient une feuille (la feuille active)
wb.Close 'on ferme le classeur
Set wb = Nothing
fn = fn & ".xlsx" 'nom du classeur sauvé
objmessage.attachments.Add fn 'on ajoute le classeur en annexe au mail
objmessage.ReadReceiptRequested = True ' demande d'un avis de lecture
objmessage.display
MsgBox "Le mail a été bien envoyé !"
'si erreur on sort de la procédure
Application.DisplayAlerts = True

End Sub

Merci

bonjour,

je suppose qu'il y a un problème avec le nom du classeur qui est généré sur base du nom de la feuille. Comment se nomme la feuille que tu veux envoyer ?

c'est la galère de faire du débogage sans le fichier (donc merci de mettre un fichier dans lequel on peut reproduire l'erreur que tu mentionnes).... de plus si tu pouvais utiliser les balises code autour de la macro.

merci

Quant au bouton, il doit se trouver sur l'écran tant que le sujet n'est pas clôturé.(mais tu as déjà marqué ce sujet comme résolu).

Bonjour H2SO4

Je reviens vers toi pour mon fichier

Je ne parviens pas à comprendre la subtilité de renommage de la feuille

Je te mets en PJ le fichier ou j'ai supprimé pas mal d'onglets mais ça ne change rien dans le fonctionnement

Je te remercie de m'éclairer sur ce problème que je ne comprends pas

A+

bonjour,

merci pour le fichier, voici une version corrigée du code

Sub Macro1()
'on cré le fichier excel dans le même dossier que le fichier source
    ActiveSheet.Range("A1:x66").Select    ' la plage de cellules à envoyer
    ActiveSheet.Range("A1:x66").Copy    'crée une copie de la feuille active"

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

    objmessage.Subject = "Enregistrement de votre réservation"    'A modifier
    For Each Dest In Range("h66:h215")    ' Adresse des destinataires dans les cellules h66 à h215
        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 renseignée au plus vite" & _
                      vbCrLf & vbCrLf & _
                      "Seules les cellules à fond blanc sont à remplir" & _
                      vbCrLf & vbCrLf & _
                      "Cette feuille est à renvoyer au plus tard pour le XX/XX/2015 remplie dans sa totalité (Participation aux repas, Mode de réglement)" & _
                      vbCrLf & vbCrLf & _
                      "Veuillez noter que le montant dû au titre de l'engagement et de la prise des repas est calculé en fonction de vos données rentrées dans la fiche de réservation" & _
                      vbCrLf & vbCrLf & _
                      "Afin d'organiser au mieux le service de restauration, tout repas non réservé ne pourra être servi le jour de la compétition" & _
                      vbCrLf & vbCrLf & _
                      "Cordialement" & _
                      vbCrLf & vbCrLf & _
                      "L'équipe organisatrice du tournoi"
    Set ws = ActiveSheet
    fn = ws.Name    'fn nom de la feuille
    Set wb = Workbooks.Add(xlWBATWorksheet)    'on crée un nouveau classeur
    ws.Copy after:=wb.Worksheets(Worksheets.Count)    ' on copie la feuille dans le nouveau classeur
    Set ws1 = wb.Worksheets(Worksheets.Count)    ' ws1= nouvelle feuille dans le nouveau classeur
    Application.DisplayAlerts = False
    wb.Sheets(1).Delete    ' on supprime une feuille inutile
    ws1.Name = ws.Name    ' on renomme la feuille copiée dans le nouveau classeur
    Set ws1 = Nothing
    wb.SaveAs fn    'on sauve le nouveau classeur qui contient une feuille (la feuille active)
    Application.DisplayAlerts = True
    fn = wb.FullName
    wb.Close    'on ferme le classeur
    Set wb = Nothing
    'nom du classeur sauvé
    objmessage.attachments.Add fn    'on ajoute le classeur en annexe au mail
    objmessage.ReadReceiptRequested = True    ' demande d'un avis de lecture
    objmessage.send
    MsgBox "Le mail a été bien envoyé !"
    'si erreur on sort de la procédure
    Application.DisplayAlerts = True
End Sub

Bonjour H2SO4,

Je te remercie de ton aide et ça fonctionne correctement

Je vais pouvoir analyser ce qui ne fonctionnait pas et surtout continuer à développer quelques petites macro qui une fois maîtrisées rendent un service fort agréable.

Par contre je ne trouve pas le bouton problème résolu, j'ai pourtant bien regardé dans tous les coins

Bonne journée

Rechercher des sujets similaires à "erreur objet requis macro"