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

Plantage envoi mail avec excel

6 réponses
Avatar
infonie
Bonjour à tous,

Je profite de la lecture du forum pour poser une petite question aux
spécialistes. J'utilise Outlook express pour l'envoi d'un suivi de stock.
Celui ci est envoyé en fichier joint. Il y a plusieurs mois quelqu'un avait
donné une macro pour l'envoyer non pas en fichier joint mais dans le corps
du mail. Chez moi la fonction fait planter excel ( il y a un sablier et il
faut redemarrer le pc pour arriver à sortir du programme )

Voilà la macro suivi de la fonction ( elle son dans le même module ) :

Sub envoimail()
'test cellule 0
'If Range("D16") <> 0 Then
'If MsgBox("Le stock n'est pas à 0 ( il reste des pièces en D16 )",
vbOKOnly) = vbOK Then End
'End If
'
'
Application.ScreenUpdating = False
ActiveSheet.Unprotect
xfichier = [C2]
yfichier = [I3]
'
With CreateObject("Outlook.Application")
With .CreateItem(0)
.To = "nom.du@destinataire.com"
.Subject = "Stock en cours " & xfichier & " " & yfichier & ""
.HTMLBody = HTML(ActiveSheet)
.Send
End With
End With
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("D3").Select
'
End Sub

Private Function HTML(sh As Worksheet) As String
On Error Resume Next
Const Tmp As String = "C:\temp.htm"
Kill Tmp: sh.Copy: Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes: Shp.Delete: Next
ActiveWorkbook.SaveAs Tmp, xlHtml
ActiveWorkbook.Close False
Dim fso As Object, ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Tmp, 1)
HTML = ts.ReadAll: ts.Close: Kill Tmp
Set ts = Nothing: Set fso = Nothing
End Function

Ou alors faut-il mettre la fonction dans un autre module ( spécial ) ?

Merci pour votre aide, ça me faciliterait grandement les choses d'avoir tout
dans le corps du mail

6 réponses

Avatar
jps
bonjour infonie
je ne comprends pas tout mais si ta Function est dans un module de feuille,
ça ne marchera pas car une Fucntion doit être dans un module standard...
mais peut-être que cela ne répond pas à ta question
jps

"infonie" a écrit dans le message de
news:419d2bc2$0$20373$
Bonjour à tous,

Je profite de la lecture du forum pour poser une petite question aux
spécialistes. J'utilise Outlook express pour l'envoi d'un suivi de stock.
Celui ci est envoyé en fichier joint. Il y a plusieurs mois quelqu'un
avait

donné une macro pour l'envoyer non pas en fichier joint mais dans le corps
du mail. Chez moi la fonction fait planter excel ( il y a un sablier et il
faut redemarrer le pc pour arriver à sortir du programme )

Voilà la macro suivi de la fonction ( elle son dans le même module ) :

Sub envoimail()
'test cellule 0
'If Range("D16") <> 0 Then
'If MsgBox("Le stock n'est pas à 0 ( il reste des pièces en D16 )",
vbOKOnly) = vbOK Then End
'End If
'
'
Application.ScreenUpdating = False
ActiveSheet.Unprotect
xfichier = [C2]
yfichier = [I3]
'
With CreateObject("Outlook.Application")
With .CreateItem(0)
.To = ""
.Subject = "Stock en cours " & xfichier & " " & yfichier & ""
.HTMLBody = HTML(ActiveSheet)
.Send
End With
End With
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("D3").Select
'
End Sub

Private Function HTML(sh As Worksheet) As String
On Error Resume Next
Const Tmp As String = "C:temp.htm"
Kill Tmp: sh.Copy: Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes: Shp.Delete: Next
ActiveWorkbook.SaveAs Tmp, xlHtml
ActiveWorkbook.Close False
Dim fso As Object, ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Tmp, 1)
HTML = ts.ReadAll: ts.Close: Kill Tmp
Set ts = Nothing: Set fso = Nothing
End Function

Ou alors faut-il mettre la fonction dans un autre module ( spécial ) ?

Merci pour votre aide, ça me faciliterait grandement les choses d'avoir
tout

dans le corps du mail




Avatar
Clément Marcotte
Bonjour,

Si tu es là aujourd'hui, est-ce une preuve suffisante que le
Beaujolais Nouveau n'est pas toxique à petites doses ? :-)
Avatar
jps
disons que les trous que nous faisons dans nos chaussures quand on fait pipi
sont à peine plus gros que ceux dans les pompes des buveurs de
cocacola...sauf que les nôtres de trous ne continuent pas de s'agrandir...
jps

"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Si tu es là aujourd'hui, est-ce une preuve suffisante que le
Beaujolais Nouveau n'est pas toxique à petites doses ? :-)



Avatar
infonie
Bonsoir,

Non elle est dans un module standart ( menu insertion, module )

Du coup j'ai toujours pas la solution à mon problème...

Merci

"jps" a écrit dans le message de
news: %
bonjour infonie
je ne comprends pas tout mais si ta Function est dans un module de
feuille,
ça ne marchera pas car une Fucntion doit être dans un module standard...
mais peut-être que cela ne répond pas à ta question
jps

