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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
| Sub EnvoiMailRelanceDateReal()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim fs As Object
Dim f As Object
Dim adresse As String
Dim message As String
Dim sujet As String
Dim appOutlook As Outlook.Application
Dim TCD As Range, Cel As Range
Dim Plage As Range
Dim Var As String
Dim NbLg As Long
Dim NbLigFiltre As String
Dim Desti As Variant
Dim RDest As Range
'Si une erreur survient, on va à la ligne "errorHandler"
On Error GoTo errorHandler
Set RDest = Sheets(Feuil1.Name).Range("I2:I8")
For Each Desti In RDest
'MsgBox "Destinataire : " & Desti
NbLg = Range("B3").End(xlDown).Row
Feuil2.Select
ActiveSheet.Unprotect ("CTM1410")
Range("A3:V" & NbLg).AutoFilter Field:=14, Criteria1:="=" & Desti 'Tri sur destinataire de la liste en colonne I de la feuille 1
Range("A3:V" & NbLg).AutoFilter Field:=13, Criteria1:="=" 'Tri sur date de réalisation non renseignée
Range("A3:V" & NbLg).AutoFilter Field:=12, Criteria1:="<" & Format(Date, "mm/dd/yy") 'Tri sur date de fin d'exécution prévisionnelle dépassée
'MsgBox Desti & " - 1 - Verif Filtre"
Application.ScreenUpdating = False
ActiveSheet.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & "RelanceTravaux.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
ActiveSheet.Select
Application.ScreenUpdating = True
'MsgBox Desti & " - 2 - Verif Sauvegarde Fichier"
Set Plage = Range("A3:A" & Range("A1500").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
NbLigFiltre = (Application.Subtotal(3, ActiveSheet.Range("A:A")) - 2)
'MsgBox Desti & " - Nombre de cellules sélectionnées : " & (Application.Subtotal(3, ActiveSheet.Range("A:A")) - 2)
If NbLigFiltre = 0 Then
GoTo Next_Desti
Else
ActiveSheet.Unprotect ("CTM1410")
For Each Cel In Plage
Cells(Cel.Row, "u") = Format(Now(), "dd/mm/yyyy")
Var = Cells(Cel.Row, "o")
Next Cel
'MsgBox Desti & " - 3 - Verif Renseignement Cellule Date"
Set appOutlook = CreateObject("Outlook.Application")
If Not (appOutlook Is Nothing) Then
sujet = "URGENT - RELANCE : dates prévisionnelles d'interventions dépassées !" 'Définition du sujet du mail
adresse = Var 'Recherche l'adresse mail du destinataire
'MsgBox Desti & " - adresse mail : " & adresse
'Définition du message
message = "Bonjour, " & vbCrLf & vbCrLf & _
"Nous vous informons que les délais d'exécution prévisionnels communiqués concernant les demandes de travaux figurant dans le document ci-joint sont dépassés. " & vbCrLf & _
vbCrLf & "Merci de bien vouloir faire le nécessaire afin de régulariser ces demandes au plus vite et" & _
" également informer les services demandeur des raisons de ce retard et des nouveaux délais d'exécution." & vbCrLf & _
"Si les interventions ont été effectuées et qu'il s'agit d'un oubli de transmission, merci de bien vouloir nous retourner rapidement" & _
" les fiches 'bon de travaux' correspondantes dûment renseignées afin de clôturer les demandes concernées." & vbCrLf & vbCrLf & _
"Dans l'attente de vous lire," & vbCrLf & vbCrLf & _
"Bien cordialement," & vbCrLf & vbCrLf & _
"Le sécrétariat."
'Paramètres de l'application mail
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Subject = sujet
.To = adresse
.Attachments.Add (ThisWorkbook.Path & "\" & "RelanceTravaux.pdf")
.body = message
.send 'Envoi du mail
End With
End If
End If
'MsgBox Desti & " - 4 - Verif Envoi mail"
'Supprime_filtre_alternative
'ActiveSheet.Unprotect ("CTM1410")
'If ActiveSheet.FilterMode Then
ActiveSheet.Range("$A$2:$V$1500").AutoFilter Field:=12
ActiveSheet.Range("$A$2:$V$1500").AutoFilter Field:=13
ActiveSheet.Range("$A$2:$V$1500").AutoFilter Field:=14
'End If
'MsgBox Desti & " - 5 - Verif Réinitialisation Filtre"
'Supression du fichier transmis
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(ThisWorkbook.Path & "\" & "RelanceTravaux.pdf") 'supprimer le fichier
f.Delete
'MsgBox Desti & " - 6 - Verif Suppression Fichier"
Next_Desti:
Next Desti
ActiveSheet.Protect Password:="CTM1410", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingRows:=True, AllowFiltering:=True
errorHandler:
If Err.Number > 0 Then
'MsgBox "Envoi mail relance travaux : impossible d'effectuer cette opération !" & vbCrLf & "Merci de vérifier que Microsoft Outlook est bien ouvert !" & vbCrLf & _
"Aucun mail n'a été envoyé ! - Erreur n° : " & Err.Number, vbCritical, "Attention !"
End If
ShowAllData_fonctionne_a_priori_toujours
MsgBox "Les fichiers PDF correspondant ont été adressés aux différents destinataires !", vbInformation, "Félicitations !"
'Supression du fichier transmis
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(ThisWorkbook.Path & "\" & "RelanceDelai.pdf") 'supprimer le fichier
f.Delete
End Sub |
Partager