Envoi de mail compatible 32bits et 64bits
Bonjour,
J'ai modifié un code qui permet de mettre en forme un tableau excel dans un mail et de l'envoyer à une liste de diffusion via outlook.
Ma problématique aujourd'hui est la suivante : les utilisateurs de mon fichier qui ont une version excel 64 bits n'arrive pas à faire fonctionner la macro "problème de sécurité"
Ayant vu qu'il est possible de modifier le code pour le rendre compatible j'espère trouver de l'aide sur ce forum car je n'arrive pas à comprendre comment faire et comment tester si ca fonctionne car j'ai une version 32 bits sur mon pc.
Merci par avance pour votre aide :
Sub Declaration()
'Déclaration des variables
Dim EmailSup, Signature As String
Dim MyOlapp As Object
Dim myItem
Dim olMailItem
Dim myRecipients
Dim myAttachments
Const olFolderInbox As Long = 6
EmailSup = "..........@mail.com"
Signature = Range("D3")
' Là, je créé mon tableau 5x2
Dim strHTML As String
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour , <BR>Veuillez trouver ci-dessous<BR><BR>"
strHTML = strHTML & "<B><SPAN STYLE='background-color:red;font-size:5mm'>Déclaration : </SPAN></B><BR><BR>"
strHTML = strHTML & "<TABLE BORDER>"
For i = 5 To 15 'nombre de lignes (exemple plage A1:B5)
strHTML = strHTML & "<TR justify>"
For j = 3 To 4 'nombre de colonnes
strHTML = strHTML & "<TD bgcolor='white'align='center'><FONT COLOR='black'SIZE=3>" _
& Cells(i, j) & "</FONT></TD>"
Next j
strHTML = strHTML & "</TR>"
Next i
strHTML = strHTML & "</TABLE>"
strHTML = strHTML & "<BR><BR>Cordialement<BR>" & Signature
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
' Là, j'envoie le mail
Set MyOlapp = CreateObject("Outlook.application")
Set myItem = MyOlapp.CreateItem(olMailItem)
Set myRecipients = myItem.Recipients
myRecipients.Add (EmailSup)
Set myAttachments = myItem.Attachments
myItem.Subject = " ! Déclaration !"
myItem.HTMLBody = strHTML
myItem.Send
MsgBox "Mail envoyé"
End SubBonjour ZAM144 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER] ainsi que ses fonctionnalités
qui vous aideront dans vos demandes et réponses sur ce forum.
Concernant votre demande, pour moi le "problème de sécurité" ne vient pas de la version d'Excel en 64 bits mais des GPO déployées sur les PC
Ceci dit, vous ne déclarer pas vos variables correctement, voici un exemple avec les paramètres possible, à adapter.
Option Explicit
' Constantes type d'élément Outlook (pour le late binding)
Const olMailItem As Integer = 0
Const olAppointmentItem As Integer = 1
Const olContactItem As Integer = 2
Const olTaskItem As Integer = 3
Const olJournalItem As Integer = 4
Const olNoteItem As Integer = 5
Const olPostItem As Integer = 6
Const olDistributionListItem As Integer = 7
' Constantes Formats de l'email
Const olFormatUnspecified As Integer = 0
Const olFormatPlain As Integer = 1
Const olFormatHTML As Integer = 2
Const olFormatRichText As Integer = 3
Sub EnvoyerEmail()
Dim OutApp As Object, OutMail As Object
Dim MailBody As String
Dim sPath As String, sFic As String
' Créer une instance Outlook
Set OutApp = CreateObject("Outlook.Application")
' Créer un nouveau mail
Set OutMail = OutApp.CreateItem(olMailItem)
' Définir l'adresse de l'expéditeur
OutMail.SentOnBehalfOfName = "nom@domaine.com"
'
' Texte du mail HTML
MailBody = "<HTML><BODY><span style=""color:#80BFFF"">Font Color</span style=""color:#80BFFF""><br>" _
& "the <b>bold text</b> here.</br>" _
& "<br><u>New line with underline</u></br>" _
& "<br><p style='font-family:calibri;font-size:25'>Font size</br></p>" _
& "</BODY></HTML>"
'
' Création de l'email
With OutMail
.BodyFormat = olFormatHTML ' Format HTML
'.BodyFormat = olText ' Format texte simple
'.BodyFormat = olFormatRichText ' Format texte riche
.Display ' Afficher l'email vide pour la signature (si existe)
.To = "destinataire@mail.fr"
.CC = "copie@mail.fr"
.BCC = "copiecachée@mail.fr"
.Subject = "SUJET du MAIL"
.HTMLBody = MailBody & .HTMLBody
If sPath <> "" And sFic <> "" Then
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
.Attachments.Add sPath & sFic
End If
' sauvegarde l'email avant l'envoi (pas obligatoire)
.Save
' Envoyer le mail
'.Send
End With
' Vider les variables objet
Set OutMail = Nothing: Set OutApp = Nothing
End SubMerci de votre participation
Cordialement
Bonjour BrunoM45
Merci beaucoup pour votre retour, j'ai essayé de modifier votre code mais malheureusement je n'arrive plus à générer mon tableau dans le corps du message, voici le fichier en PJ. qui permettra de mieux comprendre mon besoin
Re,
Désolé, je n'ai pas dû être assez explicite
Mon code n'est pas à reprendre dans sa globalité, juste les lignes dont vous avez besoin pour la compatibilité 32/64 bits
Voici le fichier modifié
A+