Sub SendMail_Outlook()
ActiveSheet.Protect Password:="DAM", DrawingObjects:=True, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveWorkbook.Save
Range("a5").Select
ActiveWorkbook.Save
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
'Il est possible de vérifier avant l'exécution de la macro si la référence est activée ou non, et de l'activer si ce n'est pas le cas
ActiveWorkbook.Activate
Dim Ol As New Outlook.Application
Dim Olmail As MailItem
Dim CurrFile As String
Dim adr, body, bodyvierge As String
Dim nomfi, nomfii As String
Dim nomfb, nomfbb As String
nomfi = Format(Cells(2, 12), "ddmmyyyy") & "-FI-" & Cells(5, 1)
nomfb = Format(Cells(2, 12), "ddmmyyyy") & "-FB-" & Cells(5, 1)
nomfbb = ThisWorkbook.Path & "\FICHES FB\" & nomfb & ".xls"
nomfii = ThisWorkbook.Path & "\FICHES FI\" & nomfi & ".xls"
'nomfii = "\\svr-ccibco4\dossier-bv\PROJET BASE\FICHES FI\" & nomfi & ".xls"
If Range("C5") = "XXX" Then adr = "XX@p.com"
If Range("C5") = "YYY" Then adr = "JJ@a.com"
If Range("C5") = "ZZZ" Then adr = "ww@hh.com"
If Range("C5") = "WWW" Then adr = "zzzzzz@h.com"
body = "Bonjour,"
bodyvierge = "Bonjour vierge »
Set Ol = New Outlook.Application
Set Olmail = Ol.CreateItem(olMailItem)
With Olmail
.To = adr & ";" & Range("c2")
.BCC = "compte rendu agreage"
.Subject = "Rapport(s) du " & Range("l2") & " concernant le navire " & Range("a5")
If Range("c2") <> "" Then .body = body
If Range("c2") = "" Then .body = bodyvierge
On Error Resume Next
.Attachments.Add nomfbb
On Error Resume Next
.Attachments.Add nomfii
.Attachments.Add ActiveWorkbook.FullName
.Display
'.Send
'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
ActiveWindow.SelectedSheets.PrintOut copies:=2, Collate:=True
On Error GoTo SUITE1
Workbooks.Open Filename:= _
nomfii
ActiveWindow.SelectedSheets.PrintOut copies:=2, Collate:=True
ActiveWorkbook.Close True
ActiveWorkbook.Close True
SUITE1:
If Err.Number = 1004 Then
ActiveWorkbook.Close True
Else
Workbooks.Open Filename:= _
nomfbb
ActiveWindow.SelectedSheets.PrintOut copies:=3, Collate:=True
ActiveWorkbook.Close True
Exit Sub
End If
ActiveWorkbook.Close True
ActiveWorkbook.Close True
End Sub
Bonjour le forum,
Je souhaite envoyer un mail avec 1 ou 2 ou 3 pièce(s) jointe(s) juste que la pas de soucis!!!
ensuite pour l'impression de la ou des pièces jointes:
- pour la jointe ActiveWorkbook.FullName pas de soucis!!!
- pour les fichiers nomfii et nomfbb ma macro me génère une erreur 1004 si la pièce est inexistante!
en resumé
pièces jointes ActiveWorkbook.FullName + nomfii + nomfbb => impression OK
pièces jointes ActiveWorkbook.FullName => erreur 1004
pièces jointes ActiveWorkbook.FullName + nomfii => erreur 1004
pièces jointes ActiveWorkbook.FullName + nomfbb => erreur 1004
Donc je cherche une solution pour la gestion des erreurs du style pas de nomfii on cherche nomfbb et si pas de nomfbb non plus on imprime ActiveWorkbook.FullName et on le ferme.
j'ai pensai "goto suite:" mais toujours des erreur 1004.
Merci de votre aide
dam
ActiveSheet.Protect Password:="DAM", DrawingObjects:=True, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveWorkbook.Save
Range("a5").Select
ActiveWorkbook.Save
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
'Il est possible de vérifier avant l'exécution de la macro si la référence est activée ou non, et de l'activer si ce n'est pas le cas
ActiveWorkbook.Activate
Dim Ol As New Outlook.Application
Dim Olmail As MailItem
Dim CurrFile As String
Dim adr, body, bodyvierge As String
Dim nomfi, nomfii As String
Dim nomfb, nomfbb As String
nomfi = Format(Cells(2, 12), "ddmmyyyy") & "-FI-" & Cells(5, 1)
nomfb = Format(Cells(2, 12), "ddmmyyyy") & "-FB-" & Cells(5, 1)
nomfbb = ThisWorkbook.Path & "\FICHES FB\" & nomfb & ".xls"
nomfii = ThisWorkbook.Path & "\FICHES FI\" & nomfi & ".xls"
'nomfii = "\\svr-ccibco4\dossier-bv\PROJET BASE\FICHES FI\" & nomfi & ".xls"
If Range("C5") = "XXX" Then adr = "XX@p.com"
If Range("C5") = "YYY" Then adr = "JJ@a.com"
If Range("C5") = "ZZZ" Then adr = "ww@hh.com"
If Range("C5") = "WWW" Then adr = "zzzzzz@h.com"
body = "Bonjour,"
bodyvierge = "Bonjour vierge »
Set Ol = New Outlook.Application
Set Olmail = Ol.CreateItem(olMailItem)
With Olmail
.To = adr & ";" & Range("c2")
.BCC = "compte rendu agreage"
.Subject = "Rapport(s) du " & Range("l2") & " concernant le navire " & Range("a5")
If Range("c2") <> "" Then .body = body
If Range("c2") = "" Then .body = bodyvierge
On Error Resume Next
.Attachments.Add nomfbb
On Error Resume Next
.Attachments.Add nomfii
.Attachments.Add ActiveWorkbook.FullName
.Display
'.Send
'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
End With
ActiveWindow.SelectedSheets.PrintOut copies:=2, Collate:=True
On Error GoTo SUITE1
Workbooks.Open Filename:= _
nomfii
ActiveWindow.SelectedSheets.PrintOut copies:=2, Collate:=True
ActiveWorkbook.Close True
ActiveWorkbook.Close True
SUITE1:
If Err.Number = 1004 Then
ActiveWorkbook.Close True
Else
Workbooks.Open Filename:= _
nomfbb
ActiveWindow.SelectedSheets.PrintOut copies:=3, Collate:=True
ActiveWorkbook.Close True
Exit Sub
End If
ActiveWorkbook.Close True
ActiveWorkbook.Close True
End Sub
Bonjour le forum,
Je souhaite envoyer un mail avec 1 ou 2 ou 3 pièce(s) jointe(s) juste que la pas de soucis!!!
ensuite pour l'impression de la ou des pièces jointes:
- pour la jointe ActiveWorkbook.FullName pas de soucis!!!
- pour les fichiers nomfii et nomfbb ma macro me génère une erreur 1004 si la pièce est inexistante!
en resumé
pièces jointes ActiveWorkbook.FullName + nomfii + nomfbb => impression OK
pièces jointes ActiveWorkbook.FullName => erreur 1004
pièces jointes ActiveWorkbook.FullName + nomfii => erreur 1004
pièces jointes ActiveWorkbook.FullName + nomfbb => erreur 1004
Donc je cherche une solution pour la gestion des erreurs du style pas de nomfii on cherche nomfbb et si pas de nomfbb non plus on imprime ActiveWorkbook.FullName et on le ferme.
j'ai pensai "goto suite:" mais toujours des erreur 1004.
Merci de votre aide
dam