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

Amelioration macro Email

2 réponses
Avatar
Domi
Bonjour à tous,
Cette petie macro fonctionne parfaitement bien et me permet d'envoyer la
feuille EMAIL du classeur en Piece jointe sur un Email.
Je souhaiterais l'ameliorer pour que :
Le nom du fichier crée (actuellement "Budget & Date.xls") devienne : "Budget
& ....le contenu de la cellule B3....& Date.xls")
L'Objet de L'email soit automatiquement rempli ainsi : "Toto" & "....le
contenu de la cellule B3...."
Mes tentatives sont restées vaines...
Merci pour votre aide
Domi

Sub EnvoyerEmail()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("EMAIL").Select
ThisWorkbook.Sheets("EMAIL").Copy
Sheets("EMAIL").Name = "BUDGET"
With ThisWorkbook.ActiveSheet.UsedRange
'Suppression de tous les Shapes
ActiveSheet.DrawingObjects.Delete
End With

ActiveWorkbook.SaveAs Filename:="C:\Mes documents\BUDGET"
&Format(Date, "dd-mmm-yyyy") & ".xls", FileFormat :=xlNormal,
Password:="",WriteResPassword:="",ReadOnlyRecommended:= False,
CreateBackup:=False

Application.Dialogs(xlDialogSendMail).Show

ActiveWorkbook.Close
Sheets("BASE").Select
End Sub

2 réponses

Avatar
ThierryP
Bonjour Domi !

Ci-dessous une proc qui utilise CDO et qui fonctionne (en tous cas chez
moi !!). Pour moi, elle me sert à envoyer par mail une commande saisie
sous excel et rangée dans un classeur Récap mensuel. Evidemment à
adapter à tes besoins

thierryp

Sub EnvoiMail()
Dim iMsg As Object, iConf As Object, WBname, NumCde As String
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1
Set Flds = iConf.Fields
' Renseigner ci-dessous avec le smtp de l'utilisateur
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= "nom_de_ton_SMTP"

.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") =
"Nom_de_ton_Compte"

.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") =
"Mot_de_passe"

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
Application.ScreenUpdating = False
NumCde = Range("F16").Value

' On crée un fichier xls temporaire d'un onglet choisi (NumCde) qui sera
envoyé
' Un truc du genre : Nom_Fichier = "C:Budget" & [b3].value & Date &
".xls" doit renvoyer le nom qui va bien
ActiveWorkbook.SaveCopyAs Nom_Fichier

