1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
Option Explicit
Sub MailOutlook(mailCP As String, mailcc As String, objet As String, body As String)
' VARIABLES
' mailOutlook : Adresse email du destinataire
' objet : Objet de l'email
' body : Message de l'email
'AVANT DE LANCER CETTE MACRO, Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
'Il est possible de vérifier avant l'exécution de la macro si la référence est activée ou non, et de l'activer si ce n'est pas le cas
Dim ol As New Outlook.Application
Dim Olmail As MailItem
Dim Texte As String
Dim onglet As String
Dim plagetableau As String
Dim fin As Long
Dim marche As Integer
'Texte = Sheets("Devis passant en CEC").Range("B2:B6")
'Texte = Join(Application.Transpose(Sheets("Devis passant en CEC").Range("B2:B6").Value), vbLf)
For marche = 16 To 21
Sheets("Paramètres").Select
If IsEmpty(Cells(marche, "C")) = False Then
mailCP = Sheets("Paramètres").Cells(marche, "E").Value
mailcc = Sheets("Paramètres").Cells(marche, "G").Value
Sheets(UserForm1.getOnglet).Select
Range(UserForm1.getplagetableau).Select
Selection.AutoFilter
ActiveSheet.Range("$B$2:$I" & UserForm1.getfin).AutoFilter Field:=1, Criteria1:=Sheets("Paramètres").Cells(marche, 3).Value
'ActiveSheet.Range("$B$2:$I" & fin).AutoFilter Field:=1, Criteria1:=Sheets("Paramètres").Cells(marche, 3).Value
Selection.Copy
Set ol = New Outlook.Application
Set Olmail = ol.CreateItem(olMailItem)
With Olmail
.Subject = objet & Sheets("Paramètres").Cells(marche, "C").Value
' .body = UserForm1.getbody & vbCrLf & vbCrLf & Selection.Paste '& vbCrLf & Texte
.body = UserForm1.getbody & vbCrLf & vbCrLf '& Selection.Paste '& vbCrLf & Texte
.To = mailCP
.cc = mailcc
.Display
' On attend 1 seconde afin d'être sûr qu'Outlook soit bien lancé (en fonction de la rapidité de l'ordinateur utilisé)
Attendre 1
' On se place à la fin du message
SendKeys "{PGDN}", True
' On insère la signature
SendKeys "{ENTER}", True
SendKeys "%S", True
SendKeys "S", True
SendKeys "E", True
SendKeys "{ENTER}", True
End With
End If
Sheets(UserForm1.getOnglet).Select
Range(UserForm1.getplagetableau).Select
ActiveSheet.ShowAllData
Next marche
End Sub
Sub Attendre(Secondes As Integer)
' Cette procédure temporise pendant le nombre de secondes qu'on lui transmet en argument
Dim Début As Long, fin As Long, Chrono As Long
Début = Timer
fin = Début + Secondes
Do Until Timer >= fin
DoEvents
Loop
End Sub
Sub EnvoyerMail()
Load UserForm1
UserForm1.Show
'Call MailOutlook
'MailOutlook ActiveSheet.Range("E16"), ActiveSheet.Range("G16"), ActiveSheet.Range("C7"), ActiveSheet.Range("E25")
End Sub |
Partager