Envoie de mail lotus via excel : erreur d'exécution 7 : mémoire insuffisante

tragg - 5 déc. 2012 à 10:25
 tragg - 6 déc. 2012 à 12:53
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,

5 réponses

Désolé, je viens de voir que j'ai oublier de noter la ligne du bug :
 
   'construction du mail
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient
    For Each cell In client
    Recipient = Cells.Value
    
0
Utilisateur anonyme
5 déc. 2012 à 18:55
Bonjour,

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...

C'est bien joli, mais comment faire ?


Outils - Références
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjours,

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.

Merci de vos réponse.
0
Rejoignez-nous