OVH Cloud OVH Cloud

Envoi Mail en VBA

4 réponses
Avatar
Pascal
Bonjour =E0 toutes & =E0 tous,

Je sais que le probl=E8me a d=E9j=E0 =E9t=E9 soulev=E9 =E0 maintes=20
reprises mais ne correspond pas tout =E0 fait =E0 ce que=20
j'essaie de faire. Je m'explique: je souhaiterais cr=E9er un=20
mail via VBA et y ins=E9rer une plage de cellule non en=20
attachment mais en tant que corps du message. (un peu=20
comme le permet le bouton E-mail). Pouvez-vous m'y aider?
Merci d=E9j=E0 pour vos r=E9ponses et bien =E0 vous,

Pascal.

4 réponses

Avatar
papou
Bonjour
Si ton client de messagerie est Outlook, ajouter une référence à "Microsoft
Outlook x.0 Object Library" où x correspond à ta version d'Outlook puis dans
un module standard voici un exemple à adpater :
Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = Range("a1").Value
.CC = Range("a2").Value
.Subject = Range("a3").Value
.Body = Range("c5").Value 'ou une plage nommée
.Send
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Cordialement
Pascal

"Pascal" a écrit dans le message de
news:324c01c47ea0$0cef8f30$
Bonjour à toutes & à tous,

Je sais que le problème a déjà été soulevé à maintes
reprises mais ne correspond pas tout à fait à ce que
j'essaie de faire. Je m'explique: je souhaiterais créer un
mail via VBA et y insérer une plage de cellule non en
attachment mais en tant que corps du message. (un peu
comme le permet le bouton E-mail). Pouvez-vous m'y aider?
Merci déjà pour vos réponses et bien à vous,

Pascal.
Avatar
Merci Papou... mais j'ai une erreur 13 (type mismatch) à
la ligne .Body

Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = "uspad"
.CC = ""
.Subject = "test"
.Body = Range("B2").PivotTable.TableRange1.Value
.Display
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Ici, le range est un tcd sans pagefield. Mais si je me
limite à une plage simple, le résultat est le même. Tu as
une idée?

Pascal.

-----Message d'origine-----
Bonjour
Si ton client de messagerie est Outlook, ajouter une
référence à "Microsoft

Outlook x.0 Object Library" où x correspond à ta version
d'Outlook puis dans

un module standard voici un exemple à adpater :
Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = Range("a1").Value
.CC = Range("a2").Value
.Subject = Range("a3").Value
.Body = Range("c5").Value 'ou une plage nommée
.Send
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Cordialement
Pascal

"Pascal" a écrit
dans le message de

news:324c01c47ea0$0cef8f30$
Bonjour à toutes & à tous,

Je sais que le problème a déjà été soulevé à maintes
reprises mais ne correspond pas tout à fait à ce que
j'essaie de faire. Je m'explique: je souhaiterais créer un
mail via VBA et y insérer une plage de cellule non en
attachment mais en tant que corps du message. (un peu
comme le permet le bouton E-mail). Pouvez-vous m'y aider?
Merci déjà pour vos réponses et bien à vous,

Pascal.


.



Avatar
papou
Re
Il s'agit donc d'un ensemble de données à récupérer depuis une table dans un
TCD ?
Dans ce cas, il faut récupérer chacune des valeurs dans une boucle par
exemple :
For Each c In Range("B2").PivotTable.TableRange1.Value
LesValeurs = LesValeurs & c & vbLf 'pour ajouter un retour à la ligne
Next c
.Body = LesValeurs

Cordialement
Pascal

a écrit dans le message de
news:339501c47eaa$832b4e50$
Merci Papou... mais j'ai une erreur 13 (type mismatch) à
la ligne .Body

Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = "uspad"
.CC = ""
.Subject = "test"
.Body = Range("B2").PivotTable.TableRange1.Value
.Display
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Ici, le range est un tcd sans pagefield. Mais si je me
limite à une plage simple, le résultat est le même. Tu as
une idée?

Pascal.

-----Message d'origine-----
Bonjour
Si ton client de messagerie est Outlook, ajouter une
référence à "Microsoft

Outlook x.0 Object Library" où x correspond à ta version
d'Outlook puis dans

un module standard voici un exemple à adpater :
Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = Range("a1").Value
.CC = Range("a2").Value
.Subject = Range("a3").Value
.Body = Range("c5").Value 'ou une plage nommée
.Send
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Cordialement
Pascal

"Pascal" a écrit
dans le message de

news:324c01c47ea0$0cef8f30$
Bonjour à toutes & à tous,

Je sais que le problème a déjà été soulevé à maintes
reprises mais ne correspond pas tout à fait à ce que
j'essaie de faire. Je m'explique: je souhaiterais créer un
mail via VBA et y insérer une plage de cellule non en
attachment mais en tant que corps du message. (un peu
comme le permet le bouton E-mail). Pouvez-vous m'y aider?
Merci déjà pour vos réponses et bien à vous,

Pascal.


.



Avatar
Pascal
Papou,

Pas évident de créer le body du mail avec une boucle du
type for each in next, pour ce qui me concerne en tous
cas. Je vais plancher dessus chez moi ce soir à tête
reposée. Merci pour tes réponses et bien à toi,

Pascal.

-----Message d'origine-----
Re
Il s'agit donc d'un ensemble de données à récupérer
depuis une table dans un

TCD ?
Dans ce cas, il faut récupérer chacune des valeurs dans
une boucle par

exemple :
For Each c In Range("B2").PivotTable.TableRange1.Value
LesValeurs = LesValeurs & c & vbLf 'pour ajouter un
retour à la ligne

Next c
..Body = LesValeurs

Cordialement
Pascal

a écrit dans le
message de

news:339501c47eaa$832b4e50$
Merci Papou... mais j'ai une erreur 13 (type mismatch) à
la ligne .Body

Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = "uspad"
.CC = ""
.Subject = "test"
.Body = Range("B2").PivotTable.TableRange1.Value
.Display
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Ici, le range est un tcd sans pagefield. Mais si je me
limite à une plage simple, le résultat est le même. Tu as
une idée?

Pascal.

-----Message d'origine-----
Bonjour
Si ton client de messagerie est Outlook, ajouter une
référence à "Microsoft

Outlook x.0 Object Library" où x correspond à ta version
d'Outlook puis dans

un module standard voici un exemple à adpater :
Sub Tester()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = Range("a1").Value
.CC = Range("a2").Value
.Subject = Range("a3").Value
.Body = Range("c5").Value 'ou une plage nommée
.Send
End With
Set olmail = Nothing
Set ol = Nothing
End Sub

Cordialement
Pascal

"Pascal" a écrit
dans le message de

news:324c01c47ea0$0cef8f30$
Bonjour à toutes & à tous,

Je sais que le problème a déjà été soulevé à maintes
reprises mais ne correspond pas tout à fait à ce que
j'essaie de faire. Je m'explique: je souhaiterais créer
un


mail via VBA et y insérer une plage de cellule non en
attachment mais en tant que corps du message. (un peu
comme le permet le bouton E-mail). Pouvez-vous m'y aider?
Merci déjà pour vos réponses et bien à vous,

Pascal.


.




.