Microsoft 365 Générer mail via Excel

halecs93

XLDnaute Impliqué
Bonjour,

J'ai bricolé un code VBA qui me permet de générer et d'envoyer automatiquement un mail. De chez moi, ça semble fonctionner, dans la mesure où j'utilise outlook.

Mais, j'ai voulu l'utiliser au niveau pro, et là ça bug... en effet, c'est outlook en ligne qui est utilisé : https://outlook.office.com/mail/ et de plus, via Sharepoint.

Y aurait-il un moyen de modifier mon code ?

VB:
Option Explicit

Sub EnvoiMail()
    Dim ListeDest() As Variant
    Dim ListeComment() As Variant
    Dim i As Long
    Dim oMsgApp As Object
    Dim oMsg As Object
    Dim ws As Worksheet
    Dim DestName As String
    Dim DestEmail As String
    Dim PDFPath As String

    'Définir la feuille de calcul Feuil1
    Set ws = ThisWorkbook.Sheets("mail")

    'Obtenir le nom de l'onglet actif
    DestName = ActiveSheet.Name

    'Rechercher le nom du destinataire dans la colonne A de la Feuil1
    DestEmail = ""
    For i = 1 To ws.Cells(ws.Rows.count, "A").End(xlUp).Row
        If ws.Cells(i, "A").Value = DestName Then
            DestEmail = ws.Cells(i, "B").Value
            Exit For
        End If
    Next i

    'Vérifier si l'adresse e-mail du destinataire a été trouvée
    If DestEmail = "" Then
        MsgBox "Aucune adresse e-mail trouvée pour le destinataire " & DestName, vbExclamation
        Exit Sub
    End If

    'Générer le fichier PDF de la feuille active
    PDFPath = ThisWorkbook.Path & "\" & DestName & ".pdf"
    With ws.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = False
    End With
    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFPath, _
                            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                            IgnorePrintAreas:=False, OpenAfterPublish:=False

    'Créer une instance de l'application Outlook
    Set oMsgApp = CreateObject("Outlook.Application")

    'Remplir les tableaux avec les adresses e-mail et les commentaires
    ListeDest() = Array(DestEmail)
    ListeComment() = Array(ws.Range("B" & i).Value) ' Supposons que les commentaires soient également dans la Feuil1 en colonne B

    'Envoyer des e-mails aux destinataires
    For i = LBound(ListeDest) To UBound(ListeDest)
        Set oMsg = oMsgApp.CreateItem(0)
        With oMsg
            .To = ListeDest(i)
            .Attachments.Add PDFPath ' Attache le fichier PDF directement au mail
            .Subject = ThisWorkbook.Sheets("mail").Range("G1").Value
            .Body = "Bonjour," & Chr(10) & Chr(13) & _
                ThisWorkbook.Sheets("mail").Range("G2").Value & " " & Format(ThisWorkbook.Sheets("mail").Range("J1").Value, "dd mmm yyyy") & Chr(10) & Chr(13)

            .Send
        End With
        Set oMsg = Nothing
    Next

    'Quitter l'application Outlook
    oMsgApp.Quit
    Set oMsgApp = Nothing

    'Afficher un message de confirmation avec l'adresse e-mail
    MsgBox "Mail envoyé à " & DestEmail, vbInformation
End Sub


Un grand merci
 

Pièces jointes

  • PLANNING - MODELE 2024 - mail.xlsm
    64.4 KB · Affichages: 7

patricktoulon

XLDnaute Barbatruc
bonjour
tu ne peux pas utiliser outlook web en vba il n'y a pas de com pour ça
ensuite je vois dans ton code qu'en fait tu utilise un object outlook l'application
donc déjà là par rapport à ton discours je suis Out
ensuite je vois aussi que tu crée et envoie un mailitem a chaque tour de boucle sur les destinataire
on fait pas comme ça (on envoie a plusieurs destinataire c'est tout)
il n'a pas de sens ce code
 

halecs93

XLDnaute Impliqué
bonjour
tu ne peux pas utiliser outlook web en vba il n'y a pas de com pour ça
ensuite je vois dans ton code qu'en fait tu utilise un object outlook l'application
donc déjà là par rapport à ton discours je suis Out
ensuite je vois aussi que tu crée et envoie un mailitem a chaque tour de boucle sur les destinataire
on fait pas comme ça (on envoie a plusieurs destinataire c'est tout)
il n'a pas de sens ce code
Comme je l'ai dit.... ce code est bricolé avec ce que j'ai pu glaner de ci de là...

Le but est d'envoyer le planning de la feuille active à la seule personne concernée, et donc destinataire.
 

Discussions similaires

Réponses
7
Affichages
592

Statistiques des forums

Discussions
315 109
Messages
2 116 316
Membres
112 716
dernier inscrit
jean1234