XL 2019 Envoi mail : Condition dans un HTMLBODY

Cheyenne_2021

XLDnaute Junior
Bonjour,

Un fichier ; un des onglets sert à contrôler la présence ou non des documents demandés. 10 maximum. Pour chaque personne qui a au moins 1 document manquant, envoi d’un mail avec le nom de la pièce manquante et le libelle adéquat. Ce qui veut dire que chaque mail va contenir un nbre de lignes indiquant les pièces manquantes, diffèrent.

Envoi du mail :OK

PB : Si toutes les lignes ne sont pas remplies, ca créer des lignes blanches.

Je ne peux pas vous envoyer le fchier, il est énorme, je vous mets le code.
Merci,


VB:
Public Nom As String
Public Prénom As String
Public NumLC As Integer
Public Ad As Integer
Public Mail As String
Public Mail_encadrant As String
Public Repertoire_Conv As String
Public Nom_convention As String



 Sub Envoi_PJ_Manquantes()

' Envoi de mail à l'agent , en cas de PJ manquantes ou en manque de détail
'
'GARDE / ASSU / INTER / PJ_Med / Piece_TW = "ATT"
'N° de poste dans onglet n° 4 : PC pas rempli

'Critère : Au moins 1 colonne = " ATT" et le statut_PJ diffèrent de " Mail PJ envoyé "
'Contrôles des heures : Mail à envoyer si msg d'erreur : C7 : C8 / C9 / C10 = PB
'
' Une fois la convention envoyée, l'etat devient : "Mail PJ manquantes envoyé"
'Tableau : T_TraitDi
'
 Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False

 Dim ObjOutlook As Outlook.Application
 Dim CompteOutlook As Account
 Dim oMailItem As Outlook.MailItem
 'Dim myAttachlents As Outlook.Attachments
        
        
'
 
'
Dim r As Integer
Dim Ligne1 As String
Const Cr = "<br>", Dr = Cr & Cr

PJ_nbre = Range("T_PJ_Erreur").Rows.Count

