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 Outlook Discussion :

Envoi de mail différé erreur


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Envoi de mail différé erreur
    Bonjour à tous

    J'ai un soucis avec un petit bout de code en apparence tout simple que j'essaye d'écrire.
    Je veux envoyer un mail avec la personne en copie en différé.


    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
    Sub Envoyer_Mail_Outlook()
    Dim oBjMail
    Dim DeferredDeliveryTime As Object ' j'ai essayé sans le as Object ou avec d'autre truc comme String)
    '(J'ai également essayé en faisant Dim Delai, en gros toutes les combinaisons qui me passais par la tete)
     
    Delai = DateValue(Now) + TimeSerial(0, 5, 0)
    With OutMail
        .DeferredDeliveryTime = Delai
    End With
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = CreateItem(olMailItem)
          With oBjMail
            .CC = "quelquun@gmail.com" ' le destinataire
            .Display
        End With
     
    End Sub
    Quand j'essaye d’exécuter ma macro cela m'affiche erreur 424 sur la ligne : DeferredDeliveryTime = Delai.
    Est ce que vous auriez une solution ?


    Merci d'avance


    Razou

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonsoir,

    Ton code ne fonctionnera pas comme cela, il y a plusieurs incohérences.

    Si tu envois en Email il est envoyé à tous en même temps que ce soit immédiatement ou en différé.

    en différé il faut que Outlook soit ouvert à l'heure de l'envoi prévu.

    DeferredDeliveryTime est une propriété qui attend un date (date + heure)


    Item.DeferredDeliveryTime = DateAdd("n", Minutes, Now)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Envoyer_Mail_Outlook()
    dim Delai  as datetime
    Minutes = 5
    Delai = DateAdd("n", Minutes, Now)
        Set oBjMail = CreateItem(olMailItem)
    WITH oBjMail 
          .subject ="Envoi dans 5mn")
          .TO = "TO@gmail.com" ' le destinataire PRINCIPAL
          .CC = "quelquun@gmail.com" ' le destinataire
            .send
     END WITH
    End Sub
    Si tu veux envoyer ton MAIL au destinataire principal maintenant et au CC dans 5 MN il faut faire une copie de ce mail, dans l'évenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    ....
    end sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Merci pour ton conseil.

    J'ai essayé ton code et ça me marque : ActiveX non géré dans Visual Basic.

    En faite ce que je veux faire c'est que en appuyant sur le bouton de la macro cela ouvre un mail que je tape et dans lequel je saisie toutes les infos, sujet, destinataire principal et contenue.

    Ensuite je clique sur envoyer et 15 jours après il est transféré automatiquement à une autre personne, j'ai mis 5mn pour les testes.

    Si je comprend ce que tu as dis je ne suis pas du tout parti dans le bon sens et il n'y aurait en faite que le private sub qui serait à faire.

    Je suis un pur débutant en VBA, c'est mon premier code, avant je ne faisais qu'enregistrer des macro excel. Le private sub il est à saisir sous le premier code ? Sous la forme en gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub ...
    ........
    End Sub
    _____
     
    Private Sub ...
    'le même code avec des infos différentes 
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Petite Maj,

    Donc j'ai réussis à envoyer le mail en différer en utilisant ton code, merci beaucoup, j'ai juste eu un tout petit truc a changer.

    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
     
    Sub EnvoyerMailOutlook()
    Dim ObjOutlook As New Outlook.Application
    Dim oBjMail
    Dim Delai As Date
    Minutes = 1 '21600
    Delai = DateAdd("n", Minutes, Now)
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = ObjOutlook.CreateItem(olMailItem)
          With oBjMail
            .DeferredDeliveryTime = Delai
            .Display
        End With
        Set oBjMail = Nothing
        Set ObjOutlook = Nothing
    End Sub
    je vois bien que le private sub sert a déclencher la boucle quand j'envoie le mail mais je ne vois pas du tout comment le récupéré pour le renvoyer à une autre personne.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    J'ai un peu avancer même si le résultat reste le même.

    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
     
    Dim oBjMail As Object
     
    Sub test()
    Dim ObjOutlook As New Outlook.Application
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = ObjOutlook.CreateItem(olMailItem)
        oBjMail.Display
     
    End Sub
     
    'Transférer le mail 1mn plus tard à une autre personne
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim Delay As Date
    Delay = Now() + TimeSerial(0, 1, 0)
          With oBjMail
            .DeferredDeliveryTime = Delay
            .CC = "LeClient@gail.com" ' le destinataire
            .Send
        End With
    End Sub
    La première partie fonctionne, si je veux mettre du délai ça fonctionne juste le second mail ne s’envoie pas.
    Si quelqu'un sait d’où ça peut venir ça m'aiderait énormément.

    Merci d'avance

    Razou

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    SAlut

    donc si tu prépares un Email et l'envoi, et que tu veux lors de l'envoi qu'un email soit préparé et envoyé 3 JOURS plus tard

    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
     
     
     
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim dateEnvoi As Date
    Dim oBjMail As Object
    periode= 3
    dateEnvoi= DateAdd("n", periode, Now) 'x minutes
    dateEnvoi= DateAdd("d", periode, Now)
     
    'ici on fait une copie du mail initial
    set objmail = item.forward
          With oBjMail
            .DeferredDeliveryTime = dateEnvoi
     
    on ajoute le destinataire
    .recipients.add("LeClient@gail.com") ' le destinataire
    'on l'envoi mais il va  rester dans la boite d'envoi jusqiu'à la date fixée
            .Send
        End With
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Merci beaucoup Olive pour ton aide elle m'a permit de pas mal avancer.
    Pour ce qui est de la solution final j'ai obtenue d'une autre source.
    Voici la solution final, si elle peut aider des gens dans le future :

    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
     
    Dim oBjMail As MailItem
    Dim Minutes As Integer
     
    Sub EnvoyerMail()
     
    Dim ObjOutlook As New Outlook.Application
        Set ObjOutlook = New Outlook.Application
        Set oBjMail = ObjOutlook.CreateItem(olMailItem)
        oBjMail.Display
     
     
    End Sub
     
     
    Public Sub EnoverMailAvecDelay(ByVal Item As Object, Cancel As Boolean)
        If TypeName(Item) <> "MailItem" Then Exit Sub
        If (oBjMail Is Nothing) Then Exit Sub
        If (Item.Subject = oBjMail.Subject And Cancel = False) Then
            Dim Delai As Date
            Dim NewMail As MailItem
            Set NewMail = Item
            Minutes = 20160
            Set NewMail = oBjMail.Copy 'on ne peut pas envoyer 2 mail identique
            With NewMail
            .To = "aymeric.mounier@viacesi.fr"
            .Subject = "TR: " & oBjMail.Subject
            .DeferredDeliveryTime = DateAdd("n", Minutes, Now)
            .Send
            End With
            Set oBjMail = Nothing
        End If
    End Sub
    Et le private sub à mettre dans "thisoutlooksession" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    EnoverMailAvecDelay Item, Cancel
     
    End Sub

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

Discussions similaires

  1. Envoi de mail impossible (erreur 16025/205)
    Par winser dans le forum Exchange Server
    Réponses: 16
    Dernier message: 19/05/2015, 13h57
  2. Envoi de mail et Erreur Automation
    Par Fabert dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 22/04/2015, 20h50
  3. [AC-2007] Envoi de mail différé sur ACCESS
    Par shmedea dans le forum Access
    Réponses: 1
    Dernier message: 31/03/2014, 18h38
  4. envoi de mail et erreur 5.7.1 unable to relay
    Par phoenix75 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/03/2008, 12h36
  5. [Windows 2003] Envoi de mail smtp, erreur
    Par Amiba dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 22/11/2007, 12h23

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