"infonie" a écrit dans le message de
news:419d2bc2$0$20373$
Bonjour à tous,

Je profite de la lecture du forum pour poser une petite question aux
spécialistes. J'utilise Outlook express pour l'envoi d'un suivi de stock.
Celui ci est envoyé en fichier joint. Il y a plusieurs mois quelqu'un
avait

donné une macro pour l'envoyer non pas en fichier joint mais dans le
corps
du mail. Chez moi la fonction fait planter excel ( il y a un sablier et
il
faut redemarrer le pc pour arriver à sortir du programme )

Voilà la macro suivi de la fonction ( elle son dans le même module ) :

Sub envoimail()
'test cellule 0
'If Range("D16") <> 0 Then
'If MsgBox("Le stock n'est pas à 0 ( il reste des pièces en D16 )",
vbOKOnly) = vbOK Then End
'End If
'
'
Application.ScreenUpdating = False
ActiveSheet.Unprotect
xfichier = [C2]
yfichier = [I3]
'
With CreateObject("Outlook.Application")
With .CreateItem(0)
.To = ""
.Subject = "Stock en cours " & xfichier & " " & yfichier & ""
.HTMLBody = HTML(ActiveSheet)
.Send
End With
End With
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("D3").Select
'
End Sub

Private Function HTML(sh As Worksheet) As String
On Error Resume Next
Const Tmp As String = "C:temp.htm"
Kill Tmp: sh.Copy: Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes: Shp.Delete: Next
ActiveWorkbook.SaveAs Tmp, xlHtml
ActiveWorkbook.Close False
Dim fso As Object, ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Tmp, 1)
HTML = ts.ReadAll: ts.Close: Kill Tmp
Set ts = Nothing: Set fso = Nothing
End Function

Ou alors faut-il mettre la fonction dans un autre module ( spécial ) ?

Merci pour votre aide, ça me faciliterait grandement les choses d'avoir
tout

dans le corps du mail







Avatar
jps
ben oui, infonie, et tu m'en vois bien contrit mais je ne peux t'aider
davantage....gageons que les cracks vont trouver où se situe le chibrelot
qui fait planter la macro ; tu, ceci dit en aparté et entre nous, moi, quand
j'ai un sablier en continu, c'est lorsque je te tente d'ouvrir les
modestinades d'un certain geedee...(zum bei Spiel, la bobine à Michel P et
la mienne)
jps

"infonie" a écrit dans le message de
news:419e8e66$0$8208$
Bonsoir,

Non elle est dans un module standart ( menu insertion, module )

Du coup j'ai toujours pas la solution à mon problème...

Merci

"jps" a écrit dans le message de
news: %
bonjour infonie
je ne comprends pas tout mais si ta Function est dans un module de
feuille,
ça ne marchera pas car une Fucntion doit être dans un module standard...
mais peut-être que cela ne répond pas à ta question
jps

"infonie" a écrit dans le message de
news:419d2bc2$0$20373$
Bonjour à tous,

Je profite de la lecture du forum pour poser une petite question aux
spécialistes. J'utilise Outlook express pour l'envoi d'un suivi de
stock.



Celui ci est envoyé en fichier joint. Il y a plusieurs mois quelqu'un
avait

donné une macro pour l'envoyer non pas en fichier joint mais dans le
corps
du mail. Chez moi la fonction fait planter excel ( il y a un sablier et
il
faut redemarrer le pc pour arriver à sortir du programme )

Voilà la macro suivi de la fonction ( elle son dans le même module ) :

Sub envoimail()
'test cellule 0
'If Range("D16") <> 0 Then
'If MsgBox("Le stock n'est pas à 0 ( il reste des pièces en D16 )",
vbOKOnly) = vbOK Then End
'End If
'
'
Application.ScreenUpdating = False
ActiveSheet.Unprotect
xfichier = [C2]
yfichier = [I3]
'
With CreateObject("Outlook.Application")
With .CreateItem(0)
.To = ""
.Subject = "Stock en cours " & xfichier & " " & yfichier & ""
.HTMLBody = HTML(ActiveSheet)
.Send
End With
End With
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True



Range("D3").Select
'
End Sub

Private Function HTML(sh As Worksheet) As String
On Error Resume Next
Const Tmp As String = "C:temp.htm"
Kill Tmp: sh.Copy: Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes: Shp.Delete: Next
ActiveWorkbook.SaveAs Tmp, xlHtml
ActiveWorkbook.Close False
Dim fso As Object, ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Tmp, 1)
HTML = ts.ReadAll: ts.Close: Kill Tmp
Set ts = Nothing: Set fso = Nothing
End Function

Ou alors faut-il mettre la fonction dans un autre module ( spécial ) ?

Merci pour votre aide, ça me faciliterait grandement les choses d'avoir
tout

dans le corps du mail











Avatar
GD
;o)))
tu as donc réussi à l'ouvrir, mauvaise langue !!!
zum bei Spiel, la bobine à Michel P et la mienne)
jps


et encore ce n'était que l'ébauche, le pire est à venir !!!
;o)))