strbody = "Bonjour " & vbNewLine & vbNewLine & _
"Veuillez trouver ci-joint ma commande " & NumCde &
vbNewLine & _
"Merci de me confirmer prix et délais par retour" &
vbNewLine & _
"En l'attente," & vbNewLine & "Meilleures salutations"
With iMsg
Set .Configuration = iConf
.To = Range("B15").Value >>>>>>> adresse du destinataire
.CC = ""
.BCC = ""
.From = """Thierry"" <ton_adresse_mail>"
.Subject = "Commande"
.TextBody = strbody
.AddAttachment Nom_Fichier
.Fields.Update
.Send
End With
ActiveWorkbook.Close
Kill Nom_Fichier
Set iMsg = Nothing
Set iConf = Nothing
Application.ScreenUpdating = True
End Sub

Bonjour à tous,
Cette petie macro fonctionne parfaitement bien et me permet d'envoyer la
feuille EMAIL du classeur en Piece jointe sur un Email.
Je souhaiterais l'ameliorer pour que :
Le nom du fichier crée (actuellement "Budget & Date.xls") devienne : "Budget
& ....le contenu de la cellule B3....& Date.xls")
L'Objet de L'email soit automatiquement rempli ainsi : "Toto" & "....le
contenu de la cellule B3...."
Mes tentatives sont restées vaines...
Merci pour votre aide
Domi

Sub EnvoyerEmail()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("EMAIL").Select
ThisWorkbook.Sheets("EMAIL").Copy
Sheets("EMAIL").Name = "BUDGET"
With ThisWorkbook.ActiveSheet.UsedRange
'Suppression de tous les Shapes
ActiveSheet.DrawingObjects.Delete
End With

ActiveWorkbook.SaveAs Filename:="C:Mes documentsBUDGET"
&Format(Date, "dd-mmm-yyyy") & ".xls", FileFormat :=xlNormal,
Password:="",WriteResPassword:="",ReadOnlyRecommended:= False,
CreateBackup:úlse

Application.Dialogs(xlDialogSendMail).Show

ActiveWorkbook.Close
Sheets("BASE").Select
End Sub





Avatar
Domi
Merci pour ta réponse.
Je voudrais tout de même continuer mon code
Application.Dialogs(xlDialogSendMail).Show qui me lance Outlook 2000 car
(j'ai oublié de le préciser dans ma question) le message peut être envoyé
soit par Email, soit par Mail en Messagerie Interne au boulot (la plupart
des cas d'ailleurs).
Je vais tout de même essayer demain pour voir ce que cela fait.
Encore merci
domi

"ThierryP" a écrit dans le message de
news:
Bonjour Domi !

Ci-dessous une proc qui utilise CDO et qui fonctionne (en tous cas chez
moi !!). Pour moi, elle me sert à envoyer par mail une commande saisie
sous excel et rangée dans un classeur Récap mensuel. Evidemment à
adapter à tes besoins

thierryp

Sub EnvoiMail()
Dim iMsg As Object, iConf As Object, WBname, NumCde As String
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1
Set Flds = iConf.Fields
' Renseigner ci-dessous avec le smtp de l'utilisateur
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= "nom_de_ton_SMTP"

.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") > "Nom_de_ton_Compte"

.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") > "Mot_de_passe"

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") 25
.Update
End With
Application.ScreenUpdating = False
NumCde = Range("F16").Value

' On crée un fichier xls temporaire d'un onglet choisi (NumCde) qui sera
envoyé
' Un truc du genre : Nom_Fichier = "C:Budget" & [b3].value & Date &
".xls" doit renvoyer le nom qui va bien
ActiveWorkbook.SaveCopyAs Nom_Fichier

strbody = "Bonjour " & vbNewLine & vbNewLine & _
"Veuillez trouver ci-joint ma commande " & NumCde &
vbNewLine & _
"Merci de me confirmer prix et délais par retour" &
vbNewLine & _
"En l'attente," & vbNewLine & "Meilleures salutations"
With iMsg
Set .Configuration = iConf
.To = Range("B15").Value >>>>>>> adresse du destinataire
.CC = ""
.BCC = ""
.From = """Thierry"" <ton_adresse_mail>"
.Subject = "Commande"
.TextBody = strbody
.AddAttachment Nom_Fichier
.Fields.Update
.Send
End With
ActiveWorkbook.Close
Kill Nom_Fichier
Set iMsg = Nothing
Set iConf = Nothing
Application.ScreenUpdating = True
End Sub

Bonjour à tous,
Cette petie macro fonctionne parfaitement bien et me permet d'envoyer la
feuille EMAIL du classeur en Piece jointe sur un Email.
Je souhaiterais l'ameliorer pour que :
Le nom du fichier crée (actuellement "Budget & Date.xls") devienne :
"Budget


& ....le contenu de la cellule B3....& Date.xls")
L'Objet de L'email soit automatiquement rempli ainsi : "Toto" & "....le
contenu de la cellule B3...."
Mes tentatives sont restées vaines...
Merci pour votre aide
Domi

Sub EnvoyerEmail()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("EMAIL").Select
ThisWorkbook.Sheets("EMAIL").Copy
Sheets("EMAIL").Name = "BUDGET"
With ThisWorkbook.ActiveSheet.UsedRange
'Suppression de tous les Shapes
ActiveSheet.DrawingObjects.Delete
End With

ActiveWorkbook.SaveAs Filename:="C:Mes documentsBUDGET"
&Format(Date, "dd-mmm-yyyy") & ".xls", FileFormat :=xlNormal,
Password:="",WriteResPassword:="",ReadOnlyRecommended:= False,
CreateBackup:úlse

Application.Dialogs(xlDialogSendMail).Show

ActiveWorkbook.Close
Sheets("BASE").Select
End Sub