1 pièce(s) jointe(s)
Envoi mail via Outlook depuis excel en VBA
Bonjour,
je dois envoyer un mailing avec des infos issues d'une feuille excel.
Les addresses des destinataires ainsi que d'autres infos sont des contenus de cellules.
Le pb c'est que mon code fonctione une seule fois ( un mail envoyé ) puis j'ai l'erreur : 91 Variable d'objet ou variable de bloc with non définie.
Ci-dessous mon code
--------------------------------------------------------------------------------
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
Sub Mailing()
Dim appOutlook As Outlook.Application
Set appOutlook = CreateObject("outlook.application")
Dim oMail As Outlook.MailItem
Set oMail = appOutlook.CreateItem(olMailItem)
Dim EMailSendTo As String, EMailCCTo As String, EMailBCCTo As String
Dim cpt As String
Dim nblignes As Long
cpt = 0
'Compte le nbre de lignes pour le nbre d'enregistrements
ActiveWorkbook.Sheets("Echeances_contrats").Select
Range("O2").Select
nblignes = Range("O2").CurrentRegion.Rows.Count - 1
Do While cpt < nblignes
EMailSendTo = ActiveCell.Offset(cpt, 0).Value
EMailCCTo = ActiveCell.Offset(cpt, 2).Value
MsgBox cpt & nblignes ' affichage test
MsgBox EMailSendTo ' affichage test
MsgBox EMailCCTo ' affichage test
With oMail
.To = EMailSendTo
.CC = EMailCCTo
.Subject = "AVIS DE FIN DE CONTRAT"
.BodyFormat = olFormatHTML
.Body = "A l'attention du Responsable Informatique" & Chr(13) & "Cher(e) client(e) ,"
.Send
Set oMail = Nothing
End With
cpt = cpt + 1
Loop
End Sub |
Solution pour envoi mail via Outlook
A force de ténacité j ai fini par trouver mes erreurs, si cela peut servir à d autres, voici le code qui fonctionne :
--------------------------------------------------------------------------------
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Sub Mailing()
Dim appOutlook As Outlook.Application
Dim oMail As Outlook.MailItem
Dim EMailSendTo As String, EMailCCTo As String, EMailBCCTo As String
Dim cpt As String
Dim nblignes As Long
cpt = 0
'Compte le nbre de lignes pour le nbre d'enregistrements
ActiveWorkbook.Sheets("Echeances_contrats").Select
Range("O2").Select
nblignes = Range("O2").CurrentRegion.Rows.Count - 1
Do While cpt < nblignes
EMailSendTo = ActiveCell.Offset(cpt, 0).Value
EMailCCTo = ActiveCell.Offset(cpt, 2).Value
Set appOutlook = CreateObject("outlook.application")
Set oMail = appOutlook.CreateItem(olMailItem)
With oMail
.To = EMailSendTo
.CC = EMailCCTo
.Subject = "AVIS DE FIN DE CONTRAT"
.BodyFormat = olFormatHTML
.Body = "A l'attention du Responsable Informatique" & Chr(13) & "Cher(e) client(e) ," & Chr(13) & "Suivant nos informations et sauf erreur, votre Contrat de maintenance numéro: " & "" & ActiveCell.Offset(cpt, -3).Value
.Send
End With
Set oMail = Nothing
Set appOutlook = Nothing
cpt = cpt + 1
Loop
End Sub |