Bonjour,
Pour mon stage, je dois réaliser une automatisation d'envoi de mail par lotusnote via excel, et ce en ne connaissant pas la VBA . Grace à notre meilleur ami : Google, j'ai trouvé des bout de code et surtout, tout un code pour envoyer des Lotus. Seulement probléme : en testant mon code, un message d'erreur apparait : erreur d'exécution ?7? : mémoire insuffisante.
Je me suis renseigné, et selon microsoft : « La meilleure solution consiste à supprimer FM20.DLL à partir du projet. » C'est bien joli, mais comment faire ? Ne sachant si je dois poster que le bout de code qui pose probléme ou l'emsemble du code, je préfére mettre l'emsemble. Le voici :
Sub commande()
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)
Dim client As Range 'zone d'adresse mail des clients
Dim DateEnvoie As Range 'date d'envoie de la commande
Dim annee As String 'feuille de travail
Dim campagne As String 'variable de la campagne
Dim forme As String 'type de campagne
Dim Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean
'définition de la feuille de travail et du mois de campagne
annee = InputBox("Sur quelle feuille voulez-vous travailler?(format Suivi AAAA)")
campagne = InputBox("de quel mois de campagne s'agit'il? (novembre, février, mai)")
'boucle pour insérer la date d'envoie du mail
Worksheets(annee).Select
If campagne = "novembre" Then
Set DateEnvoie = Range("F3:F35")
For Each cell In DateEnvoie
DateEnvoie = Date
Next cell
ElseIf campagne = "février" Then
Set DateEnvoie = Range("H3:H35")
For Each cell In DateEnvoie
DateEnvoie = Date
Next cell
ElseIf campagne = "mai" Then
Set DateEnvoie = Range("J3:J35")
For Each cell In DateEnvoie
DateEnvoie = Date
Next cell
Else: MsgBox ("relancer la macro et veuillez saisir un mois valable")
Exit Sub
End If
'Public Sub SendNotesMail(Subject as string, attachment as string,
'recipient as string, bodytext as string,saveit as Boolean)
'This public sub will send a mail and attachment if neccessary to the
'recipient including the body text.
'Requires that notes client is installed on the system.
'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
'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
Set client = Range("C3:C35")
'définitions des date dans le texte du mail
forme = InputBox("de quelle type de campagne s'agit'il? (SSS/TESTER ou SSS")
If campagne = "novembre" Then
campagne = "november"
ElseIf campagne = "février" Then
camapagne = "february"
ElseIf campagne = "mai" Then
campagne = "may"
End If
'construction du mail
MailDoc.Form = "Memo"
MailDoc.sendto = Recipient
For Each cell In client
Recipient = Cells.Value
Next cell
MailDoc.Subject = Subject
MailDoc.Body = BodyText
Set objNotesField = MailDoc.CREATERICHTEXTITEM("Body")
With objNotesField
.AppendText "Dear all,"
.AddNewLine 2
.AppendText "Would you find enclosed SIF's " & forme & " order Form to return to us no later than the 5th of" & campagne & ". For departure in" & campagne & " from our warhouse"
.AddNewLine 2
.AppendText "Please don't forget to put in the name of your company and the corresponding PO number"
.AddNewLine 2
.AppendText "Could you return us the completed order form before the fifth."
.AddNewLine 2
.AppendText "Kind Regards,"
.AddNewLine 1
End With
MailDoc.SAVEMESSAGEONSEND = SaveIt
'Set up the embedded object and attachment and attach it
If Attachment <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
'Send the document
If MsgBox("voulez vous modifier le mail?", vbYesNo + vbCritical, "Envoie sans modification") = vbYes Then
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.SEND 0, Recipient
MsgBox "les order form ont été envoyer au clients"
End If
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Sub
Merci d'avance,
A voir également:
Envoie de mail lotus via excel : erreur d'exécution 7 : mémoire insuffisante
Je n'ai pas envie de m'arracher les yeux sur un programme illisible.
Je me suis renseigné, et selon microsoft : « La meilleure solution consiste à supprimer FM20.DLL à partir du projet. »
En supposant que ce soit vrai. Bye-Bye l'UserForm et tous ses contrôles. Fmr20.dll, fournit les contrôles de base, genre bouton, listBox, Combobox etc...
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 déc. 2012 à 22:10
Bonjour,
je ne veux pas moi non plus perdre ma vue sur un code non mis en forme.
Ceci étant dit :
1) Comment peux-tu parler d'une "ligne de bug" et en étaler 4 ?
2) quant à l'erreur dénoncée : elle n'a absolument rien à voir avec l'envoi d'un mail et tout avec l'incompréhension de VBA !
Tu aurais exactement la même erreur avec ce simple bout de code (sans aucun mail à envoyer) :
Dim client As Range
Set client = Range("A1:B5")
For Each cell In client
Recipient = Cells.Value
Next
et pour cause !
3) et je regrette que tu aies ouvert cette discussion, relative à du VBA , dans la section
Forum > Visual Basic 6
et non dans celle qui correspond à VBA, à savoir : Langages dérivés > VBA Bonne chance
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 déc. 2012 à 22:16
Bon ...
Je ne veux pas être grognon, mais quand-même : regarde ce que tu as écrit et interroge-toi sur le contenu de cells !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Vous n’avez pas trouvé la réponse que vous recherchez ?
désolé de mettre tromper de section. je vais essayer de mettre le code en forme et je retourne plancher dessus. je en connais pas du tout la VBA et découvre petit à petit.