Macro avec Destinataires aléatoires pour mail Lotus
cs_TON1
Messages postés4Date d'inscriptionmardi 21 juillet 2009StatutMembreDernière intervention31 juillet 2009
-
30 juil. 2009 à 21:40
cs_Joh76
Messages postés47Date d'inscriptiondimanche 16 mars 2008StatutMembreDernière intervention14 octobre 2009
-
31 juil. 2009 à 13:07
Bonjour,
Je voudrai expédier un mail avec pièce jointe avec Lotus à partir de la pièce jointe ouverte(VBA avec xls). Jusque là, pas de soucis. Par contre, je voudrai également que pour le mail les destinataires soient choisis dans certaines cellules puisqu'ils changent (toujours au même emplacement dans le document) à la place d'un destinataire programmé, Quelqu'un a-t-il une idée? Merci d'avance à tous.
A voir également:
Macro avec Destinataires aléatoires pour mail Lotus
cs_TON1
Messages postés4Date d'inscriptionmardi 21 juillet 2009StatutMembreDernière intervention31 juillet 2009 31 juil. 2009 à 10:26
Bonjour,
Merci pour ta solution Joh76. Je pense sue je l'ai mal intégrée à mon code ou que je ne maîtrise pas la syntaxe avec " Call doc.APPENDITEMVALUE": Voici ce que cela donne:
Sub Bouton330_Clic()
'Demande de ligne pour envoi de mail et surtout pour destinataire
Dim MaLigne As Integer
MaLigne = InputBox("Quelle Ligne ?", "Sélection ligne", 0)
If MaLigne = 0 Then Exit Sub
Dim Session As Object
Dim db As Object
Dim doc As Object
Dim rtitem As Object
Dim object As Object
Dim fs As Object
Dim Principaux(2) As String
Principaux(0) = Ordre_de_transport.Range("M10").Value
Principaux(1) = Ordre_de_transport.Range("M11").Value
Principaux(2) = Ordre_de_transport.Range("M12").Value
Principaux(3) = Ordre_de_transport.Range("D8").Value
Dim dir As Object
Dim inti As Integer
Dim passwd As String
On Error GoTo TraiteErreur
'Demande le password Lotus(Dans le cas ou la session necessite un passwd)
passwd = InputBox("Entrer votre password Lotus:", "Password")
' Création de la session Notes
Set Session = CreateObject("Lotus.NOTESSESSION")
'Ouverture d'une session NOTES
Call Session.Initialize(passwd) 'si pas de passwd pas de parametre pour initialize
Set dir = Session.GETDBDIRECTORY("")
Set db = dir.OpenMailDatabase
' Création d'un document
Set doc = db.CREATEDOCUMENT
'affectation du type mail
Call doc.APPENDITEMVALUE("Form", "Memo")
Call doc.APPENDITEMVALUE("Sendto", "Principaux") ' ATT plusieurs dest
Call doc.APPENDITEMVALUE("subject", "Confirmation d'envoi")
doc.SAVEMESSAGEONSEND = saveit 'sauvegarde du mail à l envoi
'Si plusieurs destinataires alors mettre:
'Dim recip(25) as variant
'recip(0)="email" etc
Set rtitem = doc.createRichTextItem("Body")
Dim nom As String
nom = ThisWorkbook.FullName
'Attachement du classeur au mail
Set object = rtitem.embedObject
1454, "", "G:\Specifiques\Taxi\Taxi.xls", "")
Call doc.Send(True)
Set object = Nothing
Set rtitem = Nothing
Set doc = Nothing
Set db = Nothing
Set Session = Nothing
Exit Sub
TraiteErreur:
MsgBox "Erreur Critique durant l envoi .", vbCritical, "Error"
Set object = Nothing
Set rtitem = Nothing
Set doc = Nothing
Set db = Nothing
Set Session = Nothing
Set fs = Nothing
End Sub
cs_Joh76
Messages postés47Date d'inscriptiondimanche 16 mars 2008StatutMembreDernière intervention14 octobre 20093 31 juil. 2009 à 11:39
Bonjour,
Regarde ça, en ajoutant la partie mot de passe ça devrait fonctionner.
Sub Test()
Dim A As String 'Destinataire du mail
Dim CC As String 'Destinataire en copie
Dim Objet As String ' Objet du mail
Dim Corps As String 'Corps du mail
Dim Fichier As String ' Fichier a envoyer
A = AdresseEmail(Worksheets("Ordre_de_transport").Range("M10").Value, _
Worksheets("Ordre_de_transport").Range("M11").Value _
, Worksheets("Ordre_de_transport").Range("M12").Value, Worksheets("Ordre_de_transport").Range("D8").Value)
'CC=AdresseEmail(...)
Objet = "Test sous lotus"
Corps = "Partie pricipale du email"
Fichier = ThisWorkbook.Path & "" & ThisWorkbook.Name 'Envoie de ce classeur
Private Function AdresseEmail(ParamArray Adresses() As Variant) As Variant
Dim Adresse As Variant
Dim Destinataires() As String
Dim i As Integer 'itération
If Not IsNull(Adresses) Then
i = 0
For Each Adresse In Adresses
ReDim Preserve Destinataires(i)
Destinataires(i) = Adresse
i = i + 1
Next Adresse
AdresseEmail = Destinataires
End If
End Function
Public Function EnvoiEmail(Destinataires As String, Copies As String, VarObjet As String, Corps As String,_
FichierAttache As String)
'a utiliser avec Lotus Notes
'Pb car il génère des mails de 240 000 octets
Dim Session As Object
Dim doc As Object
Dim rtitem As Object
Dim object As Object
Dim Vari As String
Dim j As Integer
Dim dbl As Object
'============================================================
'Fonctionne avec Lotus Notes
On Error Resume Next
' Ouverture d'une session NOTES
Set Session = CreateObject("Notes.NotesSession") 'pour Lotus
If Err = 0 Then
Set dbl = Session.GETDATABASE("", "") 'pour Lotus
Call dbl.OPENMAIL 'pour Lotus
' Création du mail
Set doc = dbl.CREATEDOCUMENT() 'pour Lotus
doc.form = "Memo" 'pour Lotus
' Corps du mail
Set rtitem = doc.createRichTextItem("Body") 'pour Lotus
Call rtitem.appendText(Corps) 'pour Lotus
'cette commande sert à envoyer un fichier attaché
Set object = rtitem.embedObject(1454, "", FichierAttache, "") 'pour Lotus
' Envoi du mail
'Call doc.Save(True, True) 'pour Lotus
Call doc.SEND(True) 'pour Lotus
'initialisation des Objets Lotus
Set Session = Nothing
Set dbl = Nothing
Set doc = Nothing
Set rtitem = Nothing
Set object = Nothing
Else
MsgBox "L'e-mail n'a pu être envoyé, vérifiez votre connexion Lotus...", vbCritical
End If
End Function
cs_Joh76
Messages postés47Date d'inscriptiondimanche 16 mars 2008StatutMembreDernière intervention14 octobre 20093 31 juil. 2009 à 11:46
Petite erreur, il faut remplacer:
EnvoiEmail Destinataires:=A, VarObjet:=Objet, Corps:=Corps, FichierAttache:=Fichier
par
EnvoiEmail Destinataires:=A, Copies:="", VarObjet:=Objet, Corps:=Corps, FichierAttache:=Fichier
dans sub Test ()
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_TON1
Messages postés4Date d'inscriptionmardi 21 juillet 2009StatutMembreDernière intervention31 juillet 2009 31 juil. 2009 à 12:45
Le programme bloque au niveau d'Envoimail . Il me met "une erreur de compilation avec Sub ou Function attendu".
De même un petit peu après, la phrase suivante est en rouge donc il doit y avoir un soucis:
"Public Function EnvoiEmail(Destinataires As String, Copies As String, VarObjet As String, Corps As String,_
FichierAttache As String)"
cs_Joh76
Messages postés47Date d'inscriptiondimanche 16 mars 2008StatutMembreDernière intervention14 octobre 20093 31 juil. 2009 à 13:07
Autant pour moi, essais ceci...
Sub Test()
Dim A() As String 'Destinataire du mail
Dim CC() As String 'Destinataire en copie
Dim Objet As String ' Objet du mail
Dim Corps As String 'Corps du mail
Dim Fichier As String ' Fichier a envoyer
A = AdresseEmail(Worksheets("Ordre_de_transport").Range("M10").Value, _
Worksheets("Ordre_de_transport").Range("M11").Value _
, Worksheets("Ordre_de_transport").Range("M12").Value, Worksheets("Ordre_de_transport").Range("D8").Value)
'CC=AdresseEmail(...)
Objet = "Test sous lotus"
Corps = "Partie pricipale du email"
Fichier = ThisWorkbook.Path & "" & ThisWorkbook.Name 'Envoie de ce classeur
Private Function AdresseEmail(ParamArray Adresses() As Variant) As Variant
Dim Adresse As Variant
Dim Destinataires() As String
Dim i As Integer 'itération
If Not IsNull(Adresses) Then
i = 0
For Each Adresse In Adresses
ReDim Preserve Destinataires(i)
Destinataires(i) = Adresse
i = i + 1
Next Adresse
AdresseEmail = Destinataires
End If
End Function
Public Function EnvoiEmail(Destinataires() As String, Copies() As String, VarObjet As String, Corps As String, FichierAttache As String)
'a utiliser avec Lotus Notes
'Pb car il génère des mails de 240 000 octets
Dim Session As Object
Dim doc As Object
Dim rtitem As Object
Dim object As Object
Dim Vari As String
Dim j As Integer
Dim dbl As Object
'============================================================
'Fonctionne avec Lotus Notes
On Error Resume Next
' Ouverture d'une session NOTES
Set Session = CreateObject("Notes.NotesSession") 'pour Lotus
If Err = 0 Then
Set dbl = Session.GETDATABASE("", "") 'pour Lotus
Call dbl.OPENMAIL 'pour Lotus
' Création du mail
Set doc = dbl.CREATEDOCUMENT() 'pour Lotus
doc.form = "Memo" 'pour Lotus
' Corps du mail
Set rtitem = doc.createRichTextItem("Body") 'pour Lotus
Call rtitem.appendText(Corps) 'pour Lotus
'cette commande sert à envoyer un fichier attaché
Set object = rtitem.embedObject(1454, "", FichierAttache, "") 'pour Lotus
' Envoi du mail
'Call doc.Save(True, True) 'pour Lotus
Call doc.SEND(True) 'pour Lotus
'initialisation des Objets Lotus
Set Session = Nothing
Set dbl = Nothing
Set doc = Nothing
Set rtitem = Nothing
Set object = Nothing
Else
MsgBox "L'e-mail n'a pu être envoyé, vérifiez votre connexion Lotus...", vbCritical
End If
End Function