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

Macro Excel pour envoi message Outlook

7 réponses
Avatar
mabouille
Bonsoir le Monde,
Ecel et Outlook 2003 sous XP
J'essaie de mettre une macro sur un classeur Excel pour qu'il s'envoie
automatiquement
En fouinant ici j'ai trouvé ça, qui a l'air de marcher:
Sub EnvoiClassMail()
Dim Wbk As Workbook
Set Wbk = ActiveWorkbook
Wbk.SendMail "duchmoll@wanadoo.fr", "Essai mail par macro Excel", False
Wbk.Close savechanges:=False 'ou True
Set Wbk = Nothing
End Sub

Mais avant l'envoi il s'affiche un truc du genre :
"a program is trying to automatically send e-mail on your behalf...." (sur
certaines bécanes c'est en français) et il faut cliquer oui pour que ça parte.

Comment faire pour éviter cela, mais sans se servir de ClickYes ? (l'envoi
par macro dont je parle concerne plusieurs utilisateurs boulot trés timides
en informatique, et je ne peux pas leur faire charger à tous ClikYes)
J'ai essayé un SendKeys "Y" placé aprés la ligne SendMail mais ça n'a pas
marché, normal puisque le programme attend le message et la réponse pour
faire ce SendKey!
Ou alors il faut une manip des registres ? Est ce que fait ClikYes?

Bref : comment faire pour que tout se passe avec un seul déclenchement de ma
macro EnvoiClassMail sans autre message?
Merci sincèrement de votre aide
Mabouille

PS : je passe la même question dans le NG Outlook, parce que je ne sais pas
si c'est une question Outlook ou Excel, je ne veux vexer personne.

7 réponses

Avatar
Carim
Bonjour,

Comme le dit Ron, tout dépend de ta version d'Outlook ...

Outlook 2000-2003 :

Express ClickYes http://www.contextmagic.com/express-clickyes/

ou

Outlook Redemption http://www.dimastr.com/redemption/

Dans Outlook 2007, le problème a été réglé :
http://msdn2.microsoft.com/en-us/library/ms778202.aspx

A +
Avatar
mabouille
Salut Carim, et merci,
Bien noté les liens, mais dois je conclure qu'il n'y a aucune chance de
faire ça en direct de la macro elle-même avec un bout de code ?
A te lire
Mabouille


Bonjour,

Comme le dit Ron, tout dépend de ta version d'Outlook ...

Outlook 2000-2003 :

Express ClickYes http://www.contextmagic.com/express-clickyes/

ou

Outlook Redemption http://www.dimastr.com/redemption/

Dans Outlook 2007, le problème a été réglé :
http://msdn2.microsoft.com/en-us/library/ms778202.aspx

A +



Avatar
Carim
Salut,

Il parait qu'avec les instructions suivantes ... c'est possible ...
perso quand je l'ai testé je n'y suis pas arrivé ...

.Display
Application.Wait (Now + TimeValue("0:00:06"))
Application.SendKeys "%S"

A +
Avatar
perso
Bjr Mabouille

Essaye une autre méthode avec DISPLAY,

A mettre dans le classeur qui sera envoyé, cela ouvre l'email dans
Outlook, l'utilisateur n'a plus qu'à appuyer sur ENVOYER
De plus tu peux mettre un texte explicite qui va rassurer tes
collègues et les guider sur ce qu'il faut ou ne faut pas faire...

Donne moi ton avis (attention aux coupures de lignes ....)

Sub TestMabouille()

Dim AdresseEmail As String
Dim Sujet As String, Corps As String
Dim FichierJoint As String

Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)

AdresseEmail = ""
Sujet = "Le sujet bla bla bla"
Corps = "Bonjour," & vbCrLf & vbCrLf & _
"Veuillez trouver ci-joint, bla bla bla" & vbCrLf & vbCrLf &
_
"Cordialement,"

FichierJoint = Thisworkbook.fullname

myItem.To = AdresseEmail
myItem.Subject = Sujet
myItem.Body = Corps
On Error GoTo GestErr
Set Myattachments = myItem.Attachments
Myattachments.Add FichierJoint
myItem.Display ' c'est ICI la méthode Display

Set ol = Nothing
Set myItem = Nothing
Exit Sub

GestErr:
MsgBox "Erreur !! Merci de contacter Mabouille.........Fin de
l'instruction" & "erreur numéro = " & Err.Number

End Sub

PS: il faut que le fichier soit enregistré au moins 1 fois .....

Pat REDNEF
Since 1946....
Avatar
mabouille
Salut,
Pourquoi "%S" ? Je m'attendais à "Y" pour répondre Oui (ou à "o" d'ailleurs )
Mabouille


Salut,

Il parait qu'avec les instructions suivantes ... c'est possible ...
perso quand je l'ai testé je n'y suis pas arrivé ...

.Display
Application.Wait (Now + TimeValue("0:00:06"))
Application.SendKeys "%S"

A +




Avatar
mabouille
car il faut bouiclerMerci Patrick,
J'ai bien noté l'idée, je ne peux pas l'essayer tout de suite car il faut
boucler d'autres dossiers au boulot, mais je le ferai et je tiens aussitôt
tout le monde au courant.
Mabouille


Bjr Mabouille

Essaye une autre méthode avec DISPLAY,

A mettre dans le classeur qui sera envoyé, cela ouvre l'email dans
Outlook, l'utilisateur n'a plus qu'à appuyer sur ENVOYER
De plus tu peux mettre un texte explicite qui va rassurer tes
collègues et les guider sur ce qu'il faut ou ne faut pas faire...

Donne moi ton avis (attention aux coupures de lignes ....)

Sub TestMabouille()

Dim AdresseEmail As String
Dim Sujet As String, Corps As String
Dim FichierJoint As String

Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)

AdresseEmail = ""
Sujet = "Le sujet bla bla bla"
Corps = "Bonjour," & vbCrLf & vbCrLf & _
"Veuillez trouver ci-joint, bla bla bla" & vbCrLf & vbCrLf &
_
"Cordialement,"

FichierJoint = Thisworkbook.fullname

myItem.To = AdresseEmail
myItem.Subject = Sujet
myItem.Body = Corps
On Error GoTo GestErr
Set Myattachments = myItem.Attachments
Myattachments.Add FichierJoint
myItem.Display ' c'est ICI la méthode Display

Set ol = Nothing
Set myItem = Nothing
Exit Sub

GestErr:
MsgBox "Erreur !! Merci de contacter Mabouille.........Fin de
l'instruction" & "erreur numéro = " & Err.Number

End Sub

PS: il faut que le fichier soit enregistré au moins 1 fois .....

Pat REDNEF
Since 1946....



Avatar
Carim
Bonjour,

J'ai allègrement sauté une étape ...
car la suggestion concerne une modification de code avec la
méthode .Display
celle dans laquelle tu travailles avec l'Object Outlook depuis
Excel ...

Application.SendKeys "%S"

Pour l'instruction SendKeys, % signifie la touche Alt
% permet donc d'appeler le menu Outlook
S permet d'éxecuter Send (Envoyer)

A +