OVH Cloud OVH Cloud

Envoi de la feuille active par courriel

12 réponses
Avatar
Caroline L.
Bonjour,

je cherche à créer la macro suivante :
dans un classeur, envoyer la feuille active en pièce jointe par Outlook
Express et toujours au même destinataire (donc l'adresse électronique
s'inscrirait toute seule) et tout ça se ferait automatiquement en cliquant
sur un bouton (macro). Est-ce possible ?

Merci à l'avance

Caroline

2 réponses

1 2
Avatar
michdenis
Bonjour Caroline,

Si la première méthode ne fonctionne pas, je n'ai aucune explication. ! Le fait que tu utilises Windows 98 ne devrait pas avoir une
influence sur cette procédure ! (la preuve, tu n'as aucun message d'erreur lors de son exécution ?) Tu as eu d'autres suggestions
sur ce fil. Peut être y trouveras-tu satisfaction.


Salutations!



"Caroline L." a écrit dans le message de news: uT8$
Re-Bonjour michdenis,

j'ai fait le test de ta première méthode et j'ignore ce que je fais de pas
correcte mais je ne reçois pas le courriel. Pourtant j'ai ajouté la
référence de Microsoft Outlook dans les outils VBA et j'ai changé dans le
code mon adresse courriel. Est-ce parce que je suis sur Win 98 2e Ed. ? (tu
disais que la 2e méthode ne fonctionne pas sur Win 98 mais la 1ère ?).

Merci
Caroline


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

Bonjour Caroline,

Voici 2 méthodes :

Ceci fonctionne très bien ... tu n'as qu'à insérer
l'adresse internet dans la procédure et ne pas
oublier d'insérer la référence demandée.

Avec cette procédure, tu es obligé de cliquer sur "oui"
pour envoyer le courriel - sécurité Microsoft oblige.

'---------------------------------
Sub Mail_ActiveSheet_HTML_File()
'You must add a reference to the Microsoft outlook Library
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim wb As Workbook
Dim strdate As String

strdate = Format(Now, "dd-mm-yy h-mm-ss")
Application.ScreenUpdating = False

ActiveSheet.Copy
Set wb = ActiveWorkbook

With wb
.SaveAs "Part of " & ThisWorkbook.Name _
& " " & strdate & ".htm", FileFormat:=xlHtml

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = "Hi there"
.Attachments.Add wb.FullName
'You can add other files also like this
'.Attachments.Add ("C:test.txt")
.Send 'or use .Display
End With

.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With

Application.ScreenUpdating = True
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
'---------------------------------


Une autre méthode plus expédititve :
Tu dois renseigner le serveur SMTP de ta configuration

Pour ce faire, tu ouvres Outlook express,
barre des menus / outils / Compte /
Selectionne onglet Courrier - sélection le compte désiré
un clic sur propriété / onglet serveur / Smtp est défini dans
une des cases....

Ce code n'est pas valide avec Windows 98

'-------------------------------------
Sub CDO_Send_Workbook()
Dim iMsg As Object
Dim iConf As Object
Dim wb As Workbook
Dim WBname As String
' Dim Flds As Variant

Application.ScreenUpdating = False
Set wb = ActiveWorkbook

' It will save a copy of the file in C:/ with a Date and Time stamp
WBname = wb.Name & " " & Format(Now, "dd-mm-yy h-mm-ss") & ".xls"
wb.SaveCopyAs "C:/" & WBname


Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2


.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") "Serveur SMTP"


.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

.Update
End With

With iMsg
Set .Configuration = iConf
.To = ""
.CC = ""
.BCC = ""
.From = ""
.Subject = "This is a test"
.TextBody = "This is the body text"
.AddAttachment "C:/" & WBname
.Send
End With

'If you not want to delete the file you send delete this line
Kill "C:/" & WBname

Set iMsg = Nothing
Set iConf = Nothing
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
'-------------------------------------


Salutations!




"Caroline L." a écrit dans le message de news:
%23vh$

Bonjour michdenis,

merci pour le lien fourni, j'y suis allé.
J'ai essayé 2 solutions mais rien ne se passe, c'est-à-dire que je ne
recois

pas le courriel désiré (car pour mes tests je place mon adresse courriel).
Aussi, dans le code qui suit (au bas) que veut dire MailItem de la ligne
suivante
Dim OutMail As Outlook.MailItem


Code que j'ai essayé mais je ne reçois pas le courriel :
---------------------------------------------------------------
Sub Mail_ActiveSheet_HTML_File()
'You must add a reference to the Microsoft outlook Library
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim wb As Workbook
Dim strdate As String

strdate = Format(Now, "dd-mm-yy h-mm-ss")
Application.ScreenUpdating = False

ActiveSheet.Copy
Set wb = ActiveWorkbook

On Error Resume Next
wb.Sheets(1).DrawingObjects.Visible = True
wb.Sheets(1).DrawingObjects.Delete
On Error GoTo 0

With wb
.SaveAs "Part of " & ThisWorkbook.Name _
& " " & strdate & ".htm", FileFormat:=xlHtml

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = "Hi there"
.Attachments.Add wb.FullName
'You can add other files also like this
'.Attachments.Add ("C:test.txt")
.Send 'or use .Display
End With

.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With

Application.ScreenUpdating = True
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
________________________________

Merci
Caroline


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

Bonsoir Caroline,

Tu devrais trouver ton bonheur à cette adresse :
http://www.rondebruin.nl/sendmail.htm


Salutations!


"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche à créer la macro suivante :
dans un classeur, envoyer la feuille active en pièce jointe par Outlook
Express et toujours au même destinataire (donc l'adresse électronique
s'inscrirait toute seule) et tout ça se ferait automatiquement en
cliquant


sur un bouton (macro). Est-ce possible ?

Merci à l'avance

Caroline










Avatar
Caroline L.
Oui d'accord michdenis

Merci encore pour ton aide

Caroline

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

Bonjour Caroline,

Si la première méthode ne fonctionne pas, je n'ai aucune explication. ! Le
fait que tu utilises Windows 98 ne devrait pas avoir une

influence sur cette procédure ! (la preuve, tu n'as aucun message d'erreur
lors de son exécution ?) Tu as eu d'autres suggestions

sur ce fil. Peut être y trouveras-tu satisfaction.


Salutations!



"Caroline L." a écrit dans le message de news:
uT8$

Re-Bonjour michdenis,

j'ai fait le test de ta première méthode et j'ignore ce que je fais de pas
correcte mais je ne reçois pas le courriel. Pourtant j'ai ajouté la
référence de Microsoft Outlook dans les outils VBA et j'ai changé dans le
code mon adresse courriel. Est-ce parce que je suis sur Win 98 2e Ed. ?
(tu

disais que la 2e méthode ne fonctionne pas sur Win 98 mais la 1ère ?).

Merci
Caroline


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

Bonjour Caroline,

Voici 2 méthodes :

Ceci fonctionne très bien ... tu n'as qu'à insérer
l'adresse internet dans la procédure et ne pas
oublier d'insérer la référence demandée.

Avec cette procédure, tu es obligé de cliquer sur "oui"
pour envoyer le courriel - sécurité Microsoft oblige.

'---------------------------------
Sub Mail_ActiveSheet_HTML_File()
'You must add a reference to the Microsoft outlook Library
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim wb As Workbook
Dim strdate As String

strdate = Format(Now, "dd-mm-yy h-mm-ss")
Application.ScreenUpdating = False

ActiveSheet.Copy
Set wb = ActiveWorkbook

With wb
.SaveAs "Part of " & ThisWorkbook.Name _
& " " & strdate & ".htm", FileFormat:=xlHtml

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = "Hi there"
.Attachments.Add wb.FullName
'You can add other files also like this
'.Attachments.Add ("C:test.txt")
.Send 'or use .Display
End With

.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With

Application.ScreenUpdating = True
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
'---------------------------------


Une autre méthode plus expédititve :
Tu dois renseigner le serveur SMTP de ta configuration

Pour ce faire, tu ouvres Outlook express,
barre des menus / outils / Compte /
Selectionne onglet Courrier - sélection le compte désiré
un clic sur propriété / onglet serveur / Smtp est défini dans
une des cases....

Ce code n'est pas valide avec Windows 98

'-------------------------------------
Sub CDO_Send_Workbook()
Dim iMsg As Object
Dim iConf As Object
Dim wb As Workbook
Dim WBname As String
' Dim Flds As Variant

Application.ScreenUpdating = False
Set wb = ActiveWorkbook

' It will save a copy of the file in C:/ with a Date and Time stamp
WBname = wb.Name & " " & Format(Now, "dd-mm-yy h-mm-ss") & ".xls"
wb.SaveCopyAs "C:/" & WBname


Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2


.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") > "Serveur SMTP"


.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") 25

.Update
End With

With iMsg
Set .Configuration = iConf
.To = ""
.CC = ""
.BCC = ""
.From = ""
.Subject = "This is a test"
.TextBody = "This is the body text"
.AddAttachment "C:/" & WBname
.Send
End With

'If you not want to delete the file you send delete this line
Kill "C:/" & WBname

Set iMsg = Nothing
Set iConf = Nothing
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
'-------------------------------------


Salutations!




"Caroline L." a écrit dans le message de news:
%23vh$

Bonjour michdenis,

merci pour le lien fourni, j'y suis allé.
J'ai essayé 2 solutions mais rien ne se passe, c'est-à-dire que je ne
recois

pas le courriel désiré (car pour mes tests je place mon adresse
courriel).


Aussi, dans le code qui suit (au bas) que veut dire MailItem de la ligne
suivante
Dim OutMail As Outlook.MailItem


Code que j'ai essayé mais je ne reçois pas le courriel :
---------------------------------------------------------------
Sub Mail_ActiveSheet_HTML_File()
'You must add a reference to the Microsoft outlook Library
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim wb As Workbook
Dim strdate As String

strdate = Format(Now, "dd-mm-yy h-mm-ss")
Application.ScreenUpdating = False

ActiveSheet.Copy
Set wb = ActiveWorkbook

On Error Resume Next
wb.Sheets(1).DrawingObjects.Visible = True
wb.Sheets(1).DrawingObjects.Delete
On Error GoTo 0

With wb
.SaveAs "Part of " & ThisWorkbook.Name _
& " " & strdate & ".htm", FileFormat:=xlHtml

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = "Hi there"
.Attachments.Add wb.FullName
'You can add other files also like this
'.Attachments.Add ("C:test.txt")
.Send 'or use .Display
End With

.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With

Application.ScreenUpdating = True
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
________________________________

Merci
Caroline


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

Bonsoir Caroline,

Tu devrais trouver ton bonheur à cette adresse :
http://www.rondebruin.nl/sendmail.htm


Salutations!


"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche à créer la macro suivante :
dans un classeur, envoyer la feuille active en pièce jointe par
Outlook



Express et toujours au même destinataire (donc l'adresse électronique
s'inscrirait toute seule) et tout ça se ferait automatiquement en
cliquant


sur un bouton (macro). Est-ce possible ?

Merci à l'avance

Caroline















1 2