code vba "envoyer recevoir" outlook

andrekn13

XLDnaute Occasionnel
Je cherche à trouver une solution pour , qu'une fois mon mail soit envoyé à partir de mon code excel vba, Outlook se réactive pour faire l'envoi réellement. Car il se loge dans " à envoyer", et Outlook se ferme. je dois donc le réouvrir "manuellement" pour procéder à l' envoi.
j'ai essayé pleins de paramètres dans Outlook, comme "hors connexion" toutes les minutes, mais je pense que lorsqu'il est fermé, rien n'y fait.

Dim X As String
Dim Y As String
Dim Z As String
Dim nomUtilisateur As String
Dim CheminDuFichier As String

X = Range("E45").Value
Y = Range("E11").Value
Z = Range("H17").Value
CheminDuFichier = Z & " - " & Y & " - " & X & " € " & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\" & Environ("username") & "\Desktop\" & CheminDuFichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False

Set olApp = CreateObject("Outlook.application")
Set M = olApp.CreateItem(ol_MailItem)
With M
M.To = Range("E19").Value 'le destinataire
M.Subject = " facture"
M.Body = "Bonjour" & vbCr & "Veuillez trouver ci-joint mon offre de prix" & vbCr & " Cordialement " 'texte a rajouter"
M.Attachments.Add "C:\Users\" & Environ("username") & "\Desktop\" & CheminDuFichier
'Set oBjMail = Nothing
.Display
SendKeys "^{ENTER}"
M.send
nomUtilisateur = Application.UserName
Kill "C:\Users\" & nomUtilisateur & "\Desktop\" & CheminDuFichier


Set oBjMail = Nothing
Set olApp = Nothing
'Application.Dialogs(xlDialogSendMail).Show

Normalement, " .Send" doit il l' envoyer même si Outlook se ferme du moment qu'il commence cette tâche et qu'il continue en travail de fond et c'est mon Outlook qui bugg ? ou je doit rajouter une commande pour qu'il l'envoi avant de fermer ?
Si quelqu'un connaît la réponse .... je le remercie par avance.
 

andrekn13

XLDnaute Occasionnel
Re : code vba "envoyer recevoir" outlook

Bonsoir
Merci de vos reponse
je viens de tester la solution de Gelinotte en rajoutant à la fin
Shell "OUTLOOK.EXE", 6
avec Outlook fermé, pour commencé, et il me l'ouvre et le referme consécutivement 2 fois, donc j'attends 2 mn , et finalement aucun changement; comme il est fermé , reste en attente ! à moins que je n'est pas compris ....;
et j'ai essayé avec mon Outlook ouvert et il reste ouvert pour l'envoyer
Pour la solution de CECI., il faut que je vois à quoi cela se rapporte
 

Gelinotte

XLDnaute Accro
Re : code vba "envoyer recevoir" outlook

Bonsoir,

