Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

excel sendmail via lotus

17 réponses
Avatar
sbtlg
Bonjour,

Bon ben voila g un gros probleme et je suis un grand d=E9butant, j'ai
cherch=E9 sur le net et ici mais je ne trouve pas de solution a mon
probleme.

J'ai trouv=E9 une macro pour envoyer des mails a partir d'excel mais via
Lotus note, la voici et mon probleme est que je n'arrive pas a
selectionner une plage de cellule et de copier coller cette selection
dans le body du mail en gardant la couleur des textes.


Donc voici la macro :

Sub SendNotesMail()
'Set up the objects required for Automation into lotus notes
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)
'ajout pour plage de cellule
Dim Plage As Range, T As Variant, A As Long
Dim Shap As Object, B As Integer
'Start a session to notes
Set Session =3D 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 =3D Session.UserName
MailDbName =3D Left$(UserName, 1) & Right$(UserName, (Len(UserName) -
InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb =3D Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen =3D True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Set up the new mail document
Set MailDoc =3D Maildb.CREATEDOCUMENT
MailDoc.Form =3D "Memo"
MailDoc.Sendto =3D "user@serveur.com" 'Worksheets(3).Cells(2, 2).Value
MailDoc.CopyTo =3D ""
MailDoc.Subject =3D Worksheets(1).Cells(1, 1).Value
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body =3D Worksheets(1).Cells(15, 4).Value
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge
MailDoc.Body =3D Worksheets("Tableau de bord").Range("D15:J65")
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MailDoc.SaveMessageOnSend =3D SaveIt
'Set up the embedded object and attachment and attach it
Attachment1 =3D Worksheets(3).Cells(21, 50).Value
Attachment2 =3D Worksheets(3).Cells(22, 50).Value
Attachment3 =3D Worksheets(3).Cells(23, 50).Value
If Attachment1 <> "" And Attachment2 <> "" And Attachment3 <> "" Then
Set AttachME =3D MailDoc.CREATERICHTEXTITEM("Attachment1")
Set EmbedObj =3D AttachME.EMBEDOBJECT(1454, "", Attachment1,
"Attachment1")
MailDoc.CREATERICHTEXTITEM (Attachment1)
Set AttachME =3D MailDoc.CREATERICHTEXTITEM("Attachment2")
Set EmbedObj =3D AttachME.EMBEDOBJECT(1454, "", Attachment2,
"Attachment2")
MailDoc.CREATERICHTEXTITEM (Attachment2)
Set AttachME =3D MailDoc.CREATERICHTEXTITEM("Attachment3")
Set EmbedObj =3D AttachME.EMBEDOBJECT(1454, "", Attachment3,
"Attachment3")
MailDoc.CREATERICHTEXTITEM (Attachment3)
End If

'Send the document
MailDoc.PostedDate =3D Now() 'Gets the mail to appear in the sent items
folder
MailDoc.Send 0, Recipient

'Clean Up
Set Maildb =3D Nothing
Set MailDoc =3D Nothing
Set AttachME =3D Nothing
Set Session =3D Nothing
Set EmbedObj =3D Nothing

End Sub

Merci de votre aide.

10 réponses

1 2
Avatar
Daniel
' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord") n'est
pas vierge.
Cordialement.
Daniel
Avatar
sbtlg
Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?


On 4 juil, 11:55, "Daniel" wrote:
' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord") n' est
pas vierge.
Cordialement.
Daniel


Avatar
Daniel
Dommage. A part ça, je ne travaille plus avec Lotus depuis un bail...Essaie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?


On 4 juil, 11:55, "Daniel" wrote:
' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord") n'est
pas vierge.
Cordialement.
Daniel


Avatar
sbtlg
désolé marche pas et j'ai une erreur d'execution 7078 coud'nt create
field %1. :-(

une autre idee :-)

merci encore



On 4 juil, 12:36, "Daniel" wrote:
Dommage. A part ça, je ne travaille plus avec Lotus depuis un bail...Es saie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?

On 4 juil, 11:55, "Daniel" wrote:



' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord") n'est
pas vierge.
Cordialement.
Daniel- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Daniel
Désolé, en plus, c'était idiot.
Daniel
a écrit dans le message de news:

désolé marche pas et j'ai une erreur d'execution 7078 coud'nt create
field %1. :-(

une autre idee :-)

merci encore



On 4 juil, 12:36, "Daniel" wrote:
Dommage. A part ça, je ne travaille plus avec Lotus depuis un
bail...Essaie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?

On 4 juil, 11:55, "Daniel" wrote:



' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord")
n'est
pas vierge.
Cordialement.
Daniel- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Daniel
Après recherche sur le net, MailDoc.Body doit recevoir une valeur string
(texte). Donc tu peux mettre :
MailDoc.Body = "ceci est une chaîne string"
Tu peux aussi mettre
MailDoc.Body = Worksheets("Tableau de bord").Range("D15").value (dans ce cas
la valeur récupérée est considérée comme une chaîne texte)
Par contre, tu ne peux pas lui passer une plage de cellules qui est de type
Range ou la valeur de cette plage qui est de type Array.
tu peux essayer de regrouper les cellules de la plage avec le code :

Dim c As Range, Texte As String
For Each c In Sheets(1).Range("D15:J65")
If c.Column = 10 Then
Texte = Texte & Chr(10) & c & " "
Else
Texte = Texte & c & " "
End If
[A1] = Texte
Next c
et ensuite :
MailDoc.Body = Texte
Daniel
a écrit dans le message de news:

désolé marche pas et j'ai une erreur d'execution 7078 coud'nt create
field %1. :-(

une autre idee :-)

merci encore



On 4 juil, 12:36, "Daniel" wrote:
Dommage. A part ça, je ne travaille plus avec Lotus depuis un
bail...Essaie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?

On 4 juil, 11:55, "Daniel" wrote:



' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord")
n'est
pas vierge.
Cordialement.
Daniel- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Ellimac
Bonjour,

Pas sûr que la zone Body de Lotus accepte une plage de cellules. J'ai un
exemple dans lequel c'est du texte qui est récupéré

Camille

"" wrote:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?


On 4 juil, 11:55, "Daniel" wrote:
' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord") n'est
pas vierge.
Cordialement.
Daniel







Avatar
Daniel
Plutôt :

Dim c As Range, Texte As String
For Each c In Sheets(1).Range("D15:J65")
If c.Column = 10 Then
Texte = Texte & c & Chr(10)
Else
Texte = Texte & c & " "
End If
[A1] = Texte
Next c

Daniel
"Daniel" a écrit dans le message de news:

Désolé, en plus, c'était idiot.
Daniel
a écrit dans le message de news:

désolé marche pas et j'ai une erreur d'execution 7078 coud'nt create
field %1. :-(

une autre idee :-)

merci encore



On 4 juil, 12:36, "Daniel" wrote:
Dommage. A part ça, je ne travaille plus avec Lotus depuis un
bail...Essaie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tableau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vierge .

Merci de tin aide aurais tu une autre id"e ?

On 4 juil, 11:55, "Daniel" wrote:



' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord")
n'est
pas vierge.
Cordialement.
Daniel- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -








Avatar
sbtlg
Merci, la ça marche pour l'envoi du mail mais le probleme c que mon
tableau se vide et je me retrouve avec tout en A1. est il possible de
garder la structure de ma page ligne par ligne dans une seul cellule
et est il possible de garde les couleurs des lignes ? ou est il
possible de faire une capture ecran et de la coller dans le body du
mail ?

Merci d'avance de votre aide.


On 4 juil, 14:45, "Daniel" wrote:
Plutôt :

Dim c As Range, Texte As String
For Each c In Sheets(1).Range("D15:J65")
If c.Column = 10 Then
Texte = Texte & c & Chr(10)
Else
Texte = Texte & c & " "
End If
[A1] = Texte
Next c

Daniel
"Daniel" a écrit dans le message de news:




Désolé, en plus, c'était idiot.
Daniel
a écrit dans le message de news:

désolé marche pas et j'ai une erreur d'execution 7078 coud'nt create
field %1. :-(

une autre idee :-)

merci encore

On 4 juil, 12:36, "Daniel" wrote:
Dommage. A part ça, je ne travaille plus avec Lotus depuis un
bail...Essaie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tablea u de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vier ge .

Merci de tin aide aurais tu une autre id"e ?

On 4 juil, 11:55, "Daniel" wrote:

' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bord ")
n'est
pas vierge.
Cordialement.
Daniel- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -



- Afficher le texte des messages précédents -





Avatar
sbtlg
On 4 juil, 15:40, wrote:
Merci, la ça marche pour l'envoi du mail mais le probleme c que mon
tableau se vide et je me retrouve avec tout en A1. est il possible de
garder la structure de ma page ligne par ligne dans une seul cellule
et est il possible de garde les couleurs des lignes ? ou est il
possible de faire une capture ecran et de la coller dans le body du
mail ?

Merci d'avance de votre aide.

On 4 juil, 14:45, "Daniel" wrote:



Plutôt :

Dim c As Range, Texte As String
For Each c In Sheets(1).Range("D15:J65")
If c.Column = 10 Then
Texte = Texte & c & Chr(10)
Else
Texte = Texte & c & " "
End If
[A1] = Texte
Next c

Daniel
"Daniel" a écrit dans le message de news:


Désolé, en plus, c'était idiot.
Daniel
a écrit dans le message de news:

désolé marche pas et j'ai une erreur d'execution 7078 coud'nt cre ate
field %1. :-(

une autre idee :-)

merci encore

On 4 juil, 12:36, "Daniel" wrote:
Dommage. A part ça, je ne travaille plus avec Lotus depuis un
bail...Essaie
en mettant :
MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65").value
(mais j'y crois pas beaucoup)
Daniel
a écrit dans le message de news:

Désolé ça ne marche pas et le nom de ma feuille est bien "Tabl eau de
bord".

sniff
et je ne vois pas pourquoi ça ne marche pas je reçois un mail vi erge .

Merci de tin aide aurais tu une autre id"e ?

On 4 juil, 11:55, "Daniel" wrote:

' la fonction ce-dessous fonctionne mais envoi juste une cellule
'MailDoc.Body = Worksheets(1).Cells(15, 4).Value

Bonjour.
Normal. il s'agit de la cellule D15 de la première feuille.

' la fonction ce-dessous ne fonctionne pas je receptionne un mail
vierge

MailDoc.Body = Worksheets("Tableau de bord").Range("D15:J65")

Essaie :
MailDoc.Body = Worksheets(1).Range("D15:J65")
Pour savoir le nom de Worksheets(1), exécute la macro :
Sub Test()
msgbox sheets(1).Name
End Sub
Sinon, vérifie que la plage D15:J65 de la feuille "Tableau de bo rd")
n'est
pas vierge.
Cordialement.
Daniel- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


J'oubliais le tableau d'origine ne doit pas etre modifier. comme C'est
le cas avec la modif.

merci d'avance





1 2