Bonjour
J'ai un code vba pour l'envoi de mail en automatique avec pièce jointe.
J'ai remarqué que lorsque le mail du destinataire n'est pas reconnu dans mon carnet d'adresse outlook, la macro s’arrête sur .Send.
En revanche sur je le met en .Display ça fonctionne.
Si je met l'adresse dans mon carnet d'adresse outlook ça fonctionne avec .send, par contre comme c'est un fichier utilisé par d'autres personnes, je voudrais savoir si il existe une solution pour contourner ce blocage.
Merci d'avance si vous avez un conseil ou solution
voici mon code :
sub Macro_envoi_mail
'...
'envoi du fichier en pièce jointe
Dim destinataireOutlook As Outlook.Application
Dim Maildestinataire As Outlook.MailItem
PreparerOutlook destinataireOutlook
Set Maildestinataire = destinataireOutlook.CreateItem(0)
'création de l'email
With Maildestinataire
.SentOnBehalfOfName = ThisWorkbook.Worksheets("Mail").Range("c14")
.To = ThisWorkbook.Worksheets("Mail").Range("c16")
.CC = ThisWorkbook.Worksheets("Mail").Range("c17")
.Subject = ThisWorkbook.Worksheets("Mail").Range("c18")
.Body = ThisWorkbook.Worksheets("Mail").Range("c19")
'fichier en cours d'utilisation envoyé en attaché:
.Attachments.Add ActiveWorkbook.FullName
.Send
End With
'nettoyage...
If (Not (Maildestinataire Is Nothing)) Then Set Maildestinataire = Nothing
If (Not (destinataireOutlook Is Nothing)) Then Set destinataireOutlook = Nothing
'...
end sub
Private Sub PreparerOutlook(ByRef oOutlook As Object)
'------------------------------------------------------------------------------------------------
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
'------------------------------------------------------------------------------------------------
On Error Resume Next
'vérification si Outlook est ouvert
Set oOutlook = GetObject(, "Outlook.Application")
If (Err.Number <> 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set oOutlook = CreateObject("Outlook.Application")
If (Err.Number <> 0) Then
MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
Exit Sub
Else
End If
Else 'si Outlook est ouvert, l'instance existante est utilisée
End If
End Sub
J'ai un code vba pour l'envoi de mail en automatique avec pièce jointe.
J'ai remarqué que lorsque le mail du destinataire n'est pas reconnu dans mon carnet d'adresse outlook, la macro s’arrête sur .Send.
En revanche sur je le met en .Display ça fonctionne.
Si je met l'adresse dans mon carnet d'adresse outlook ça fonctionne avec .send, par contre comme c'est un fichier utilisé par d'autres personnes, je voudrais savoir si il existe une solution pour contourner ce blocage.
Merci d'avance si vous avez un conseil ou solution
voici mon code :
sub Macro_envoi_mail
'...
'envoi du fichier en pièce jointe
Dim destinataireOutlook As Outlook.Application
Dim Maildestinataire As Outlook.MailItem
PreparerOutlook destinataireOutlook
Set Maildestinataire = destinataireOutlook.CreateItem(0)
'création de l'email
With Maildestinataire
.SentOnBehalfOfName = ThisWorkbook.Worksheets("Mail").Range("c14")
.To = ThisWorkbook.Worksheets("Mail").Range("c16")
.CC = ThisWorkbook.Worksheets("Mail").Range("c17")
.Subject = ThisWorkbook.Worksheets("Mail").Range("c18")
.Body = ThisWorkbook.Worksheets("Mail").Range("c19")
'fichier en cours d'utilisation envoyé en attaché:
.Attachments.Add ActiveWorkbook.FullName
.Send
End With
'nettoyage...
If (Not (Maildestinataire Is Nothing)) Then Set Maildestinataire = Nothing
If (Not (destinataireOutlook Is Nothing)) Then Set destinataireOutlook = Nothing
'...
end sub
Private Sub PreparerOutlook(ByRef oOutlook As Object)
'------------------------------------------------------------------------------------------------
'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
'------------------------------------------------------------------------------------------------
On Error Resume Next
'vérification si Outlook est ouvert
Set oOutlook = GetObject(, "Outlook.Application")
If (Err.Number <> 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set oOutlook = CreateObject("Outlook.Application")
If (Err.Number <> 0) Then
MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
Exit Sub
Else
End If
Else 'si Outlook est ouvert, l'instance existante est utilisée
End If
End Sub