Néanmoins outlook lance une alerte de sécurité et il faut autoriser manuellement l'envoi de l'email. Savez-vous comment désactiver cette alerte ?
Deuxième question : est-il possible à partir de VBA de tester si outlook est ouvert, et si il ne l'est pas de le lancer au préalable (l'email n'est pas envoyé si outlook n'est pas ouvert).
Essayes la méthode CDO (qui te permet de ne pas utiliser Outlook et ne pas voir de message d'alerte)
Cherches dans les archives du forum pour plus de détails
ou va sur le site de Ron De Bruin
EDITION: Pour savoir si outlook est ouvert
Code:
Sub testOL()
Dim olApp As Object
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
On Error GoTo 0
MsgBox "Outlook" & IIf(Not olApp Is Nothing, " est ", " n'est pas ") & "ouvert.", vbCritical, "TEST OUTLOOK"
End Sub
La même macro que précédemment mais transformée en fonction pour l'utiliser dans une macro
Code:
Function OUTLOOKOUVERT() As Boolean
Dim olApp As Object
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
On Error GoTo 0
OUTLOOKOUVERT = IIf(Not olApp Is Nothing, True, False)
End Function
Code:
Sub test()
If OUTLOOKOUVERT Then
'ton code si outloook ouvert
MsgBox "ouvert"
Else
'ton code pour ouvrir Outlook
MsgBox "pas ouvert"
End If
End Sub
j'ai lu la méthode CDO de Ron de Bruin, je l'ai mise en place pour mon fichier, ça fonctionnait assez bien excepté lorsque j'utilise la méthode
VB:
.AddAttachment "c:/test.xls"
sur l'objet Msg pour envoyer le fichier en question.
Le message d'erreur m'indique que le fichier ne peut être envoyé car il est utilisé par un autre programme (probleme de read-only) ce qui est assez gênant : pouvez-vous m'aider ?
Il faut fermer le fichier que tu veux envoyer
Et si le code VB est dans ce fichier, il faut alors créer une copie temporaire du fichier (avec WorkBook.SaveAS)
et c'est cette copie qu'il faut envoyer par mail.