XL 2016 code Vba mail depuis excel

crurik

XLDnaute Nouveau
bonjour, mon soucie par rapport a mon code c'est que je suis obligé d’ouvrir outlook manuellement pour que le mail s'envoie car il reste bloquée dans la boite d'envoie si je ne le fait pas. Je tient a précisé que j'ai recherché par mais propre moyen mais je ne trouve pas la solution à mon problème. Merci d'avance pour le coup de main que vous pourriez m'apporter.

je vous laisse le code ici:

Option Explicit

Private Sub CommandButton1_Click()

Dim LeMail As Variant
Dim fichier As String

Set LeMail = CreateObject("Outlook.Application")

With LeMail.CreateItem(olMailItem)
.To = "adresse du destinataire"

fichier = "E:\"

.Attachments.Add fichier

.Display

End With


End Sub
 
Solution
Re


Dans ce cas, publie ta solution ici.
Elle pourrait servir à d'autres membres du forum avec une problématique similaire.
;)
la voici:
VB:
Function ExistenceFichier(sFichier As String) As Boolean

ExistenceFichier = Dir(sFichier) <> ""

End Function


Sub EnvoiMail()

Dim objMail As Outlook.MailItem
Dim outapp As Outlook.Application
Set outapp = New Outlook.Application

Dim X As Object
Dim sNomFichier As String

sNomFichier = Sheets("Config").Range("L11").Value
'Le chemin de Outlook.exe sera alors indiqué en case L11, dans un onglet nommé “Config” car il diffère effectivement en fonction de la version de votre 'Office, ... Chaque utilisateur pourra donc écrire dans cet onglet de configuration le chemin de leur Outlook.exe

On...

crurik

XLDnaute Nouveau
Re

=>crurik
Toujours pas de réponse à ma question...
:rolleyes:
Qu'affiche le Msgbox?
(voir message#10)
il affiche le chemin du fichier en cour
bonjour, mon soucie par rapport a mon code c'est que je suis obligé d’ouvrir outlook manuellement pour que le mail s'envoie car il reste bloquée dans la boite d'envoie si je ne le fait pas. Je tient a précisé que j'ai recherché par mais propre moyen mais je ne trouve pas la solution à mon problème. Merci d'avance pour le coup de main que vous pourriez m'apporter.

je vous laisse le code ici:

Option Explicit

Private Sub CommandButton1_Click()

Dim LeMail As Variant
Dim fichier As String

Set LeMail = CreateObject("Outlook.Application")

With LeMail.CreateItem(olMailItem)
.To = "adresse du destinataire"

fichier = "E:\"

.Attachments.Add fichier

.Display

End With


End Sub
La meilleur solution a mon problème pour envoyer un mail depuis excel si outlook ne l'envoie pas (reste dans le dossier envoie si pas d'ouverture manuel Outlook) c'est celle-ci:

VB:
Function ExistenceFichier(sFichier As String) As Boolean

ExistenceFichier = Dir(sFichier) <> ""

End Function


Sub EnvoiMail()

Dim objMail As Outlook.MailItem
Dim outapp As Outlook.Application
Set outapp = New Outlook.Application

Dim X As Object
Dim sNomFichier As String

sNomFichier = Sheets("Config").Range("L11").Value

On Error Resume Next
Set X = GetObject(, "Outlook.application")
If Err.Number <> 0 Then '
If ExistenceFichier(sNomFichier) Then
ID = Shell(sNomFichier)

Else
MsgBox "Je ne reconnais pas l'adresse de OUTLOOK.exe sur votre PC (A préciser dans l'onglet Config) !" & Chr(10) & Chr(10) & "Le fichier se trouve cependant bien envoyé dans la Outbox de Outlook ..." & Chr(10) & Chr(10) & "Il faudra donc lancer manuellement Outlook pour que le fichier soit envoyé !"
End If

Else

'MsgBox "Outlook est déja ouvert ..."

End If


Set outapp = New Outlook.Application
Dim olExplorer As Outlook.Explorer
Set objMail = outapp.CreateItem(olMailItem)
Dim mpf As Outlook.MAPIFolder

objMail.Subject = " 56"
'objMail.Body = "---> Ligne1 Blala bla..." & Chr(10) & " " & Chr(10) & " Ligne2 …" & Chr(10) & " " & Chr(10) & "Ligne3 …" & Chr(10) & Chr(10) & " Signature …" & Chr(10) & "Ligne finale …"
objMail.To = Range("a200")
objMail.CC = Range("a201")
objMail.Attachments.Add "E:\Bureau\Photos\Terrible.jpg"
'Destinataires en Copie ou en copie cachée
'objMail.BCC= «Adresse BCCopie2@swing.be»
objMail.Display '
'objMail.Send

Set outapp = Nothing
Set objMail = Nothing

End Sub

Si vous avez une commande macro pour minimiser Outlook a l'ouverture par rapport a ce code je suis preneur.
 

Staple1600

XLDnaute Barbatruc
Re

