Envoi de mail : Dysfonctionnement macro suite migration OFFICE 365

Bonjour,

j'ai mis en place il y a quelque temps une macro qui permet aux équipes de remonter toutes les prévisions qui passent hors système.

Le comptable choisi le type de prévision, effectue sa saisie (Compte / Montant / Date / Description)

Ensuite, il clique sur "VALIDER" et la prévisions s'affiche dans la listBox. Il peut saisir autant de prévision qu'il veut. Une fois qu'il a fini toutes ses saisies, il clique sur "ENVOYER". Là, commence mon problème.

Avant de migrer sous OFFICE 365, le comportement était le suivant après le clique sur "ENVOYER" :

  • Un fichier csv est crée sous un répertoire pour être importé par le système de destination
  • Une fenêtre d'envoi de mail avec une adresse destinataire et un texte déjà défini dans le code s'ouvre avec le même fichier csv en pièce jointe.
  • l'utilisateur n'a plus qu'à envoyer son mail.

Après migration vers OFFICE 365 :

  • L'utilisateur peut toujours saisir ses prévisions
  • Cliquer sur le bouton "VALIDER" pour les afficher au niveau de la listBox
  • MAIS quand il clique sur "ENVOYER", le fichier csv est bien généré au niveau du répertoire de destination pour intégration mais la fenetre d'envoi de mail OUTLOOK ne s'ouvre plus.

Pourriez- vous svp me venir en aide sur la partie du code qui ne fonctionnerait pas ?

Private Sub ENVOIMAIL_Click()

Dim wb As Workbook

Dim Shname As Variant

Dim N As Integer

Dim TempFilePath As String

Dim TempFileName As String

Dim FileExtStr As String

Dim FileFormatNum As Long

Dim fichierTemp1 As String

Dim fichierTemp2 As String

Dim i As Long

Dim outlook As Object

Dim Mail As Object

Dim w As Integer

If ListBox1.ListCount = 0 Then

MsgBox "Attention aucune donnée à envoyer."

Exit Sub

End If

ThisWorkbook.Activate

Shname = Array("Prévisions")

FileExtStr = ".csv": FileFormatNum = -4143

With Application

.ScreenUpdating = False

.EnableEvents = False

End With

'TempFilePath = Environ$("temp") & "\"

'TempFilePath = "\\unibail.fr\prog\ITF_DATA_HA\ITF_DIAPASON_IMPORT\CashmovementDivers\source\"

For N = LBound(Shname) To UBound(Shname)

TempFilePath = "C:\Users\test\Desktop\test\"

TempFileName = Format(Now, "yyyymmdd") & "_" & Format(Now, "hhmmss") & "_" & Forecast.Caption

ThisWorkbook.Sheets(Shname(N)).Copy

Set wb = ActiveWorkbook

wb.SaveAs Filename:=TempFilePath & TempFileName & FileExtStr, FileFormat:=xlCSV, CreateBackup:=False, Local:=True, ReadOnlyRecommended:=False

On Error Resume Next

wb.Close savechanges:=False

If N = LBound(Shname) Then

fichierTemp1 = TempFilePath & TempFileName & FileExtStr

Else:

If N = UBound(Shname) Then

fichierTemp2 = TempFilePath & TempFileName & FileExtStr

End If

End If

Next N

Set outlook = CreateObject("Outlook.Application")

Set Mail = outlook.CreateItem(0)

With Mail

.To = "test@test.com"

.Subject = TempFileName 'Format(Now, "yyyymmdd") & "_" & Format(Now, "hhmmss") & "_" & Forecast.Caption

.Body = "Bonjour," & vbCrLf & vbCrLf _

& "Veuillez trouver ci-joint le fichier des prévisions à intégrer dans Diapason." & vbCrLf & vbCrLf _

& "Cordialement. " & vbCrLf

.Attachments.Add fichierTemp1

.Attachments.Add fichierTemp2

.Display

End With

With Application

.ScreenUpdating = True

.EnableEvents = True

End With

Forecast.Show

End Sub

Merci pour votre aide.

Bien cordialement.

38image-macro.pdf (95.19 Ko)

Bonjour,

est ce que c'est la version Oulook 365 (OWA) ?

Bonjour,

C'est outlook 2016 MSO 32 bits

Merci.

Merci. Je vais regarder plus en détail le lien.

Bonjour,

J'ai parcouru en long et large le lien que vous m'avez fourni mais je ne trouve pas la solution à mon problème.

Je m'en remets à la communauté.

Merci à tous.

avez-vous vérifier cette clé au registre ?

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security]

"EnableUnsafeClientMailRules"=dword:00000001

Merci! Demain matin je regarde tout ça attentivement et en discute avec la DSI.

Je vous tiens au courant.

Bonjour,

Clé ajoutée mais rien ne change.

Du coup pour que le problème soit plus lisible à tous, j'ai modifier la macro en enlevant les données liées à la société et je vous la joint pour plus de visibilité sur problème.

Merci pour votre à aide.

Bien cordialement.

99testoffice365.xlsm (61.19 Ko)

Rebonjour,

Alors, j'ai fait une avancée et crois savoir d'où vient le problème.

J'ai l'impression que la fonction .Display ne fonctionne en raison d'une sécurité. Lorsque j'utilise directement .Send, le mail est correctement envoyé avec la pièce jointe.

Avez-vous une idée sur ce point?

Merci.

Bonjour,

Le problème est transmis à ma DSI.

Ils vont vérifier les différentes sécurités appliquées en interne.

Je vous tiens informé.

Merci pour votre aide.

Bonjour,

J'ai trouvé d'où venait le problème.

With Mail

.Display ==> cette expression se trouvait dans la version précédente juste avant le END WITH mais la nouvelle version exige qu'on fasse l'appel du MAILITEM et ensuite on exécute les autres expression les unes après les autres. (effectivement plus logique)

.To = "backoffice.drf@unibail-rodamco.com"

.Subject = TempFileName 'Format(Now, "yyyymmdd") & "_" & Format(Now, "hhmmss") & "_" & Forecast.Caption

.Body = "Bonjour," & vbCrLf & vbCrLf _

& "Veuillez trouver ci-joint le fichier des prévisions à intégrer dans Diapason." & vbCrLf & vbCrLf _

& "Cordialement. " & vbCrLf

.Attachments.Add fichierTemp1

.Attachments.Add fichierTemp2

End With

Merci pour votre aide.

par talami: J'ai trouvé d'où venait le problème.

Merci talami pour ce retour, au plaisir!

si le problème est résolu, s.v.p. pour clôturer le fil, cliquer sur le bouton V vert du post à coté du bouton EDITER, merci!

Rechercher des sujets similaires à "envoi mail dysfonctionnement macro suite migration office 365"