Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Integrer la valeur d'une cellule en VBA

Sophie11

XLDnaute Occasionnel
Je prepare actuellement une macro qui enverra un mail à partir d'une messagerie Lotus, je souhaite integrer dans le corps du mail certaine valeur d'une cellule excel.

Dim oItem As Object
' Variable TEXTE

With oItem
.AppendText "XXX YYY"
.AddNewLine 1
End With


Je voudrais que ce XXX et YYY corresponde à mes cellule A1:B4. L'objectif est de pouvoir modifier facilement le contenue de ces cellules sans modifier le code VBA...

Si vous avez-vous une idée de code??
 

Odesta

XLDnaute Impliqué
Re : Integrer la valeur d'une cellule en VBA

Bonjour Sophie11

personnellement, j'utilise, via lotus 8.5 des envois automatiques, pour le sujet et le corps, j'utilise :

[...].Subject = sujet_message '(en string)

[...].Body = corps_message '(en string aussi )

Si vous n'y arrivez pas avec ceci, pouvez-vous joindre votre code svp ?

Cordialement

Olivier
 

Sophie11

XLDnaute Occasionnel
Re : Integrer la valeur d'une cellule en VBA

Votre code m'interesse ! Je sais toujours pas comment integrer des valeurs de cellules dans le coprs de mon message. (je ne veus pas de piece jointe)

Option Explicit

Sub SendNotesMsg()
'*******************************************************************************
Dim oSess As Object
Dim oDB As Object
Dim oDoc As Object
Dim oItem As Object
' Variable TEXTE
Dim ntsServer As String
Dim ntsMailFile As String
'
Dim EMailSendTo As String
Dim EMailCopyTo As String
Dim EMailSubject As String
Dim MailPJ As String
Dim LotusSRV As String
Dim WbkName As String

'*****************************************************************************
On Error GoTo err_SendNotesMsg
' Initialisation des variables
EMailSendTo = "Ploum"
EMailCopyTo = "Adresse Mail de copie"
EMailSubject = "Test Subj"

' Créer une nouvelles session Notes
Set oSess = CreateObject("Notes.NotesSession")

' Récupérer le nom du serveur
ntsServer = oSess.GetEnvironmentString("MailServer", True)

'Acquière le nom du fichier mailfile de l'utilisateur courant dans Notes.ini
ntsMailFile = oSess.GetEnvironmentString("MailFile", True)
Set oDB = oSess.GetDatabase(ntsServer, ntsMailFile)
Set oDoc = oDB.CreateDocument
' Définit les éléments à rajouter au message
Set oItem = oDoc.createRichTextItem("BODY")

oDoc.Form = "Memo"
' Préparer les destinataires
oDoc.Sendto = EMailSendTo
If Not IsMissing(EMailCopyTo) Then
oDoc.Copyto = EMailCopyTo
End If
' Préparer le sujet du message
If Not IsMissing(EMailSubject) Then
If EMailSubject <> "" Then oDoc.Subject = EMailSubject
End If
oDoc.FROM = oSess.CommonUserName
oDoc.PostedDate = Date
' Pour avoir un accusé de réception
oDoc.ReturnReceipt = "1"
'
' Préparer les texte
With oItem
.AppendText "CECI EST MON TEXTE (LIGNE1)"
.AddNewLine 1
.AppendText "CECI EST MON TEXTE (LIGNE2)"
.AddNewLine 2
End With


' Créer la pièce jointe
' Ca peut être le classeur
WbkName = ThisWorkbook.FullName
'Attachement du classeur au mail
Call oItem.embedObject(1454, "", "P:\Documents\Book1.xls", "")

' Ou Attachement d'un document
'Call oItem.embedObject(1454, "", "Chemin et nom complet du doc","")

' Message de salutation
oItem.AddNewLine 1
oItem.AppendText "Cordialement"

' Envoyer le message
oDoc.send False
'
MsgBox "Le message a été envoyé", vbInformation, "MESSAGE LOTUS ..."

exit_SendNotesMsg:
On Error Resume Next
Set oSess = Nothing
Set oDB = Nothing
Set oDoc = Nothing
Set oItem = Nothing
Exit Sub

err_SendNotesMsg:
If Err.Number = 7225 Then
MsgBox "Impossible d'attacher le fichier, vérifier le chemin!", vbCritical
Else
MsgBox "[" & Err.Number & "]: " & Err.Description
End If
MsgBox "Message non envoyé suite erreur!", vbCritical
Resume exit_SendNotesMsg
End Sub
 

Odesta

XLDnaute Impliqué
Re : Integrer la valeur d'une cellule en VBA

Essayer ceci :

Quelque part, déclarez et remplissez corps_message

corps_message = "CECI EST MON TEXTE (LIGNE1)" & CHAR(10) & "CECI EST MON TEXTE (LIGNE2)"
ou plutot
corps_message = range("A1").value & CHAR(10) & range("A2").value

Puis, dans votre code, à la place de With oItem [...] End With :

' Préparer les texte
oDoc.Body = corps_message



Est-ce que cela fonctionne ?
 

Sophie11

XLDnaute Occasionnel
Re : Integrer la valeur d'une cellule en VBA

Pourquoi ne pas faire directement :

oDoc.Body = range("A1").value & CHAR(10) & range("A2").value
mais en faisant ainsi j'obtient une complile Error, sub or function not defined avec CHAR en surbrillance... et si je supprime CHAR j'ai un " ; " en guise d'espace
 

Odesta

XLDnaute Impliqué
Re : Integrer la valeur d'une cellule en VBA

je n'ai pas réussi à insérer autre chose qu'une 'string' dans les mails auto que j'envoie. Je ne connait pas du tout les commandes utilisée pour Lotus.

Donc, je me suis toujours appliqué à n'envoyer que des données sur une ou plusieurs lignes, et des pièces jointes.

désolé !
 

Sophie11

XLDnaute Occasionnel
Re : Integrer la valeur d'une cellule en VBA

je peux faire plusieurs ligne
par contre si je mets : range("A1:B1").value
ca me separe mes cellule par un " ; " une idée pour faire juste un espace??
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…