XL 2013 Macro pour envoyer un classeur (et non une seule feuille) par email

yml

XLDnaute Nouveau
Bonjour,

J'ai une macro qui permet d'enregistrer et d'envoyer une feuille unique par email.

J'aimerais modifier cette macro pour envoyer l’intégralité de mon classeur, savez vous comment je peux faire ?


Voici ma macro actuel :

Code:
Sub ENVOYER_EMAIL()

Dim NouveauClasseur As Workbook
Dim Destinataire As String
Destinataire = "mon@email.com"
Dim Objetmessage As String
Objetmessage = "object de lemail"


ActiveWorkbook.Save


Application.ScreenUpdating = False


ThisWorkbook.Sheets("MA FEUILLE").Copy
Set NouveauClasseur = ActiveWorkbook
NouveauClasseur.SaveAs Objetmessage

Dim ol As Object, myItem As Object
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.To = Destinataire
myItem.Subject = Objetmessage
myItem.Body = "le corp du mail"
myItem.attachments.Add ActiveWorkbook.FullName
myItem.Send
Set ol = Nothing

Application.DisplayAlerts = False
With NouveauClasseur
.ChangeFileAccess xlReadOnly
Kill .FullName
Application.DisplayAlerts = True
.Close False
End With
End Sub


Merci d'avance pour votre aide.

YML
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

Bonjour YML,

Il faut mettre la macro dans un classeur vierge, ensuite

Code:
Dim Fichier As String

'Si les classeurs sont dans le même dossier
Fichier = ThisWorkbook.Path & "\Classeur à envoyer.xls"

'Sinon
Fichier = "C:\Users\YML\Mes Documents\Classeur à envoyer.xls"

.AttachementsAdd Fichier
 

yml

XLDnaute Nouveau
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

bonjour Lone-wolf,


Le classeur a envoyer est celui dans lequel se trouve la macro.

En gros, l'utilisateur modifie le classeur, puis il lance la macro pour enregistrer et envoyer le classeur par email.

YML
 

yml

XLDnaute Nouveau
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

J'ai appliqué ta modification, ça marche très bien.

Étonnamment, ca arrive bien a envoyer le fichier actuellement ouvert.

Merci beaucoup pour ton aide.

Voici le code final.

Code:
Sub ENVOYER_EMAIL()

Dim NouveauClasseur As Workbook
Dim Destinataire As String
Destinataire = "xxx@xxxx.com"
Dim Objetmessage As String
Objetmessage = "xxxx"

'On se place sur la feuille principale
Sheets("ANALYSE CA").Select

'On enregistre le classeur
ActiveWorkbook.Save


Application.ScreenUpdating = False


Dim Fichier As String

'Si les classeurs sont dans le même dossier
Fichier = ThisWorkbook.Path & "\Tableau Analyse CA.xlsm"

Set NouveauClasseur = ActiveWorkbook
NouveauClasseur.SaveAs Objetmessage

Dim ol As Object, myItem As Object
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.To = Destinataire
myItem.Subject = Objetmessage
myItem.Body = "Bonjour, voici le tableau analyse CA" 'fichier en cours d'utilisation envoyé en attaché:
myItem.attachments.Add Fichier
myItem.Send
Set ol = Nothing

Application.DisplayAlerts = False
With NouveauClasseur
.ChangeFileAccess xlReadOnly
Kill .FullName
Application.DisplayAlerts = True
.Close False

'Fermer Excel
Application.Quit


End With
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

Re,

une autre façon de faire

Code:
Option Explicit

'Activer la référence Outlook xx.0 Object Library

Sub Envoi_Mail()
Dim PremAdresse, Sujet, CrMessage, Chemin, Fichier As String
Dim OlApp As Outlook.Application
Dim OlMail As MailItem

With Feuil1
PremAdresse = .Range("a2")
Sujet = .Range("b2")
CrMessage = .Range("c2")
Fichier = .Range("d2")
End With

Chemin = ThisWorkbook.Path & "\"

Set OlApp = CreateObject("Outlook.Application")
Set OlMail = OlApp.CreateItem(olMailItem)
 With OlMail
      .To = Premadresse
      .Subject = Sujet
      .Body = CrMessage
      .Attachments.Add Chemin & Fichier
      .Display
   End With
    Set OlMail = Nothing
    Set OlApp = Nothing
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

mdr.gif

Gloire à toi Calvus pleins de cheveux! ;)
 

Pièces jointes

  • mdr.gif
    mdr.gif
    50.5 KB · Affichages: 62

DoubleZero

XLDnaute Barbatruc
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

Re-bonjour,

... tu ne peux pas envoyer un classeur ouvert...

Avant que la discussion ne s;)it supprimée...

Un code de :confused: (j'ai la mémoire qui flanche...)...

Code:
Option Explicit
Sub Fichier_actif_mail()
' référence "Microsoft Office xxxx Object Library" activer
    Dim appoutlook As Outlook.Application
    Dim message As Outlook.mailitem
    Dim myrecipient As Object
    Set appoutlook = CreateObject("outlook.application")
    Set message = appoutlook.createitem(olmailitem)
    With message
        .Subject = "Macro pour envoyer ce fichier (et non une seule feuille) par email"
        .body = "Bonjour," & Chr(10) & Chr(10) & "Valeurs à la date du " & Date & Chr(10) & Chr(10) & "Cordialement."
        .bodyformat = olformatHTML
        .Recipients.Add ("toto@live.fr") ' adresse adapter
        .attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name
        .send
    End With
    appoutlook.Quit
    Set appoutlook = Nothing
End Sub

A bientôt :)
 

Calvus

XLDnaute Barbatruc
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

Bonsoir,

Assis, tranquillement sur mon piton rocheux,
J'attendais, que ce p'tit baudet, au corps laineux
Pointa son nez, comme toujours, râlant et pestant
Criant mais sans qu'on l'entendit, montrant ses dents.

D'une caresse, je le calmai et le rassurai,
Lui dit, qu'à vouloir séparer du grain l'ivraie,
Il ne ferait que réveiller, autour de lui
Les fureurs troublantes du loup et du poisson,

Qu'il devait chercher ce que cachait son ennui
Et cesser de se prendre pour un canasson !
Tout penaud, il s'assit, écouta, s'endormit,
Et rentra vite chez lui, finir son bol de son...





:):)
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro pour envoyer un classeur (et non une seule feuille) par email

With message
.Subject = "Réponse"
.body = "Bonjour," & Chr(10) & Chr(10) & "Envoyez moi la paye plutôt!" & Date _
& Chr(10) & Chr(10) & "Fauché comme le blé"
.bodyformat = olformatHTML
.Recipients.Add Direction
.attachments.Add ChèqueEnBlanc
.send
End With
appoutlook.Quit
Set appoutlook = Nothing
End Sub

En souhaitant que celui-ci suivra ;) :D
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 157
Membres
103 137
dernier inscrit
Billly