Envoi d'une plage de cellule via Lotus

gypsos

XLDnaute Junior
Bonjour,
Je cherche depuis quelque jours comment envoyer une plage de cellule (6 cellules contigües horizontales) d'excel 2003 dans un mail (idéalement dans le corps, mais l'export en pièce jointe me conviendrai aussi) via lotus R5. Je suis débutant en VB, j'ai essayé tous les bouts de code que j'ai pu trouver mais je n'y arrive pas. Quelqu'un a t il se genre d'application? Merci de votre aide!
 

tototiti2008

XLDnaute Barbatruc
Re : Envoi d'une plage de cellule via Lotus

Bonjour gypsos,

J'avais fait un enregistrement des cellules sélectionnées en fichier RTF pui envoyé le fichier RTF en pièce jointe Lotus, un jour...
ça t'intéresse ? (pour savoir si je dois me mettre à fouiller)
 

tototiti2008

XLDnaute Barbatruc
Re : Envoi d'une plage de cellule via Lotus

Re,

Enregistrement en RTF :

Code:
Sub EnregistreTabRTF(Nomfich As String)
Dim MonWord As Object
If Selection Is Nothing Or TypeName(Selection) <> "Range" Then Exit Sub
Selection.Copy
Set MonWord = CreateObject("Word.application")
MonWord.DOCUMENTS.Add
MonWord.Selection.Paste
MonWord.ActiveDocument.SaveAs Filename:="c:\temp\" & Nomfich & ".rtf", FileFormat:=wdFormatRTF
MonWord.ActiveDocument.Close
MonWord.Quit
Set MonWord = Nothing
Application.CutCopyMode = False
End Sub

Envoi mail :

Code:
Const maxi = 1
Dim maildb As Object, username As String, maildbname As String, maildoc2 As Object, maildoc As Object, attachME As Object
Dim session As Object, attachment As String, Recipient(1 To maxi) As String, RecipientCC(1 To maxi) As String, RecipientBCC(1 To maxi) As String
Dim embedobj As Object, listeA As String, listeCC As String, listeBCC As String, i As Integer
EnregistreTabRTF "essai"
Set session = CreateObject("notes.notessession")
username = session.username
'Set maildb = session.getdatabase("", maildbname)
Set maildb = session.getdatabase("", "")
If maildb.IsOpen <> True Then
maildb.openmail
End If
Set maildoc = maildb.createdocument
maildoc.form = "Memo"
Recipient(1) = "toto@msn.com"
maildoc.sendto = Recipient 'tableau contenant les adresses des destinataires
'maildoc.copyto = RecipientCC 'tableau contenant les adresses des destinataires en copie
'maildoc.blindcopyto = RecipientBCC 'tableau contenant les adresses des destinataires en copie masquée
maildoc.Subject = ""
maildoc.body = Chr(10)
    'maildoc.returnreceipt = "1" 'Demande une confirmation de lecture
    'maildoc.deliveryreport = "c" 'Demande un accusé de réception
maildoc.SAVEMESSAGEONSEND = True 'Affiche une copie du message dans les messages envoyés
'Joint un fichier au mail
Set attachME = maildoc.createrichtextitem("Attachment")
Set embedobj = attachME.EMBEDOBJECT(1454, "", "c:\temp\essai.rtf", "Attachment")
maildoc.createrichtextitem ("Attachment")
'Envoie le message
maildoc.send 0, Recipient
Set maildb = Nothing
Set maildoc = Nothing
Set maildoc2 = Nothing
Set attachME = Nothing
Set session = Nothing
Set embedobj = Nothing
Exit Sub
erreur:
MsgBox "Erreur ! Le message n'a pas été envoyé"
Set maildb = Nothing
Set maildoc = Nothing
Set maildoc2 = Nothing
Set attachME = Nothing
Set session = Nothing
Set embedobj = Nothing
 

gypsos

XLDnaute Junior
Re : Envoi d'une plage de cellule via Lotus

Impeccable, çà marche. Merci de ton aide. Un seul regret le fichier attaché est bien lourd pour ce qu'il contient dans mon cas ( à tout casser 40 caractères...).

Existe t il une possibilité pour incorporer dans le corps du mail les cellules sélectionnées ? Merci de vos suggestions
 

tototiti2008

XLDnaute Barbatruc
Re : Envoi d'une plage de cellule via Lotus

Re,

je ne connais pas le moyen, et les exemples de pilotage de Lotus en VBA sont pour le moins limités
au passage si tu fais des recherche, j'ai voulu un jour créer un hotspot (lien hypertexte) dans un Memo Lotus par VBA et je n'ai jamais rien trouvé
Donc si tu tombais dessus par hasard durant tes recherches...
 

gypsos

XLDnaute Junior
Re : Envoi d'une plage de cellule via Lotus

Pour le moment je ne trouve rien.

J'ai par contre une autre question concernant votre code: que faudrait il modifier pour exporter les cellules sélectionnées dans un fichier txt (les données séparées par exemple par des ";") au lieu d'une exportation en rtf?

Merci de votre aide
 

tototiti2008

XLDnaute Barbatruc
Re : Envoi d'une plage de cellule via Lotus

Bonjour gypsos,

c'est une autre approche

Mon code fait un copier/coller des données dans Word pour conserver la mise en forme
Le format RTF permet de conserver cette mise en forme

L'export en txt séparateur ";" ne solliciterait pas Word, un truc comme ça je pense :

Code:
Sub EnregistreTabTXT(Nomfich As String)
Dim i As Long, j As Long, Ligne As String, fso, fic
    If Selection Is Nothing Or TypeName(Selection) <> "Range" Then Exit Sub
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fic = fso.CreateTextFile("c:\temp\" & Nomfich & ".txt", True)
    For i = 1 To Selection.Rows.Count
        Ligne = ""
        For j = 1 To Selection.Columns.Count
            Ligne = Ligne & Selection.Cells(i, j) & ";"
        Next j
        If Len(Ligne) > 0 Then
            fic.writeline Left(Ligne, Len(Ligne) - 1)
        Else
            fic.writeline
        End If
    Next i
    fic.Close
    Set fic = Nothing
    Set fso = Nothing
End Sub
 

Discussions similaires