contenu d'une cellule dans un mail

  • Initiateur de la discussion Initiateur de la discussion kinel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

kinel

XLDnaute Occasionnel
bonjour à tous

l'extrait de code ci-dessous me sert à envoyer la sauvegarde de mon classeur par mail
je voudrai qu'apparaisse dans le corps du mail le contenu d'une cellule du classeur (exemple la cellule A2 de la feuille bondecommande)

merci de vos conseils
Kinel

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "Bonjour" & vbNewLine & vbNewLine & _
"voici la sauvegarde de mon classeur" & vbNewLine & _
"Test 2" & vbNewLine & _
"Test 3" & vbNewLine & _
"Test 4"
On Error Resume Next
With OutMail
.To = "truc@truc.com"
.CC = ""
.BCC = ""
.Subject = "sauvegarde de mon classeur"
.Body = strbody
.Attachments.Add FileNameZip
.Send
End With
 
Re : contenu d'une cellule dans un mail

bonsoir

tu peux utiliser cette adaptation :

Code:
strbody = "Bonjour" & vbNewLine & vbNewLine & _
    "voici la sauvegarde de mon classeur" & vbNewLine & _
    Worksheets("bondecommande").Range("A2") & vbNewLine & _
    "Test 3" & vbNewLine & _
    "Test 4"

bonne soirée
michel
 
Re : contenu d'une cellule dans un mail

je me permets de repondre car je souhaiterais faire la meme chose mais avec une feuille de classeur, en envoyant une copie de cette feuille mais simplement des valeurs (car remplie de formule)

j'ai donc modifié un peu le code..mais...ba ca marche pas 😱

voici le code.

Sub Envoi_Alertes()
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "Bonjour" & vbNewLine & vbNewLine & _
"mes alertes GPOR hebdo"" & vbNewLine & _
Sheets7 & vbNewLine & _
"Test 3" & vbNewLine & _
"Test 4"

On Error Resume Next
With OutMail
.To = "truc@truc.com"
.CC = ""
.BCC = ""
.Subject = "mes alertes GPOR hebdo"
.Body = strbody
.Attachments.Add FileNameXls
.Send
End With
End Sub


comme je debute en vba...je ne comprend pas trop mon erreur.

Merci d avance
 
Dernière modification par un modérateur:
Re : contenu d'une cellule dans un mail

bjr Homer75
oui c'est normal je n'ai mis qu'une partie du code qui me posait problème
bien cordialement
Kinel

voici la totalité :

il faut mettre les 4 codes (bleu,vert,rouges et noir) c'est le noir qu'il faut personnaliser.

Sub NewZip(sPath)
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub

Function bIsBookOpen(ByRef szBookName As String) As Boolean
On Error Resume Next
bIsBookOpen = Not (Application.Workbooks(szBookName) Is Nothing)
End Function

Function Split97(sStr As Variant, sdelim As String) As Variant
Split97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") & """}")
End Function


Sub Zip_Mail_ActiveWorkbook()
Dim strDate As String, DefPath As String, strbody As String
Dim oApp As Object, OutApp As Object, OutMail As Object
Dim FileNameZip, FileNameXls
Dim FileExtStr As String
DefPath = Application.DefaultFilePath
If Right(DefPath, 1) <> "\" Then
DefPath = DefPath & "\"
End If
If Val(Application.Version) < 12 Then
FileExtStr = ".xls"
Else
Select Case ActiveWorkbook.FileFormat
Case 51: FileExtStr = ".xlsx"
Case 52: FileExtStr = ".xlsm"
Case 56: FileExtStr = ".xls"
Case 50: FileExtStr = ".xlsb"
Case Else: FileExtStr = "notknown"
End Select
If FileExtStr = "notknown" Then
MsgBox "Sorry unknown file format"
Exit Sub
End If
End If
strDate = Format(Now, " yyyy-mm-dd h-mm-ss")
FileNameZip = DefPath & Left(ActiveWorkbook.Name, _
Len(ActiveWorkbook.Name) - 4) & strDate & ".zip"
FileNameXls = DefPath & Left(ActiveWorkbook.Name, _
Len(ActiveWorkbook.Name) - 4) & strDate & FileExtStr
If Dir(FileNameZip) = "" And Dir(FileNameXls) = "" Then
ActiveWorkbook.SaveCopyAs FileNameXls
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameZip).CopyHere FileNameXls
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = 1
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "Bonjour" & vbNewLine & vbNewLine & _
Sheets(1).Range("I1") & vbNewLine & _
"vous envoie la sauvegarde de mon classeur" & vbNewLine & _
"Bonne journée.." & vbNewLine & _
"..."
On Error Resume Next
With OutMail
.To = "monadresse@gmail.com"
.CC = ""
.BCC = ""
.Subject = "sauvegarde de mon classeur"
.Body = strbody
.Attachments.Add FileNameZip
.Send
End With
On Error GoTo 0
Kill FileNameZip
Kill FileNameXls
Else
MsgBox "FileNameZip or/and FileNameXls exist"
End If
End Sub
 
