IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

insertion du résutat d'une requete dans le corps d'un mail en VBA [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut insertion du résutat d'une requete dans le corps d'un mail en VBA
    Bonjour à Tous,

    Nouvelle question, peut on afficher le résultat d'une requête dans le corps d'un mail?

    J'ai fais la tentative ci-dessous sans résultat lignes 63 à 67
    Dans mon test la requête sSQL3 a 4 lignes dans résultat et souhaiterai les intégrer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    'Requete d'extraction des H24 pour insertion dans le mail
     
    Dim qry3 As DAO.QueryDef
    Dim sSQL3 As String
    Dim rst3 As DAO.Recordset
     
     
        sSQL3 = "SELECT T_employe_TMP.Coche_TMP, T_employe_TMP.Coche_H24_TMP, T_employe_TMP.Matricule_TMP, T_employe_TMP.IGG_TMP, T_employe_TMP.NOM_TMP, T_employe_TMP.PRENOM_TMP, T_employe_TMP.SERVICE_TMP, T_employe_TMP.SOCIETE_TMP" & _
                " FROM T_employe_TMP" & _
                " WHERE T_employe_TMP.Coche_H24_TMP;"
     
        Set dbs = CurrentDb
     
        Set rst3 = dbs.OpenRecordset(sSQL3, dbOpenSnapshot)
     
    'ci-dessous test de la requete avec affichage
     
        ' Set qry3 = CurrentDb.CreateQueryDef("MaRequête_H24", sSQL3)
        ' affiche la requete pour controle
        DoCmd.OpenQuery ("MaRequête_H24")
     
    'Création du mail
     
    Dim OutApp As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Recipient
    Dim Recipients As Recipients
     
     
    Set OutApp = CreateObject("Outlook.Application")
    Set objOutlookMsg = OutApp.CreateItem(olMailItem)
     
    'destinataire
    Set Recipients = objOutlookMsg.Recipients
    Set objOutlookRecip = Recipients.Add(Vmail_demandeur) 'mail du demandeur
     
    'copie
        objOutlookMsg.CC = Vmail_valideur & ";" & "toto@free.com" 'mail valideur et astreinte en copie
     
    objOutlookRecip.Type = 1
     
    'expéditeur
    objOutlookMsg.SentOnBehalfOfName = "toto@free.com"  ' insertion de l'adresse expéditrice
     
    'niveau d'importance
    objOutlookMsg.Importance = olImportanceHigh
     
    'objet du mail
    objOutlookMsg.Subject = " Votre demande d'accès HHE du : " & Vdate_demande & "  pour le week-end du : " _
    & Vdate_debut & " au " & Vdate_fin ' objet avec intégration des éléments
     
    'création du corps de texte
     
     
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Bonjour<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Votre demande est prise en compte sous le n°: " & Me.txt_ID_demande.Value & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Celui-ci est à rappeler pour tout échange inhérent à cette demande<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Vous trouverez en pièce joint le mail initial<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              If sSQL3 <> "" Then 'si la requete n'est pas vide.
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Les personnes ci-dessous n'ont pas été ajoutées à la liste HHE,<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "elles possèdent l'accès H24 pour l'immeuble demandé<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & sSQL3 "<br />"
              End If
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Bien cordialement<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Astreinte<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<FONT color=#FF0000> 00 00 00 00 00 </FONT><br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Tour X<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<FONT color=#FF0000> *Dans le cadre du RGPD, vos données (nom, prénom, matricule) sont conservées une année dans un fichier Excel avant d’être supprimées.</FONT><br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<img alt="html logo ODM" src="c:\ Outils\ODM\Fichiers de travail\Images\ODM.png"  width="214" height="50" />"<br >"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
     
    For Each objOutlookRecip In objOutlookMsg.Recipients
    objOutlookRecip.Resolve
    Next
     
    'objOutlookMsg.Send ' envoi le mai directement sans prévisuel
    objOutlookMsg.Display ' ouvre le mail avant envoi
     
    Set OutApp = Nothing
     
     
    'Ci-dessous vidage des coches de la table T_employe_TMP
     
            Dim UpSQL As String
     
            UpSQL = "UPDATE T_employe_TMP SET Coche_TMP = false, Coche_H24_TMP = false;"
     
            CurrentDb.Execute UpSQL, dbFailOnError
     
            'Fermeture et libération des variables objet
            rst1.Close
            rst2.Close
            Set rst1 = Nothing
            Set rst2 = Nothing
            Set dbs = Nothing
            MsgBox "Demande enregistrée", , "Création Demande HHE"
     
            'neutralise le bouton enregistrer pour éviter un doublon
            but_valider.Enabled = False
     
     
    End Sub
    Encore merci pour votre aide et Bel après midi

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 330
    Points : 19 569
    Points
    19 569
    Billets dans le blog
    65
    Par défaut En HTML
    Bonjour,

    Oui c'est possible, je l'avais fait il y a quelques temps pour une personne du forum Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Function EnvoiEmail(email)
        Dim oOutlook As Outlook.Application
        Dim oMail As Outlook.MailItem
        Dim Message As String
        Dim rst As DAO.Recordset
     
        Set rst = CurrentDb.OpenRecordset("T_Personne")
     
        Message = "Bonjour Madame, Monsieur <br>" & "<br>"
        Message = Message & "Merci de réceptionner vos commandes, afin de mettre les factures de vos fournisseurs en paiement." & "<br>" & "<br>"
        Message = Message & "Merci d'avance !" & "<br>" & "<br>"
        Message = Message & "Equipe Finance" & "<br>" & "<br>"
     
        headerHTML = "<head> <style> table, th, td {border: 1px solid black; border-collapse:collapse;}</style> </head><TABLE>" & Chr(10) & "<TR>"
     
        For j = 0 To rst.Fields.Count - 1
            headerHTML = headerHTML & "<TH>" & rst.Fields(j).Name
        Next j
     
        tableHTML = headerHTML
     
        Do Until rst.EOF
           tableHTML = tableHTML & "<TR>"
            For j = 0 To rst.Fields.Count - 1
                tableHTML = tableHTML & "<TD>" & rst.Fields(j).Value
            Next j
            rst.MoveNext
        Loop
     
        tableHTML = tableHTML & "</TABLE>"
     
        Message = Message & tableHTML
     
         'création d'un objet Outlook.Application
        Set oOutlook = CreateObject("Outlook.Application")
     
        'création d'un objet olMailItem
        Set oMail = oOutlook.CreateItem(0) ' olMailItem=0
        With oMail
            .Subject = "Réception des PO OBS à faire dans x-tracker " & nomClient ' colonne A
            .To = email
            .HTMLBody = Message
            .Send
            '....
        End With
     
        'oMail.Close (olSave)
        Set oMail = Nothing
     
        ' oOutlook.Quit
        Set oOutlook = Nothing
     
        rst.Close
        Set rst = Nothing
     
     
    End Function
    Ici il s'agit d'une table personne à adapter à vos besoins.

    De mon côté voilà ce que j'obtiens :

    Nom : email.png
Affichages : 72
Taille : 27,1 Ko

    Je transfère la discussion dans le forum VBA Access.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    Bonjour à Tous,

    merci User, je vais tenter de retranscrire cela.

    Belle journée🌞

  4. #4
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    J'ai tenté mais ça ne fonctionne pas, pas de message d'erreur donc à mon avis pas d'exécution

    J'ai déclaré des variables manquantes lignes 33 à 36, il y a peut être des erreurs.

    à partir de la ligne 73 j'ai mis le code adapté avec une condition pour le cas ou la requête serait vide.
    Mes notions étant limité, il n'est pas étonnant que cela ne fonctionne pas du premier coup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    envoi forum
     
     
    ...suite du code
     
    'Requete d'extraction des H24 pour insertion dans le mail
     
    Dim qry3 As DAO.QueryDef
    Dim sSQL3 As String
    Dim rst3 As DAO.Recordset
     
     
                sSQL3 = "SELECT T_employe_TMP.NOM_TMP, T_employe_TMP.PRENOM_TMP, T_employe_TMP.SERVICE_TMP, T_employe_TMP.SOCIETE_TMP" & _
                " FROM T_employe_TMP" & _
                " WHERE T_employe_TMP.Coche_H24_TMP;"
     
        Set dbs = CurrentDb
     
     
     
    'ci-dessous test de la requete avec affichage
     
        ' Set qry3 = CurrentDb.CreateQueryDef("MaRequête_H24", sSQL3)
        ' affiche la requete pour controle
        DoCmd.OpenQuery ("MaRequête_H24")
     
    'Création du mail de confirmation de prise en compte
     
    Dim OutApp As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Recipient
    Dim Recipients As Recipients
    Dim headerHTML As String
    Dim j As Variant
    Dim tableHTML As String
    Dim Message As String
     
    Set OutApp = CreateObject("Outlook.Application")
    Set objOutlookMsg = OutApp.CreateItem(olMailItem)
     
    'destinataire
    Set Recipients = objOutlookMsg.Recipients
    Set objOutlookRecip = Recipients.Add(Vmail_demandeur) 'mail du demandeur
     
    'copie
        objOutlookMsg.CC = Vmail_valideur & ";" & "toto@free.com" 'mail valideur et astreinte en copie
     
    objOutlookRecip.Type = 1
     
    'expéditeur
    objOutlookMsg.SentOnBehalfOfName = "toto@free.com"  ' insertion de l'adresse expéditrice
     
    'niveau d'importance
    objOutlookMsg.Importance = olImportanceHigh
     
    'objet du mail
    objOutlookMsg.Subject = " Votre demande d'accès HHE du : " & Vdate_demande & "  pour le week-end du : " _
    & Vdate_debut & " au " & Vdate_fin ' objet avec intégration des éléments
     
    'création du corps de texte
     
     
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Bonjour<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Votre demande est prise en compte sous le n°: " & Me.txt_ID_demande.Value & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Celui-ci est à rappeler pour tout échange inhérent à cette demande<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Vous trouverez en pièce joint le mail initial<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              'insertion des éventuels accès H24
              Set rst3 = dbs.OpenRecordset(sSQL3, dbOpenSnapshot)
              If Not rst3.EOF Then 'si le resultat de la requete n'est pas vide, insère le résultat sous forme de tableau
                objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Les personnes ci-dessous n'ont pas été ajoutées à la liste HHE,<br>"
                objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "elles possèdent l'accès H24 pour l'immeuble demandé<br>"
     
                headerHTML = "<head> <style> table, th, td {border: 1px solid black; border-collapse:collapse;}</style> </head><TABLE>" & Chr(10) & "<TR>"
     
                For j = 0 To rst3.Fields.Count - 1
                headerHTML = headerHTML & "<TH>" & rst3.Fields(j).Name
                Next j
     
                tableHTML = headerHTML
     
                Do Until rst3.EOF
                tableHTML = tableHTML & "<TR>"
                For j = 0 To rst3.Fields.Count - 1
                tableHTML = tableHTML & "<TD>" & rst3.Fields(j).Value
                Next j
                rst3.MoveNext
                Loop
     
                tableHTML = tableHTML & "</TABLE>"
     
                Message = Message & tableHTML
              End If
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Bien cordialement<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Gestion des Astreinte<br>"
              'met la ligne ci-dessous en rouge
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<FONT color=#FF0000> 00 00 00 00 00 </FONT><br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Tour X<br>"
              'met la ligne ci-dessous en rouge
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<FONT color=#FF0000> *Dans le cadre du RGPD, vos données (nom, prénom, matricule) sont conservées une année dans un fichier Excel avant d’être supprimées.</FONT><br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
    		  'insertion du logo mais ne fonctionne pas
              'objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<html><img alt="html_logo_ODM" src="c:\ODM\Fichiers de travail\Images\ODM.png"  width="214" height="50" '>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
     
    For Each objOutlookRecip In objOutlookMsg.Recipients
    objOutlookRecip.Resolve
    Next
     
    'objOutlookMsg.Send ' envoi le mai directement sans prévisuel
    objOutlookMsg.Display ' ouvre le mail avant envoi
     
    ...suite du code....

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 748
    Points : 14 774
    Points
    14 774
    Par défaut
    bonjour,
    tu alimentes la variable Message en ligne 95 mais tu ne l'utilises pas dans l'alimentation de HTMLBody
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    bonjour Tee_grandbois,

    Effectivement en relisant, j'ai merdé
    je revois ma copie

    merci

  7. #7
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    J'ai réussi
    merci ça fonctionne 🙏

    Voici le code, ça peut servir
    J'ai juste un souci c'est sur la ligne 111 ma syntaxe pour l'insertion du logo ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    ...suite du code
     
     
    'Requete d'extraction des H24 pour insertion dans le mail
     
    Dim qry3 As DAO.QueryDef
    Dim sSQL3 As String
    Dim rst3 As DAO.Recordset
    Dim headerHTML As String
    Dim j As Variant
    Dim tableHTML As String
     
                sSQL3 = "SELECT T_employe_TMP.NOM_TMP, T_employe_TMP.PRENOM_TMP, T_employe_TMP.SERVICE_TMP, T_employe_TMP.SOCIETE_TMP" & _
                " FROM T_employe_TMP" & _
                " WHERE T_employe_TMP.Coche_H24_TMP;"
     
        Set dbs = CurrentDb
     
    Set rst3 = dbs.OpenRecordset(sSQL3, dbOpenSnapshot)
              If Not rst3.EOF Then 'si le resultat de la requete n'est pas vide, insère le résultat sous forme de tableau
     
                headerHTML = "<head> <style> table, th, td {border: 1px solid black; border-collapse:collapse;}</style> </head><TABLE>" & Chr(10) & "<TR>"
     
                For j = 0 To rst3.Fields.Count - 1
                headerHTML = headerHTML & "<TH>" & rst3.Fields(j).Name
                Next j
     
                tableHTML = headerHTML
     
                Do Until rst3.EOF
                tableHTML = tableHTML & "<TR>"
                For j = 0 To rst3.Fields.Count - 1
                tableHTML = tableHTML & "<TD>" & rst3.Fields(j).Value
                Next j
                rst3.MoveNext
                Loop
     
                tableHTML = tableHTML & "</TABLE>"
     
              End If
     
    'ci-dessous test de la requete avec affichage
     
        ' Set qry3 = CurrentDb.CreateQueryDef("MaRequête_H24", sSQL3)
        ' affiche la requete pour controle
        DoCmd.OpenQuery ("MaRequête_H24")
     
    'Création du mail de confirmation de prise en compte
     
    Dim OutApp As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    Dim objOutlookRecip As Recipient
    Dim Recipients As Recipients
     
     
    Set OutApp = CreateObject("Outlook.Application")
    Set objOutlookMsg = OutApp.CreateItem(olMailItem)
     
    'destinataire
    Set Recipients = objOutlookMsg.Recipients
    Set objOutlookRecip = Recipients.Add(Vmail_demandeur) 'mail du demandeur
     
    'copie
        objOutlookMsg.CC = Vmail_valideur & ";" & "toto@free.com" 'mail valideur et astreinte en copie
     
    objOutlookRecip.Type = 1
     
    'expéditeur
    objOutlookMsg.SentOnBehalfOfName = "toto@free.com"  ' insertion de l'adresse expéditrice
     
    'niveau d'importance
    objOutlookMsg.Importance = olImportanceHigh
     
    'objet du mail
    objOutlookMsg.Subject = " Votre demande d'accès HHE du : " & Vdate_demande & "  pour le week-end du : " _
    & Vdate_debut & " au " & Vdate_fin ' objet avec intégration des éléments
     
    'création du corps de texte
     
     
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Bonjour<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Votre demande est prise en compte sous le n°: " & Me.txt_ID_demande.Value & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Celui-ci est à rappeler pour tout échange inhérent à cette demande<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Vous trouverez en pièce joint le mail initial<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              'insertion des éventuels accès H24
              If tableHTML <> "" Then 'si le resultat de la requete n'est pas vide, insère le résultat sous forme de tableau
                objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Les personnes ci-dessous n'ont pas été ajoutées à la liste HHE,<br>"
                objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "elles possèdent l'accès H24 pour l'immeuble demandé<br>"
                objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
                objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & tableHTML & "<br>"
              End If
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Bien cordialement<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Gestion des Astreinte<br>"
              'met la ligne ci-dessous en rouge
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<FONT color=#FF0000> 00 00 00 00 00 </FONT><br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "Tour X<br>"
              'met la ligne ci-dessous en rouge
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<FONT color=#FF0000> *Dans le cadre du RGPD, vos données (nom, prénom, matricule) sont conservées une année dans un fichier Excel avant d’être supprimées.</FONT><br>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
              'insertion du logo mais ne fonctionne pas
              'objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<html><img alt= logoODM align=baseline src= "c:\ODM\Fichiers de travail\Images\ODM.png"  width="214" height="50" '>"
              objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<br>"
     
    For Each objOutlookRecip In objOutlookMsg.Recipients
    objOutlookRecip.Resolve
    Next
     
    'objOutlookMsg.Send ' envoi le mai directement sans prévisuel
    objOutlookMsg.Display ' ouvre le mail avant envoi
     
    Set OutApp = Nothing
     
    ...suite du code....

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 748
    Points : 14 774
    Points
    14 774
    Par défaut
    les guillemets délimitent les littéraux (textes fixes) dans VBA ... essaie en doublant les guillemets qui délimitent les paramètres src, width et height et il en faut également pour alt (c'est le texte alternatif si l'image n'est pas trouvée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objOutlookMsg.HTMLBody = objOutlookMsg.HTMLBody & "<html><img alt= ""logoODM"" align=baseline src= ""c:\ODM\Fichiers de travail\Images\ODM.png""  width=""214"" height=""50"" >"
    et, encore une fois, il y avait une apostrophe en trop à la fin du code ...
    je ne sais pas si la balise <htlm> au début est nécessaire ...

    PS: quand du code ne fonctionne pas il est préférable de le poster sans apostrophe devant, la coloration syntaxique permet de voir plus facilement les erreurs de syntaxe
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    bonjour à Tous,

    merci Tee_grandbois, je viens de tester et le logo ne s'affiche pas
    J'ai changé le format de l'image au cas où (passé en BMP) mais rien.

    J'ai retiré la balise <html>devant <img alt mais rien non plus.

    Initialement, cette ligne de code fonctionne bien à la fin d'un tableau HTML créé sur notepad++.
    Ce qui m'inquiète c'est que je voulais utiliser le code complet dans la création d'un mail en VBA et je me dis que cela va être problématique

    Belle journée à Tous

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 748
    Points : 14 774
    Points
    14 774
    Par défaut
    bonjour,
    le format de l'image n'est pas en cause ... par contre, on arrive bien à afficher l'image si on ne précise pas la taille ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    effectivement, ça fonctionne
    merci Tee_grandbois.
    Je vais modifier la taille via paint

    Bel après midi🌞

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 748
    Points : 14 774
    Points
    14 774
    Par défaut
    pour info, je viens de réessayer en remettant la taille ça fonctionne mais étant donné que je ne connais pas la mesure utilisée (probablement des pixels) j'ai utilisé le pourcentage, plus parlant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            .HTMLBody = .HTMLBody & "<br>" & "<img alt= ""logoODM"" align=baseline src= ""...\Images\ImagePng.png""  width=""35%"" height=""25%"" >"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Membre régulier Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 460
    Points : 116
    Points
    116
    Par défaut
    Bonjour à Tous,

    merci Tee_grandbois formidable 🙏

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Récupérer une image dans le corps d'un mail depuis Excel
    Par Simbaa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/11/2016, 13h41
  2. Insertion d'une image dans le corps d'un mail via VBA Excel
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2013, 18h55
  3. Réponses: 3
    Dernier message: 07/04/2009, 18h39
  4. contenu d'une table dans le corps d'un mail
    Par jeromecaux dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/11/2008, 16h25
  5. Réponses: 2
    Dernier message: 13/06/2007, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo