Message de sécurité Outlook lors de la génération d'un mail auto en VBA
Bonjour,
Je viens vers vous concernant un problème que je rencontre lors de l'exécution d'une macro pour la génération d'un mail. J'ai regardé sur internet mais je ne trouve pas de solution à ceci.
Dans le cadre de mon travail, tous les matins je dois effectuer un check de mon infrastructure et de mes postes.
Une fois ceci effectué, je dois envoyer un mail avec le résultat de ce check.
Dans mon mail on va trouvé du texte et des captures écrans qui vont être récupéré sur d'autre feuille du classeur.
J'ai donc créé une macro qui me génère et remplie automatiquement mon mail pour que je n'ai plus qu'à l’envoyer.
La macro fonctionne très bien, j'ai juste un petit problème (si on peut appeler ça un problème).
Dès que la macro va exécuter les lignes suivantes :
- Set wDoc = myItem.GetInspector.WordEditor
- wDoc.Application.Selection.Start = Len(.Body) (1er tableau)
- wDoc.Application.Selection.Start = Len(.Body) (2ème tableau)
J'ai un message de sécurité sur Outlook me disant ceci :
Un programme essaie d'accéder aux informations d'adresse de courrier enregistrés dans Outlook. Si cette action est inattendue, cliquer sur refuser, et vérifier que votre antivirus est à jour.
Ce message apparaît trois fois lors de l'exécution de la macro, et a chaque fois on est obligé de cliquer sur "accepter".
En soit ce n'est pas problématique mais j'aimerai que ce message n’apparaisse pas ou sinon de pouvoir le valider avec la macro.
En regardant sur le net, beaucoup de gens disent qu'il faut modifier un paramètre sur Outlook, problème c'est que ce fichier on est plusieurs à l'utiliser et de plus on utilise des sessions qui nous ne permettent pas de modifier ce paramètre.
J'ai vu aussi que quelqu'un avait réussi à contourner le problème avec la commande "SendKeys".
J'ai testé avec ceci mais impossible de faire exécuter la commande sur le message, elle s'exécute dans le corps du mail.
Si jamais quelqu'un connait un solution pour contourner ceci en VBA je serais preneur.
Voici mon code pour la génération du mail (il est fonctionnel mais pas mis à jour, certaine ligne doivent être supprimé) :
Sub envoi_mail()
Dim OL As Object, myItem As Object, wDoc As Object, rng As Object, k As Integer, Dernligne As String, Ad_mail As String, Ad_mail_Copie As String, Separateur As String, MonTableau As Integer
Dim nb_lignes As Integer
Separateur = ";"
Sheets("Mail").Visible = True
Dim img As Object
Sheets("Mail").Select
For Each img In ActiveSheet.Shapes
img.Delete
Next
Columns("A:Z").Select
Selection.Clear
Range("A1").Select
Sheets("Parametres").Visible = True
Sheets("Infrastructures").Visible = True
Sheets("Players").Visible = True
Sheets("Players indisponibles").Visible = True
Sheets("Historique Players").Visible = True
Sheets("Historique Infrastructure").Visible = True
Sheets("Mail").Visible = True
Sheets("MeteoCheck").Select
Range("C1:I11").Copy
Sheets("Mail").Select
Range("A1").Select
Selection.PasteSpecial 8
ActiveSheet.Paste
Sheets("Players indisponibles").Select
Dernligne = Range("E" & Rows.Count).End(xlUp).Row
Range("A6:F" & Dernligne).Select
' Range("A6:F6").Select
' Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Mail").Select
Range("I13").Select
Selection.PasteSpecial 8
ActiveSheet.Paste
Range("A1").Select
Application.Run "Module_Historique_Infra.Maj_historique_Infras"
Application.Run "Module_Historique_Salles.Maj_historique_Salles"
' Sheets("Players indisponibles").Select
' MonTableau = Range("A6:F6", Selection.End(xlDown)).Select
Sheets("Parametres").Select
Dernligne = Range("F" & Rows.Count).End(xlUp).Row
For k = 5 To Dernligne + 3
If Cells(k, 6).Select = True Then
Ad_mail = Ad_mail & Separateur & Cells(k, 6).Value
End If
Next k
For k = 5 To Dernligne + 6
If Cells(k, 7).Select = True Then
Ad_mail_Copie = Ad_mail_Copie & Separateur & Cells(k, 7).Value
End If
Next k
Set OL = CreateObject("Outlook.Application")
Set myItem = OL.CreateItem(olMailItem)
Range("A1").Select
Sheets("Mail").Activate
' On prépare le mail en rentrant les paramètres : adresse des destinataires, en copie, objet du mail, corps du mail
With myItem
.To = Ad_mail
.CC = Ad_mail_Copie
.Subject = "[Morning Check Multimédia] Météo : " & Date & " - " & Time & " - " & "OK"
.Body = olFormatHTML
.Display
Set wDoc = myItem.GetInspector.WordEditor
' Texte avant tableau
Set rng = wDoc.Content
rng.InsertAfter "Bonjour," & vbNewLine & "" & vbNewLine & "Veuillez trouver ci-joint la météo du morning check multimédia de ce jour." & vbNewLine & vbNewLine
' Premier tableau
Range("A1:G11").CopyPicture
wDoc.Application.Selection.Start = Len(.Body)
wDoc.Application.Selection.End = wDoc.Application.Selection.Start
wDoc.Application.Selection.Paste
' Texte premier tableau
Set rng = wDoc.Content
rng.InsertAfter "" & vbNewLine & vbNewLine & "Détails relatifs aux players indisponibles :" & vbNewLine & vbNewLine
' Deuxieme tableau
Dernligne = Range("M" & Rows.Count).End(xlUp).Row
Range("I13:N" & Dernligne).Select
' Range("I13:N13").Select
' Range(Selection, Selection.End(xlDown)).Select
Selection.CopyPicture
wDoc.Application.Selection.Start = Len(.Body)
wDoc.Application.Selection.End = wDoc.Application.Selection.Start
wDoc.Application.Selection.Paste
' Texte premier tableau
Set rng = wDoc.Content
rng.InsertAfter "" & vbNewLine & vbNewLine & "Pour toute question complémentaire, merci de contacter le support visioconférence en composant le 87777 ou en écrivant à l'adresse : gts.support-visio@socgen.com" & vbNewLine & vbNewLine & "Cordialement" & vbNewLine & vbNewLine
End With
Set OL = Nothing
Set myItem = Nothing
Set wDoc = Nothing
Sheets("MeteoCheck").Select
End Sub
Merci d'avance pour votre aide sur ce problème, en espérant avoir été compréhensible sur l'explication de mon problème.
Bonjour Sniper560,
2 pistes pour contourner les sécurités OUTLOOK :
- Le site incontournable de Ron de Bruin (en anglais ) traitant du pilotage d'OUTLOOK depuis VBA EXCEL et particulièrement la page consacrée à ton problème : https://www.rondebruin.nl/win/s1/security.htm.
-Personnellement, confronté à ce type de problème pour l'envoi des mails, j'utilise un activeX tiers (payant) évitant le passage par OUTLOOK : https://www.chilkatsoft.com/refdoc/xChilkatMailManRef.html
Bonjour,
Personnellement, je te conseille de ne pas travailler dans le mail après le display (sauf exception avec sendkeys).
Il vaut mieux que tu prépares tous les éléments en amont en utilisant un onglet pour ce faire. Ensuite tu peux partir de cet onglet, construire ton .body ou ton .htmlbody et ensuite faire display ou send directement.
Pour insérer des images, tu peux aussi faire un copier/coller avec sendkeys après le display.
Voici un exemple simple ...
Bonjour,
merci pour ces informations, je vais regarder ceci.
Anthony