Re : contenu d'une cellule dans un mail

Merci de ton aide.

Maintenant je n'arrive pas à remédier a ca:

strbody = "Bonjour" & vbNewLine & vbNewLine & _
Worksheets("Pilotage") & vbNewLine & _
"vous envoie la sauvegarde de mon classeur" & vbNewLine & _
"Bonne journée.." & vbNewLine & _
"..."

Perso je souhaite envoyer l'onglet entier avec toutes ses valeurs, sa mise en page mais sans les formules associées.

Merci de vos conseils.

😉
 
Re : contenu d'une cellule dans un mail

essaye :


strbody = "Bonjour" & vbNewLine & vbNewLine & _
Sheets(1) & vbNewLine & _
"vous envoie la sauvegarde de mon classeur" & vbNewLine & _
"Bonne journée.." & vbNewLine & _
"..."


1 est le numéro d'ordre de la feuille en question (à personnaliser)

A tester

Kinel
 
Re : contenu d'une cellule dans un mail

Merci bien,

je vais tester la version de kinel.

celle de MichelXLD peut etre pas mal, mais je cherche vraiment à envoyer la feuil excel avec toute sa mise en forme mais sans les formules, simplement les valeurs.

Je test et je reviens au cas ou.

😉
 
Re : contenu d'une cellule dans un mail

re...

bon et bien finalement la version de Michel XLD semble bien fonctionner avec un tout petit code.

c'est parfait.

Maintenant je souhaiterais juste une petite aide finale :

dans le code ci dessous, on met en "dur" l'adresse du destinataire.

je souhaiterai mettre dans mon dossier excel disons en
Feuille: "Mail"
cellules: A1, A2, A3, A4, A5 les adresses mails de mes correspondants.

Et ainsi récuperer dans le code, les "valeurs" des cases A1, A2, A3...

Car vous vous en doutez, chaque utilisateurs n'aura pas le meme correspondant.

Merci d avance !


Sub envoiPlageCellules_Excel2002()
ActiveSheet.Range("A1:B5").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "bonjour , ci joint les données ..."
.Item.To = "trucmuche@ED.fr"
.Item.Subject = "le sujet"
.Item.Send
End With
End Sub
 
Re : contenu d'une cellule dans un mail

Bonjour




Tu peux exporter ta feuille en fichier image et joindre cette image à ton mail.

PS: As-tu recherché avec le moteur de recherche du forum des fils de discussions évoquant ce sujet?

Tu devrais trouver de nombreux exemples, la question ayant été déjà abordé.

Pour l'export en image: (cela simule un copier/collage spécial valeurs seules)
https://www.excel-downloads.com/threads/exporter-une-feuille-en-tant-quimage.66346/

Pour envoyer un email d'Excel
Lien supprimé
 
Dernière édition:
Re : contenu d'une cellule dans un mail

merci pour tout ca...mais pour le mail ca roule.

c'est plus pour aller chercher des adresses mails inscrites dans le classeur.

imaginons que c'est dans la feuille "Mail", cellule a1, a2, a3, a4, et a5.

reprise du message précedent:

re...

bon et bien finalement la version de Michel XLD semble bien fonctionner avec un tout petit code.

c'est parfait.

Maintenant je souhaiterais juste une petite aide finale :

dans le code ci dessous, on met en "dur" l'adresse du destinataire.

je souhaiterai mettre dans mon dossier excel disons en
Feuille: "Mail"
cellules: A1, A2, A3, A4, A5 les adresses mails de mes correspondants.

Et ainsi récuperer dans le code, les "valeurs" des cases A1, A2, A3...

Car vous vous en doutez, chaque utilisateurs n'aura pas le meme correspondant.

Merci d avance !


Sub envoiPlageCellules_Excel2002()
ActiveSheet.Range("A1:B5").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "bonjour , ci joint les données ..."
.Item.To = "trucmuche@ED.fr" (je voudrais qu'il aille chercher les adresses inscrites)
.Item.Subject = "le sujet"
.Item.Send
End With
End Sub
 
Re : contenu d'une cellule dans un mail

Re

Essaie la concaténation avec le caratère ; entre chaque adresse

Je te laisse faire les tests.

(Décommentes les lignes que j'ai commenté)

Code:
Sub envoiPlageCellules_Excel2002()
Dim ListEmail
Dim i As Byte
Dim Destinataires$, Them$
ListEmail = Application.Transpose(Range("A1:A5"))
For i = 1 To UBound(ListEmail)
Destinataires = Destinataires & ListEmail(i) & ";"
Next
Them = Left(Destinataires, Len(Destinataires) - 1)
'pour test
MsgBox Them
'With ActiveSheet.MailEnvelope
'.Introduction = "bonjour , ci joint les données ..."
'[B][COLOR="Red"].Item.To = Them[/COLOR][/B]
'.Item.Subject = "le sujet"
'.Item.Send
'End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
963
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Réponses
17
Affichages
2 K
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
615
Réponses
2
Affichages
1 K
Réponses
2
Affichages
1 K
Retour