Public Sub envoi_mail() ' corps du message Dim corps As String Dim NumColonne Dim NumLigne As Integer NumLigne = 4 'première ligne d'agence Dim olApp As Object Set olApp = CreateObject("Outlook.Application") ' pour chaque agence, on cherche quelles colonnes sont en retard While Not Sheets("Vérif").Range("A" & NumLigne).Value = "" 'le corps du message est contenu dans la variable "corps" corps = "Mesdames et Messieurs, Veuillez trouver ci-après la liste des vérifications périodiques en retard dans votre agence. Si aucune liste présente ci-dessous, vos visites périodiques sont donc à jour. " For NumColonne = 2 To 11 Dim ligne As Integer ligne = 2 While Not Sheets(Worksheets.Count).Cells(ligne, NumColonne) = "" If Sheets(Worksheets.Count).Cells(ligne, NumColonne) = Sheets("Vérif").Range("A" & NumLigne).Value Then corps = corps & Sheets(Worksheets.Count).Cells(1, NumColonne) & " " End If ligne = ligne + 1 Wend Next NumColonne corps = corps & "Merci de bien vouloir réguler la situation, si nécessaire, dans les plus brefs délais et/ou nous transmettre une copie du rapport de vérification. Merci de vérifier les dates de vos prochaines visites. Cordialement, Service QSE Message généré automatiquement, pour toute remarque appeler le service prévention au 04.74.08.90.64" If Not corps = "" Then Dim destinataire1 As String Dim destinataire2 As String Dim destinataire3 As String destinataire1 = Sheets("adresses mail").Cells(NumLigne - 3, 2) destinataire2 = Sheets("adresses mail").Cells(NumLigne - 3, 3) destinataire3 = Sheets("adresses mail").Cells(NumLigne - 3, 4) With olApp.CreateItem(0) .Recipients.Add destinataire1 .Recipients.Add destinataire2 .Recipients.Add destinataire3 .Subject = "retard vérification(s) périodique(s)" .htmlbody = corps .ReadReceiptRequested = False Call .Send End With End If NumLigne = NumLigne + 1 Wend Set olApp = Nothing End Sub Sub Vérification_générale() Dim NumLigne As Integer Dim NumColonne As Integer Dim j As Integer 'création d'une nouvelle feuille contenant les retards nom = "retard au " & DateTime.Date$ 'nom de la nouvelle feuille ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count) 'ajoute la nouvelle feuille à la suite des autres ActiveSheet.Name = nom ActiveSheet.Columns("A:K").Select Selection.ColumnWidth = 15.71 'largeur de la colonne de la nouvelle feuille 'je mets les noms aux colonnes ActiveSheet.Range("B1").Value = Sheets("Vérif").Range("B1").Value ActiveSheet.Range("c1").Value = Sheets("Vérif").Range("c1").Value ActiveSheet.Range("d1").Value = Sheets("Vérif").Range("d1").Value ActiveSheet.Range("e1").Value = Sheets("Vérif").Range("e1").Value ActiveSheet.Range("f1").Value = Sheets("Vérif").Range("f1").Value ActiveSheet.Range("g1").Value = Sheets("Vérif").Range("g1").Value ActiveSheet.Range("h1").Value = Sheets("Vérif").Range("h1").Value ActiveSheet.Range("i1").Value = Sheets("Vérif").Range("i1").Value ActiveSheet.Range("j1").Value = Sheets("Vérif").Range("j1").Value ActiveSheet.Range("k1").Value = Sheets("Vérif").Range("k1").Value ActiveSheet.UsedRange.Rows(1).EntireRow.Select Selection.Orientation = 90 Selection.RowHeight = 97.5 Selection.WrapText = True 'ActiveSheet est la nouvelle feuille 'pour chaque colonne For NumColonne = 2 To 11 NumLigne = 4 'première ligne d'agence ' tant qu'il y a des agences dans la colonne While Not Sheets("Vérif").Range("A" & NumLigne).Value = "" If Not Sheets("Vérif").Cells(NumLigne, NumColonne).Value = "" Then 'je test si la case est vide, puisque dans ce cas le calcul ne doit pas être fait 'pour chaque agence, je test la date If Sheets("Vérif").Range("L27").Value > Sheets("Vérif").Cells(NumLigne, NumColonne).Value + Sheets("Vérif").Cells(3, NumColonne).Value Then 'si la date est passé, je change la couleur de la case Sheets("Vérif").Cells(NumLigne, NumColonne).Interior.ColorIndex = 3 j = 2 'puis je met le nom de l'agence en question dans le tableau de la feuil3 à la première case vide While Not ActiveSheet.Cells(j, NumColonne).Value = "" j = j + 1 Wend ActiveSheet.Cells(j, NumColonne).Value = Sheets("Vérif").Range("A" & NumLigne).Value End If End If NumLigne = NumLigne + 1 ' j'incrémente la variable de boucle Wend Next NumColonne Call ActiveSheet.Range("A1").Select Call Feuil1.envoi_mail End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic Sub envoi_mail()