C_nbre = Range("T_TraitDi").Rows.Count
    
       'For r = 1 To C_nbre
       For r = 307 To 309
       'Initialisation de la 3eme colonne et des lignes
        For e = 1 To PJ_nbre
        Range("T_PJ_erreur[Manquant]").Rows(e).Value = ""
        Next
        Ligne1 = ""
        Ligne2 = ""
        Ligne3 = ""
        Ligne4 = ""
        Ligne5 = ""
        Ligne6 = ""
        Ligne7 = ""
        Ligne8 = ""
        Ligne8 = ""
        Ligne10 = ""
        Ad = 0
        'MsgBox ("final : " & Worksheets("5- Edition convention").Range("T_Convention[Final]").Rows(R))
        'MsgBox ("top confirm : " & Worksheets("5- Edition convention").Range("T_Convention[confirm]").Rows(R))
        'MsgBox ("nom : " & Worksheets("2- Traitement des DI").Range("T_Traitdi[Nom]").Rows(r))
        'Critères :
        '--------
       If Worksheets("2- Traitement des DI").Range("T_TraitDi[statut_PJ]").Rows(r) <> "Mail PJ manquante envoyé" Then
      '  Colonne 1
        If Worksheets("2- Traitement des DI").Range("T_TraitDi[GARDE]").Rows(r) = "ATT" Then
         Range("T_PJ_erreur[Manquant]").Rows(1).Value = "X"
           ' MsgBox ("1er colonne :" & Worksheets("PARAM").Range("T_PJ_Erreur[Manquant]").Rows(1))
           ' MsgBox ("1er colonne :" & Worksheets("PARAM").Range("T_PJ_Erreur[Libelle_mail]").Rows(1))
           ' MsgBox ("1er colonne :" & Worksheets("PARAM").Range("T_PJ_Erreur[PJ_PB]").Rows(1))
         Ligne1 = Worksheets("PARAM").Range("T_PJ_Erreur[PJ_PB]").Rows(1) & " : " & Worksheets("PARAM").Range("T_PJ_Erreur[Libelle_mail]").Rows(1)
        End If
        '  Colonne 2
         If Worksheets("2- Traitement des DI").Range("T_TraitDi[INTER]").Rows(r) = "ATT" Then
         Range("T_PJ_Erreur[Manquant]").Rows(3) = "X"
         Ligne3 = Range("T_PJ_Erreur[PJ_PB]").Rows(3) & " : " & Range("T_PJ_Erreur[Libelle_mail]").Rows(3)
        ' MsgBox ("Ligne3 :" & Ligne3)
        End If
         '  Colonne 3
        If Worksheets("2- Traitement des DI").Range("T_TraitDi[ASSU]").Rows(r) = "ATT" Then
         Range("T_PJ_Erreur[Manquant]").Rows(2) = "X"
         Ligne2 = Range("T_PJ_Erreur[PJ_PB]").Rows(2) & " : " & Range("T_PJ_Erreur[Libelle_mail]").Rows(2)
    '    MsgBox ("Ligne2 :" & Ligne2)
        End If
          ' Mails
          Mail = Worksheets("2- Traitement des DI").Range("T_TraitDi[Email]").Rows(r)
         ' Mail_encadrant = Worksheets("T_TraitDi").Range("T_TraitDi[Mail_encadrant]").Rows(r)
          Nom = Worksheets("2- Traitement des DI").Range("T_TraitDi[Nom]").Rows(r)
         Prénom = Worksheets("2- Traitement des DI").Range("T_TraitDi[Prénom]").Rows(r)
        
        '  Si une des adresses @mail n'est pas correcte
       '  ----------------------------------------------
         If (InStr(1, Mail, "@") = 0 And Mail <> "") Then
                ' Ad = 1
        Call Controle_confirm
        '
        GoTo Itera
         End If
         '
          ' N° de ligne
           NumLi = Worksheets("2- Traitement des DI").Range("T_TraitDi[NumL]").Rows(r)
           '
           Nom = Worksheets("2- Traitement des DI").Range("T_TraitDi[Nom]").Rows(r)
           Prénom = Worksheets("2- Traitement des DI").Range("T_TraitDi[Prénom]").Rows(r)
          
          commentaire = Worksheets("2- Traitement des DI").Range("T_TraitDi[Commentaires_PJ]").Rows(r)
         'Expediteur
          Expediteur = Worksheets("PARAM").Range("Adresse_Envoi").Value
          'Expediteur =
          ' signature
          Signature = "XXXXXX " & Cr & "SERVICE DES PERSONNELS BIATS" & Cr & "Ligne directe : 9999999 "
        
          ' presentation mail
          Demande_confirm = "  " & _
                        "  Veuillez trouver ci-joint, pour information, la liste des pièces manquantes. " & _
                        "                                                         "
         '
       '
        Set ObjOutlook = New Outlook.Application
        With ObjOutlook.CreateItem(olMailItem)
            '
            .To = Mail
            .Subject = "pièces manquantes pour le dossier de télétravail   "
            .CC = Mail_encadrant
           ' .SentOnBehalfOfName = "XXXXXX"
            .SentOnBehalfOfName = Expediteur
          '
          '   ' If Ligne1 <> "", then Ligne1 Endif & Dr & _
            .BodyFormat = olFormatRichText
            .HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>" & _
                        "Bonjour " & Prénom & " " & Nom & Dr & _
                        Demande_confirm & Dr & _
                        Ligne1 & Dr & _
                        Ligne2 & Dr & _
                        Ligne3 & Dr & _
                        "Vous en souhaitant bonne réception.  " & Dr & _
                        "Cordialement." & Cr & Signature
                      
                        
          '  .Display True
            .Display
           '.Send
           ' Apres envoi du mail, chgt de l'etat pour que la convention ne soit envoyee qu'une seule fois
            NumeroL = Application.Match(NumLi, Range("T_TraitDi[NumL]"), 0)
            'NumeroL2 = Application.Match(NumLi, Range("T_commission[NumL]"), 0) ' n° de ligne dans le tabaleau Convention correspondant au numl de convention
            col_etat = Worksheets("2- Traitement des DI").ListObjects("T_TraitDi").ListColumns("statut_PJ").Index
            Worksheets("2- Traitement des DI").ListObjects("T_TraitDi").DataBodyRange(NumeroL, col_etat).Value = "Mail PJ manquantes envoyé"
            
            
            
        End With
        Set ObjOutlook = Nothing
        End If
Itera:
    Next
    
'
Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic

End Sub
us envoyer le fichier, il est bcp trop gros, je vous envoie ma macro.

Peut-on insérer une condition dans le HTMLBody ?
 

fanch55

XLDnaute Barbatruc
Bonjour,
proposition en aveugle :
VB:
            .HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>" & _
                        "Bonjour " & Prénom & " " & Nom & Dr & _
                        Demande_confirm & Dr & _
                        IIf(Ligne1 = "", "", Ligne1 & Dr) & _
                        IIf(Ligne2 = "", "", Ligne2 & Dr) & _
                        IIf(Ligne3 = "", "", Ligne3 & Dr) & _
                        "Vous en souhaitant bonne réception.  " & Dr & _
                        "Cordialement." & Cr & Signature
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
313 283
Messages
2 096 813
Membres
106 752
dernier inscrit
Tahiri1976