Re,
J'ai bien compris la structure, mais sans fichier, pas facile de trouver une solution adaptée.
Essaie tout de même ça :
1. Ouvre l'éditeur visual basic (VBE) en appuyant sur ALT+F11
2. Dans 'Outils' -> 'Références' -> Coche Microsoft Outlook 11.0 Object Library (ou un truc qui y ressemble)
3. Double-clique sur 'ThisWorkbook' et colle le code suivant :
Private Sub Workbook_Open()
Dim i As Long
Dim dest As String
For i = 1 To Range("E65000").End(xlUp).Row
dest = Cells(i, 2)
If Cells(i, 5) = 0 Then
Call MailAuto(dest)
End If
Next i
End Sub
4. Insère un nouveau module en faisant un clic droit sur 'ThisWorkbook' -> Insertion -> Module, puis colle le code suivant :
Sub MailAuto(dest As String)
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
On Error Resume Next
'Teste si une instance d'Outlook est déjà ouverte
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
'Outlook non ouvert, lancement d'une instance à partir du code
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If
'Crée un nouveau mail
Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
'Destinataire du mail
.To = dest
'Définit un mail en copie cachée
.CC = "tonmail@mail.com"
'Définit le sujet
.Subject = " "
'Le contenu du document est utilisé comme corps d'email
.Body = "Bonjour" & vbCrLf & "Veuillez trouver ci-joint le contrat demandé." & vbCrLf
'Pour attacher une pièce jointe
.Attachments.Add Source:="G:\titi.xls"
'Send permet d'envoyer le mail
.Send 'Display
End With
If bStarted Then
'Si Outlook est lancé depuis le code, on le ferme (??!)
oOutlookApp.Quit
End If
'Nettoie les variables
Set oItem = Nothing
Set oOutlookApp = Nothing
End Sub