Si le fichier n'existe pas continuer sans que la VBA bug
Bonjour à tous!
Je vous explique en intro mon projet: j'ai crée (en bricolant avec mes connaissances, en recherchant des programmes existant et de temps en temps avec votre aide) un programme capable de séléctionner des lignes ayant des anomalies dans une longues listes, de les trier par identifiant et d'enregistrer un fichier par identifiant, portant le nom de l'identifiant. (si vous le voulez anonymisé je peut vous le fournir). Maintenant, je cherche à envoyer ces fichiers à différents acteurs (Qui sont toujours associé aux mêmes ID). J'ai trouvé ce programme. Là où j'ai besoin de votre aide c'est pour la partie fichier joint. En effet, il peut arriver que le fichier que je veux joindre n'existe pas (aucune anomalie avec cette ID donc aucun fichier crée). dans ce cas j'aimerais que le programme n'envoi pas de mail s'il n'y avait pas d'autres fichiers à joindre ou joind les autres fichiers s'ils sont existants et ne bug pas.
Voici la partie du programme "piéce jointe"
'Piéces jointe
Attachment1 = "C:\Data\*****\*****\****.xls"
Attachment2 = ""
Attachment3 = ""
If Attachment1 <> "" And Attachment2 <> "" And Attachment3 <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment1")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment1, "Attachment1") 'Si erreur ici, surement du au fait que le fichier de attachement1 n'existe pas
MailDoc.CREATERICHTEXTITEM (Attachment1)
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment2")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment2, "Attachment2")
MailDoc.CREATERICHTEXTITEM (Attachment2)
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment3")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment3, "Attachment3")
MailDoc.CREATERICHTEXTITEM (Attachment3)
End If
Et au cas où vous en auriez besoin voici tout le programme concernant l'envoi par fichier:
Sub ********()
'Set up the objects required for Automation into lotus notes
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
'Start a session to notes
Set Session = CreateObject("Notes.NotesSession")
'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Corps du courrier
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.Sendto = "***.****@****.com"
MailDoc.CopyTo = ""
MailDoc.Subject = "Essai encore et toujours"
' Construction du corps du message
Set objNotesField = MailDoc.CREATERICHTEXTITEM("Body")
With objNotesField
.AppendText "Bonjour,"
.AddNewLine 2
.AppendText "Ceci est un essai, veuillez m'excuser pour le dérangement." 'rajout des lignes au besoin
.AddNewLine 2
.AppendText "Cordialement,"
.AddNewLine 1
.AppendText "***** ****"
.AddNewLine 3
End With
MailDoc.SaveMessageOnSend = SaveIt
'Piéces jointe
Attachment1 = "C:\*****.xls"
Attachment2 = ""
Attachment3 = ""
If Attachment1 <> "" And Attachment2 <> "" And Attachment3 <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment1")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment1, "Attachment1") 'Si erreur ici, surement du au fait que le fichier de attachement1 n'existe pas
MailDoc.CREATERICHTEXTITEM (Attachment1)
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment2")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment2, "Attachment2")
MailDoc.CREATERICHTEXTITEM (Attachment2)
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment3")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment3, "Attachment3")
MailDoc.CREATERICHTEXTITEM (Attachment3)
End If
'Envoi du mail
MailDoc.PostedDate = Now() 'Mail dans éléments envoyé
MailDoc.Send 0, Recipient
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Sub
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
à la place de ce If , que je ne comprends pas,
If Attachment1 <> "" And .......etc...
on peut utiliser On Error Goto
'*** à supprimer ***If Attachment1 <> "" And Attachment2 <> "" And Attachment3 <> "" Then
On Error GoTo Suite1
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment1")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment1, "Attachment1") 'Si erreur ici, surement du au fait que le fichier de attachement1 n'existe pas
MailDoc.CREATERICHTEXTITEM (Attachment1)
Suite1:
On Error GoTo Suite2
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment2")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment2, "Attachment2")
MailDoc.CREATERICHTEXTITEM (Attachment2)
Suite2:
On Error GoTo Suite3
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment3")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment3, "Attachment3")
MailDoc.CREATERICHTEXTITEM (Attachment3)
'*** à supprimer ***End If
'Envoi du mail
MailDoc.PostedDate = Now() 'Mail dans éléments envoyé
MailDoc.Send 0, Recipient
Suite3:
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Subà tester
Amicalement
Claude
Il me marque alors "erreur 7224" mais je vais tenter en laissant les if, ce qui le perturbe c'est que je n'envoi à aucun chemin, je tente et reviens.
Je ne bugs plus! En rajoutant ton code avec les if tout va bien!
Merci pour ton aide!
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
