Création de mail avec une adresse expéditrice différente

Bonjour,

En gestion de bien immobilier, je me suis amusé à créer un fichier excel qui va me générer chaque mois les factures pour les différents clients et me créer un brouillon d'adresse mail contenant cette facture pour vérification avant envoi.
Seulement voila, cette activité étant une activité secondaire, je souhaiterai expédier ces mails via une adresse @gmail.com. Celle-ci est connecté sur outlook mais n'est pas le compte principal (le compte principal étant celui d'une autre activité relié à un compte microsoft office 365 business).
J'ai essayé plusieurs manière, y compris avec l'aide de Chat GPT mais à chaque fois l'adresse mail expéditrice est celle de mon compte principal et non celle que je souhaiterai utiliser. Pour l'heure je me suis résigné à faire la manip de changer l'adresse expéditrice en manuel à chaque fois, mais me connaissant, j'ai peur d'une fois ne plus y penser et envoyer ces factures avec la mauvaise adresse. Je vous donne mon code ici :

Sub GenererFacturesEtEnregistrerPDF()
    Dim wsBDD As Worksheet
    Dim wsFacture As Worksheet
    Dim i As Long
    Dim LastRow As Long
    Dim SavePath As String
    Dim NomFichier As String
    Dim numeroFacture As String
    Dim lot As String
    Dim moisSuivant As Integer
    Dim outlookApp As Object
    Dim outlookNamespace As Object
    Dim outlookMail As Object
    Dim outlookAccount As Object ' Représente un compte de messagerie Outlook

    ' Définir les feuilles de calcul
    Set wsBDD = ThisWorkbook.Sheets("BDD Clients")
    Set wsFacture = ThisWorkbook.Sheets("Facture")

    ' Initialiser l'application Outlook
    On Error Resume Next
    Set outlookApp = CreateObject("Outlook.Application")
    On Error GoTo 0

    If outlookApp Is Nothing Then
        MsgBox "Outlook n'est pas disponible sur cet appareil.", vbExclamation
        Exit Sub
    End If

    ' Obtenir l'objet Namespace d'Outlook
    Set outlookNamespace = outlookApp.GetNamespace("MAPI")

    ' Identifier le compte de messagerie spécifié
    Dim defaultAccount As Object
    For Each defaultAccount In outlookNamespace.Accounts
        If defaultAccount.SmtpAddress = "@ADRESSE MAIL QUE JE SOUHAITE UTILISER" Then
            ' Utiliser ce compte comme compte par défaut
            Set outlookAccount = defaultAccount
            Exit For
        End If
    Next defaultAccount

    ' Vérifier si le compte a été trouvé
    If outlookAccount Is Nothing Then
        MsgBox "Le compte ADRESSE MAIL QUE JE SOUHAITE UTILISER n'a pas été trouvé dans Outlook.", vbExclamation
        Exit Sub
    End If

    ' Boucle à travers les lignes de la base de données des clients
    LastRow = wsBDD.Cells(wsBDD.Rows.Count, "A").End(xlUp).Row
    For i = 2 To LastRow ' Commencer à la ligne 2 pour éviter les titres

        ' Copier les données du client sur la feuille de facture
        wsFacture.Range("F3").Value = wsBDD.Cells(i, 1).Value ' Entreprise qui facture
        wsFacture.Range("B17").Value = wsBDD.Cells(i, 2).Value ' Objet
        wsFacture.Range("B18").Value = wsBDD.Cells(i, 3).Value ' Lieu
        wsFacture.Range("F12").Value = wsBDD.Cells(i, 4).Value ' Nom du client
        wsFacture.Range("A22").Value = wsBDD.Cells(i, 8).Value ' Produit 1
        wsFacture.Range("F22").Value = wsBDD.Cells(i, 9).Value ' Unité produit 1
        wsFacture.Range("G22").Value = wsBDD.Cells(i, 10).Value ' Prix produit 1
        wsFacture.Range("A23").Value = wsBDD.Cells(i, 11).Value ' Produit 2
        wsFacture.Range("F23").Value = wsBDD.Cells(i, 12).Value ' Unité produit 2
        wsFacture.Range("G23").Value = wsBDD.Cells(i, 13).Value ' Prix produit 2
        wsFacture.Range("A24").Value = wsBDD.Cells(i, 14).Value ' Produit 3
        wsFacture.Range("F24").Value = wsBDD.Cells(i, 15).Value ' Unité produit 3
        wsFacture.Range("G24").Value = wsBDD.Cells(i, 16).Value ' Prix produit 3

        ' Générer le numéro de facture
        lot = wsBDD.Cells(i, 17).Value ' Récupérer la valeur de la colonne "Lot"
        moisSuivant = Month(DateAdd("m", 1, Date)) ' Mois suivant
        If Not IsEmpty(lot) Then
            numeroFacture = lot & Year(Date) & " - " & moisSuivant
        Else
            numeroFacture = Year(Date) & " - " & moisSuivant
        End If

        ' Enregistrer le numéro de facture dans la feuille de facture
        wsFacture.Range("C11").Value = numeroFacture

        ' Enregistrer la facture au format PDF
        SavePath = "T:\Immobilier\Test" ' Chemin d'enregistrement des PDF
        NomFichier = wsFacture.Range("F12").Value & "_" & wsFacture.Range("B17").Value ' Nom du fichier PDF
        wsFacture.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=SavePath & "\" & NomFichier & ".pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

        ' Créer le brouillon de courrier électronique dans Outlook
        Set outlookMail = outlookApp.CreateItem(0) ' Créer un nouveau brouillon
        With outlookMail
            .SendUsingAccount = outlookAccount ' Utiliser le compte spécifié pour envoyer le courrier
            .To = wsBDD.Cells(i, 7).Value ' Adresse e-mail du client (colonne G)
            .Subject = NomFichier ' Objet du courrier
            .Body = "Bonjour," & vbCrLf & _
                    "Vous trouverez ci-joint votre facture concernant le loyer du mois suivant." & vbCrLf & _
                    "Cordialement," & vbCrLf & _
                    "MON NOM" & vbCrLf & _
                    "MON ENTREPRISE" & vbCrLf & _
                    "Tél : MON NUMERO"

            ' Ajouter le fichier PDF comme pièce jointe
            .Attachments.Add SavePath & "\" & NomFichier & ".pdf"

            .Display ' Ouvrir le brouillon pour envoyer manuellement
        End With
    Next i

    ' Nettoyer les objets
    Set wsBDD = Nothing
    Set wsFacture = Nothing

    MsgBox "Les factures ont été générées et les brouillons de courrier électronique ont été créés avec succès !", vbInformation
End Sub

Bonjour,

cette instruction serait meilleure :

Set .SendUsingAccount = outlookAccount ' Utiliser le compte spécifié pour envoyer le courrier

Je pense avoir trouver la solution sur un topic qui traite déjà du sujet :

https://forum.excel-pratique.com/excel/comment-changer-l-expediteur-d-un-e-mail-en-vba-171724

Désolé pour le doublon et merci d'avoir jeter un coup d'oeil

Rechercher des sujets similaires à "creation mail adresse expeditrice differente"