=>crurik
"E:\Bureau\Photos\Terrible.jpg"
Ceci (au dessus) n'est pas ce que doit renvoyer ce qui suit (ci-dessou) et qu'on lisait dans le message#9
objMail.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name
Et qui expliquait le pourquoi du test proposé dans message#10.

NB:
[Pour infos]
Il y a beaucoup simple comme code
(et avec beaucoup moins de lignes)
 

crurik

XLDnaute Nouveau
Re

=>crurik
"E:\Bureau\Photos\Terrible.jpg"
Ceci (au dessus) n'est pas ce que doit renvoyer ce qui suit (ci-dessou) et qu'on lisait dans le message#9
objMail.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name
Et qui expliquait le pourquoi du test proposé dans message#10.

NB:
[Pour infos]
Il y a beaucoup simple comme code
(et avec beaucoup moins de lignes)
si vous avez plus simple en code avec les meme fonction je suis preneur. ce code vérifie: si outlook et en tache de fond, il l'ouvre si ce n'est pas le cas.
 

Staple1600

XLDnaute Barbatruc
Re

=>crurik
Code non testé
(car comme je l'ai dit précédemment, je ne disposerai d'Outlook que lundi)
VB:
Sub test()
Dim fichier$
fichier = ThisWorkbook.Path & "\monimage.jpg"
envoyerMail "staple1600@domain.org", "TEST", fichier
End Sub
Private Sub envoyerMail(Destinataire$, Objet$, Pjointe$)
With CreateObject("Outlook.Application").CreateItem(0)
.Subject = Objet: .To = Destinataire: .attachments.Add Pjointe: .send
End With
End Sub
1) Pour tester, Outlook doit être ouvert (et en réduction dans la barre des tâches)
2) Il faut évidemment faire les adaptations idoines dans le code VBA de test.
 

crurik

XLDnaute Nouveau
Re

=>crurik
Code non testé
(car comme je l'ai dit précédemment, je ne disposerai d'Outlook que lundi)
VB:
Sub test()
Dim fichier$
fichier = ThisWorkbook.Path & "\monimage.jpg"
envoyerMail "staple1600@domain.org", "TEST", fichier
End Sub
Private Sub envoyerMail(Destinataire$, Objet$, Pjointe$)
With CreateObject("Outlook.Application").CreateItem(0)
.Subject = Objet: .To = Destinataire: .attachments.Add Pjointe: .send
End With
End Sub
1) Pour tester, Outlook doit être ouvert (et en réduction dans la barre des tâches)
2) Il faut évidemment faire les adaptations idoines dans le code VBA de test.
ton fichier marche que si outlook et en arrière plans donc il me faudrait la même chose mais avec l'ouverture d' outlook si celui-ci est fermer.
 

Staple1600

XLDnaute Barbatruc
Re

=>crurik
1) Je n'ai pas joint de fichier
2) Tant mieux si le code VBA fonctionne, je n'aurai pas besoin de le tester lundi ;)
*:Et comme on n'est toujours pas lundi, bah tu devras attendre lundi ou qu'un autre XLDnaute prenne le relais. ;)

*: ou faire en sorte qu'Outlook soit ouvert
(comme évoqué précédemment ...)
Quand je bosse mon Outlook est ouvert dès que j'ouvre mon PC.
Et je ferme Outlook avant d'éteindre mon PC et ou de faire un WINDOWS+L sur ma session avant de débaucher.
 

crurik

XLDnaute Nouveau
ton fichier marche que si outlook et en arrière plans donc il me faudrait la même chose mais avec l'ouverture d' outlook si celui-ci est fermer.
je te remercie de
Re

=>crurik
1) Je n'ai pas joint de fichier
2) Tant mieux si le code VBA fonctionne, je n'aurai pas besoin de le tester lundi ;)
*:Et comme on n'est toujours pas lundi, bah tu devras attendre lundi ou qu'un autre XLDnaute prenne le relais. ;)

*: ou faire en sorte qu'Outlook soit ouvert
(comme évoqué précédemment ...)
Quand je bosse mon Outlook est ouvert dès que j'ouvre mon PC.
Et je ferme Outlook avant d'éteindre mon PC et ou de faire un WINDOWS+L sur ma session avant de débaucher.
Je te remercie d'avoir pris autant de temps avec moi pour résoudre le fichier excel que j'avais besoin ainsi qu' aux aide que j'ai pu avoir sur le forum j'ai enfin trouver ce qu'il me fallait.

ps: jetait pointilleux pour que excel s'ouvre automatiquement car a mon taf tout le monde n'est pas très alaise avec l'informatique et donc si Outlook pas ouvert en arrière plan les personne aurait envoyer le mail et il serait resté bloquer dans la boite d'envoie.
 

Discussions similaires

Réponses
2
Affichages
229
Réponses
2
Affichages
113
Réponses
4
Affichages
530

Statistiques des forums

Discussions
312 185
Messages
2 086 020
Membres
103 097
dernier inscrit
Benduch