Au début de la macro, teste si Outlook est ouvert.
S'il ne l'est pas (référence un pointer pour s'en souvenir et le faire refermer après) fait-le ouvrir
Exécute le traitement désiré.
Si Outlook était ouvert ... fin.
S'il était fermé (référence pointeur), fais-le fermer ..

Pour le fermer :
https://www.excel-downloads.com/thr...tion-precedemment-ouverte-outlook2003.152935/


Geli
 

andrekn13

XLDnaute Occasionnel
Re : code vba "envoyer recevoir" outlook

Bonsoir
je te remercie encore de me répondre et vu l' heure c'est encore plus louable
Je penne car finalement rien n' avance , j'ai bien mis au début l'ouverture et à la fin la fermeture, mais le mail reste toujours "coincé" dans la boite d' envoi, je ne comprends vraiment pas.
c'est pas logique , car à l'ouverture, Outlook opère " l'envoi-reception" , je ne comprends qu'il ne finisse pas ce qu'il a commencé.
On n'est bien d' ok? même s'il se referme il doit travailler en "arrière plan" , puisque je reçois des notifications de mails entrants !
voici mon code complet:
Sub Z4_outllook_DIRECT() 'OPTION 4 :Mail direct sans PDF sur le bureau, avec message : "veuillez trouver ci-joint ma proposition de prix"

Dim X As String
Dim Y As String
Dim Z As String
Dim nomUtilisateur As String
Dim CheminDuFichier As String
Dim Appli As Object

On Error Resume Next
Set Appli = GetObject(, "Outlook.Application")

If Appli Is Nothing Then 'Shell "OUTLOOK.EXE", 6
MsgBox "Outlook était fermé"
'Else
' MsgBox "Outlook est ouvert"
End If


X = Range("E45").Value
Y = Range("E11").Value
Z = Range("H17").Value
CheminDuFichier = Z & " - " & Y & " - " & X & " € " & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\" & Environ("username") & "\Desktop\" & CheminDuFichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False

Set olApp = CreateObject("Outlook.application")
Set M = olApp.CreateItem(ol_MailItem)
With M
M.To = Range("E19").Value 'le destinataire
M.Subject = " facture"
M.Body = "Bonjour" & vbCr & "Veuillez trouver ci-joint mon offre de prix" & vbCr & " Cordialement " 'texte a rajouter"
M.Attachments.Add "C:\Users\" & Environ("username") & "\Desktop\" & CheminDuFichier
'Set oBjMail = Nothing
'Set ObjOutlook = Nothing
'Set olApp = Nothing
.Display
SendKeys "^{ENTER}"
' .Display True
'M.display 'OBLIGATOIRE avec option M.sendMail, à mettre ' devant pour : M.Send
M.send 'DEMANDE confirmation du programme extérieur à rentrer mais après envoi automatique et effacement fichier OK
'M.SendMail ' évite la confirmation de du programme extérieur à rentrer mais plus envoi automatique, cliquer sur "envoyer", et en plus ferme avant d' envoyer
'.send

'Outlook.Application.DisplayAlerts = False
nomUtilisateur = Application.UserName
Kill "C:\Users\" & nomUtilisateur & "\Desktop\" & CheminDuFichier


Set oBjMail = Nothing
Set olApp = Nothing
'Application.Dialogs(xlDialogSendMail).Show

End With
'Lance une opération "Envoyer recevoir" sur OUTLOOK
'Shell "OUTLOOK.EXE", 6
'pour fermer outlook :
For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")
If Process.Name = "OUTLOOK.EXE" Then Process.Terminate
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : code vba "envoyer recevoir" outlook

Bonsoir à tous

andrekn13
Doubler les fils de discussion n'a jamais fait mieux marcher Outlook... ;)
https://www.excel-downloads.com/thr...nfirmation-outlook-de-message-externe.218318/
Et commencer ta discussion sans prendre le temps de nous saluer (voir ton premier message), te ne fera guère gagner de temps pour résoudre plus vite ta question. :rolleyes:

Et la suggestion CDO de xhudi69 (que je salue au passage), tu l'as zappé aussi ?
 

andrekn13

XLDnaute Occasionnel
Re : code vba "envoyer recevoir" outlook

bonsoir staple
comme je bug depuis que Windows 8.1 m'a "pris la main" pour se faire sa mise à jour, j'ai àchaque fois le désagrément de recommencer mon post , et à la fin jmi perd
 

Pièces jointes

  • bug2.JPG
    bug2.JPG
    64.1 KB · Affichages: 161
  • bug2.JPG
    bug2.JPG
    64.1 KB · Affichages: 132
  • bug2.JPG
    bug2.JPG
    64.1 KB · Affichages: 134
  • bug.jpg
    bug.jpg
    52.8 KB · Affichages: 126
  • bug.jpg
    bug.jpg
    52.8 KB · Affichages: 123
  • bug.jpg
    bug.jpg
    52.8 KB · Affichages: 126

Staple1600

XLDnaute Barbatruc
Re : code vba "envoyer recevoir" outlook

Re, bonsoir Gelinotte

andrekn13
Tout comme CDO permet de se dispenser d'Outlook, essaies un autre navigateur qu'Internet Explorer
(Tu as le choix: Firefox, Safari, Opera, Chromium etc...)
Je te laisse te faire une opinion par toi-même
(Redis-nous si tu as moins de problème sur XLD avec un autre navigateur)

Sinon tu as été voir ou pas l'alternative à Outlook qui passe par CDO ?
(voir le lien dans le message de xhudi69)

PS: Pour voir tes discussions (sans créer de doublons), tu peux cliquer sur Liens rapides et choisir Discussions suivies ou également passer par le tableau de bord
 

Staple1600

XLDnaute Barbatruc
Re : code vba "envoyer recevoir" outlook

Re

Essaies de toute urgence un autre navigateur ;)

Je te parle de CDO pour le moment
As-tu oui ou non été voir le site Ron de Bruin (lien de xhudi69)
CDO sait aussi envoyer les PDF ( et ce quel que soit le PC utilisé)
Tu peux également voir le classeur exemple réalisé à ce sujet par Roland_M
(disponible sur le forum)

PS: Tu es sur que ton PC n'a pas un problème ?
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
214
Réponses
2
Affichages
112

Statistiques des forums

Discussions
312 145
Messages
2 085 761
Membres
102 965
dernier inscrit
Mael44