Add outlook signature with excel VBA

29 Views Asked by At

Here's my code. It all works really well but i can't manage to find how to add automatically the only signature I have in outlook. Even chat-gpt 4 doesn't find the answer. If a real warrior is out there with the solution please explain it to me. Thank you and have a nice day!

Sub CreerBrouillonOutlook()

Dim OutlookApp As Object
Dim OutlookMail As Object
Dim ws As Worksheet
Dim wsListeEnvoi As Worksheet
Dim i As Long
Dim derniereligne As Long
Dim destinataires As String
Dim destinatairesDico As Object
Dim destinatairesCC As String
Dim destinatairesCCDico As Object
Dim derniereLigneUtilisateur As Long
Dim message As String

' Spécifiez la feuille de calcul active
Set ws = ActiveSheet

' Obtenez le numéro de la dernière ligne avec des données
derniereligne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' Crée une instance d'Outlook
Set OutlookApp = CreateObject("Outlook.Application")

' Crée un dictionnaire pour stocker les destinataires uniques
Set destinatairesDico = CreateObject("Scripting.Dictionary")

' Crée un dictionnaire pour stocker les destinataires CC uniques
Set destinatairesCCDico = CreateObject("Scripting.Dictionary")

' Feuille "Liste d'envoi"
Set wsListeEnvoi = ThisWorkbook.Sheets("Liste d'envoi")

' Boucle à travers chaque ligne dans la colonne des responsables (par exemple, colonne B)
For i = 8 To derniereligne
    ' Vérifiez si les deux premières lettres de la cellule de la colonne P sont "1 " ou "6 "
    If (Left(ws.Cells(i, 16).Value, 2) = "1 " Or Left(ws.Cells(i, 16).Value, 2) = "6 ") _
        And (ws.Cells(i, 1).Interior.Color = RGB(255, 255, 255) Or ws.Cells(i, 1).Interior.Color = RGB(255, 153, 204)) Then

        ' Vérifiez si l'adresse e-mail est présente dans la colonne B
        If ws.Cells(i, 18).Value <> "" Then
            ' Utilisez la fonction Replace pour traiter les noms séparés par des barres verticales
            Dim nomsAvecBarreVerticale As String
            nomsAvecBarreVerticale = Replace(ws.Cells(i, 18).Value, " | ", ";")
            
            ' Utilisez la fonction Split pour traiter les noms séparés par des points-virgules
            Dim noms As Variant
            noms = Split(nomsAvecBarreVerticale, ";")
            
            ' Ajoutez chaque nom au dictionnaire après le remplacement
            Dim nom As Variant
            For Each nom In noms
                nom = Trim(nom) ' Supprimez les espaces éventuels
                If Not destinatairesDico.Exists(nom) Then
                    destinatairesDico.Add nom, nom
                End If
            Next nom
        End If
    End If
Next i

' Boucle à travers chaque ligne dans la colonne D de la feuille "Liste d'envoi"
i = 4
Do While wsListeEnvoi.Cells(i, 4).Value <> "" ' Continue jusqu'à la première ligne vide dans la colonne D
    ' Vérifiez si l'adresse e-mail est présente dans la colonne D
    If wsListeEnvoi.Cells(i, 4).Value <> "" Then
        ' Ajoutez chaque destinataire CC au dictionnaire
        Dim destinataireCC As String
        destinataireCC = Trim(wsListeEnvoi.Cells(i, 4).Value)
        If Not destinatairesCCDico.Exists(destinataireCC) Then
            destinatairesCCDico.Add destinataireCC, destinataireCC
        End If
    End If
    i = i + 1
Loop

' Construire le message à partir des colonnes E et F de la feuille "Liste d'envoi"
message = "Bonjour, " & vbCrLf & vbCrLf & _
          "" & wsListeEnvoi.Cells(5, 5).Value & vbCrLf & _
          "" & wsListeEnvoi.Cells(4, 6).Value & vbCrLf & _
          "" & wsListeEnvoi.Cells(6, 5).Value & vbCrLf & _
          "" & wsListeEnvoi.Cells(5, 6).Value & vbCrLf & vbCrLf _

' Crée une instance d'un nouvel e-mail
Set OutlookMail = OutlookApp.CreateItem(0)

' Spécifiez le sujet et le corps du courriel
OutlookMail.Subject = ws.Cells(1, 1).Value ' Utilisez la première ligne de la colonne A comme sujet
OutlookMail.Body = message

' Ajoutez les destinataires uniques au champ "À"
OutlookMail.To = Join(destinatairesDico.Items, ";")

' Ajoutez les destinataires CC uniques au champ "CC"
OutlookMail.CC = Join(destinatairesCCDico.Items, ";")

' Ajoutez le document actuel en pièce jointe
OutlookMail.Attachments.Add ActiveWorkbook.FullName

' Affichez le brouillon dans Outlook
OutlookMail.Display

' Libérer la mémoire
Set OutlookApp = Nothing
Set OutlookMail = Nothing
Set destinatairesDico = Nothing
Set destinatairesCCDico = Nothing

End Sub

gpt4 and didnt work. I expect to see my signature

0

There are 0 best solutions below