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

Access Discussion :

Executer la suite du code que si on envoie l'email


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut Executer la suite du code que si on envoie l'email
    Bonjour à tous
    J'ai un petit soucis pour le déroulement d’exécution d'un code lors de l'envoi d'un email :


    En fait je veux executer une partie d'un code qu'après que l'on est envoyé le mail, si on ne l'envoie pas le code ne s'execute pas (Code concerné dans la balise ligne 73 à 89)

    Avant j'utilisais "Sendobject" mais je veux passer par un mail en HTML et avec Sendobject la suite du code ne continuais pas si on n’envoyais pas le mail

    Est ce que vous pourriez m'aider?
    j'ai déjà explorer quelques pistes à savoir :
    -Do events...
    - Tester si l'appli outlook est ouvert et utiliser une condition If

    mais sans succès


    voici mon code :
    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
    Sub button_mail_cde_fournisseur_OnAction(control As IRibbonControl)
     
     
    On Error Resume Next
     
    [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].SetFocus
     
    DoCmd.RunCommand acCmdRefresh
     
    Dim Txt_Mem_CF As String
    Txt_Mem_CF = Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.[]
    num_cde_f = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.N°_Cde_Fournisseur
     
     
    DoCmd.OpenReport "E_cde_fournisseur", acViewPreview
    DoCmd.OutputTo acOutputReport, , "PDF", "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
    DoCmd.Close acReport, "E_cde_fournisseur"
     
     
    Const SAUTLIGNE = "<br/>"
    Dim Adresse_mail1 As String
    Dim N°_CF_Fournisseur As String
    Dim Expediteur As String
    Dim Remarque As String
     
    Dim pj As Variant
     
    Adresse_mail1 = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.mail
     
     
    If IsNull(Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.Remarque) Then
    Else
    Remarque = "Remarque : " & Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.Remarque
    End If
     
    N°_CF_Fournisseur = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.N°_Cde_Fournisseur
    Expediteur = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.Nomcomplet
     
     
     
        Dim OutApp As Object
        Dim OutMail As Object
        Dim strContenu As String
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
    strContenu = "<div><font face=calibri size=3>Bonjour"
    strContenu = strContenu & SAUTLIGNE & SAUTLIGNE
    strContenu = strContenu & "<div>Veuillez trouver ci-joint notre commande <b> N°" & num_cde_f & "</b></p>"
    strContenu = strContenu & SAUTLIGNE
    strContenu = strContenu & "<div>Merci de nous retourner un <b>AR de commande avec le délai de livraison et reprendre notre <b>N° de commande</b> sur vos documents</b></p>"
     
     
     
        On Error Resume Next
     
        With OutMail
            .Display
            .To = Adresse_mail1
            .CC = ""
            .BCC = ""
            .Subject = "Commande / Bestellung : N°" & N°_CF_Fournisseur
            .HTMLBody = strContenu & "<br>" & .HTMLBody
            .Attachments.Add "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
            '.Send
        End With
     
        Set OutMail = Nothing
        Set OutApp = Nothing
     
     
     'Début code executé si mail envoyé :
    Kill "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_à_expedier = 0
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_expediée = -1
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Requery
     
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].SetFocus
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.FilterOn = False
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = Null
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.Requery
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = "Rechercher"
     
    DoCmd.GoToControl "N°"
    DoCmd.FindRecord Txt_Mem_CF
    'Fin code si mail envoyé
     
     
    End Sub

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonsoir,

    Pourquoi dans ce cas utiliser qui continue le code quoi qu'il arrive ?

    Si le non envoi du mail lève une erreur peut permettre de passer un bloc d'instructions
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Bonjour
    Merci pour votre réponse
    Mais à quel endroit je doit mettre le code ?car j'ai essayé de le mettre ici mais ça ne fonctionne pas... je rame
    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
    Sub button_mail_cde_fournisseur_OnAction(control As IRibbonControl)
     
     
    'On Error GoTo fin
     
    [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].SetFocus
     
    DoCmd.RunCommand acCmdRefresh
     
    Dim Txt_Mem_CF As String
    Txt_Mem_CF = Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.[]
    num_cde_f = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.N°_Cde_Fournisseur
     
     
    DoCmd.OpenReport "E_cde_fournisseur", acViewPreview
    DoCmd.OutputTo acOutputReport, , "PDF", "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
    DoCmd.Close acReport, "E_cde_fournisseur"
     
     
    Const SAUTLIGNE = "<br/>"
    Dim Adresse_mail1 As String
    Dim N°_CF_Fournisseur As String
    Dim Expediteur As String
    Dim Remarque As String
     
    Dim pj As Variant
     
    Adresse_mail1 = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.mail
     
     
    If IsNull(Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.Remarque) Then
    Else
    Remarque = "Remarque : " & Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.Remarque
    End If
     
    N°_CF_Fournisseur = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.N°_Cde_Fournisseur
    Expediteur = [Forms]![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.Nomcomplet
     
     
     
        Dim OutApp As Object
        Dim OutMail As Object
        Dim strContenu As String
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
    strContenu = "<div><font face=calibri size=3>Bonjour"
    strContenu = strContenu & SAUTLIGNE & SAUTLIGNE
    strContenu = strContenu & "<div>Veuillez trouver ci-joint notre commande <b> N°" & num_cde_f & "</b></p>"
    strContenu = strContenu & SAUTLIGNE
    strContenu = strContenu & "<div>Merci de nous retourner un <b>AR de commande avec le délai de livraison et reprendre notre <b>N° de commande</b> sur vos documents</b></p>"
     
     
     
        On Error GoTo fin
     
        With OutMail
            .Display
            .To = Adresse_mail1
            .CC = ""
            .BCC = ""
            .Subject = "Commande / Bestellung : N°" & N°_CF_Fournisseur
            .HTMLBody = strContenu & "<br>" & .HTMLBody
            .Attachments.Add "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
            '.Send
        End With
     
        Set OutMail = Nothing
        Set OutApp = Nothing
     
     
     
    Kill "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_à_expedier = 0
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_expediée = -1
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Requery
     
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].SetFocus
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.FilterOn = False
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = Null
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.Requery
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = "Rechercher"
     
    DoCmd.GoToControl "N°"
    DoCmd.FindRecord Txt_Mem_CF
     
    fin:
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_à_expedier = -1
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_expediée = 0
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Requery
     
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].SetFocus
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.FilterOn = False
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = Null
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.Requery
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = "Rechercher"
     
     
    Exit Sub
     
     
    End Sub

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Citation Envoyé par audloi Voir le message
    car j'ai essayé de le mettre ici mais ça ne fonctionne pas...
    S'il n'y a aucune instruction 'on error goto...' la procédure s'arrête en mode debug sur la 1e ligne en erreur, c'est le mieux pour tester la procédure
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Bonjour
    j'ai suivi votre conseil en enlevant le "On error Goto"

    Mais en fait cela ne fonctionne pas dans mon cas, pour lui le code se déroule correctement que j'envoie ou n'envoie pas le mail

    En gros ce que je souhaite réalisé :

    Lorsque l'on appuie sur le bouton "envoyer mail"

    le mail se génère et ouvre outlook,
    Si j'envoie le mail , alors il coche l'enregistrement comme "envoyé"
    si je n'envoie pas la mail, il reste coché comme "à envoyer"

    pourriez vous peut être me donner des directions dans lesquelles chercher?

  6. #6
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour.

    @ audloi: De façon simple, tel qu'est conçu ton code, tu ne peux pas savoir savoir ,après affichage du mail (.display) s'il sera envoyé ou non
    puisque ta procédure continu jusqu'à la fin.
    A moins d'interagir après coup sur Outlook, je vois pas d'autre solution.

    Cdlt

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Merci Thierry pour ta réponse

    je comprends bien , j'avais trouvé un sujet avec une API pour voir si outlook est encore ouvert , je vais essayer de fouiller dans cette direction.

    SI jamais vous avez un début de code ou une piste à explorer bien entendu je suis preneur

    Merci en tout cas pour l'intêret que vous portez à mon mon problème.

  8. #8
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour audloi.

    Pourquoi faire une procédure vba, si tu fini l'action d'envoi manuellement.
    Quelles sont ces actions manuelles ?
    Est-ce que tu peux les faire en vba ?
    sinon:
    après envoi (manuel), faire une recherche (vba access) dans la boite d'envoi, mais sur quel critère de recherche ?
    Les recherches peuvent etre assez longues suivant le nbre d'éléments présents dans le dossier.
    Il existe plusieurs méthodes dont celle d'ajouter un IdMail personnalisé, qui accélère nettement la recherche.

    Cdlt

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Bon tout cela m'a donné quelques idées

    en fait j'ai trouvé dans Outlook comment exécuter une action à chaque envoi de mail

    dans le vba de outlook je met ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public var_Envoi As Variant
     
     
     
    Public Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    var_Envoi = 1
     
    'MsgBox "Envoi d'un mail"
     
     
     
    End Sub
    en gros je déclare une variable publique à laquelle j'attribue la valeur 1 si on envoie le mail

    et comme ça je peux poser une condition "if" dans acces si la valeur est à 1 tu éxecute le code sinon tu ne fait rien.

    Par contre comment peut on récupérer une variable de Outlook dans Access est ce possible?

  10. #10
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Normalement, les procédures évenementielles sont "Private" (meme dans Outlook).
    Ton idée est bonne, mais je récupèrerais la variable avec une fonction (publique) Outlook, activée par Access.

    Dans Access:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ttt()
     
    Dim olApp As Object
    Dim var_Envoi As Boolean
    Set olApp = CreateObject("Outlook.Application")
    var_Envoi = olApp.MaFonction()
     
    End Sub
    Dans Outlook, et dans ThisOutlookSession ,en public:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public var_Envoi As Variant
     
    Public Function RetourValeur() As Boolean
     
        RetourValeur = var_Envoi
     
    End Function
    Il me semble important que la procédure Access que je te propose soit distincte de la tienne, pour les raisons que j'ai donner dans le précédent post.
    Maintenant, reste à voir comment tu vas activer cette procédure.
    Je n'ai pas le temps de testé, mais je pense que le principe est bon.

    Cdlt
    ps: tu gardes ta procédure Outlook (sans la déclaration , et tu met Private)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Ok Thierry j'ai bien lu ce que tu m'a indiqué

    Par contre je rame....

    Voici ce que j'ai donc fait :

    En premier j'ai créer la procédure dans access comme tu me l'a indiqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ttt()
     
    Dim olApp As Object
    Dim var_Envoi As Boolean
    Set olApp = CreateObject("Outlook.Application")
    var_Envoi = olApp.MaFonction()
     
    End Sub

    ensuite dans outlook j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public var_Envoi As Variant
     
    Public Function RetourValeur() As Boolean
     
        RetourValeur = var_Envoi
     
    End Function
     
     
    Public Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    var_Envoi = 1
     
    End Sub

    mais ensuite j'essaye donc sur mon code de mettre simplement un msgbox pour voir si j'arrive à récupérer ma valeur de variable sur mon bouton "envoyer mail" dans access :

    Mais la je sèche car ça ne marche pas, je pense que c'est pas la bonne solution
    et je ne comprend pas quand tu me dit "ps: tu gardes ta procédure Outlook (sans la déclaration , et tu met Private)"

    pourrais tu encore m'éclairer un petit peu pour réussir à récupérer la valeur de RetourEnvoi dans access stp ?

    Merci

  12. #12
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour audloi.

    Désolé, je n'y suis pas arrivé non plus. Pourtant, j'arrive à à déclencher une procédure "AdvancedSearch" depuis Access.
    De toute façon, après, il y aurais eu le problème de réinitialiser la variable ...
    J'ai aussi essayé d'envoyer une variable à partir d'Outlook vers Access, marche pas non plus !
    Si un expert passe par là !

    reste à essayer en passant par le presse-papier, ou attribuer un identifiant unique au mail, puis recherché si il se trouve dans les éléments envoyés (ça je sais faire)
    Cdlt

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    ok merci Thierry d'avoir essayé

    c'est vrai du coup qu'identifier le mail est une bonne idée car ça fonctionnerai pour tous les utilisateurs sans que je dois leur programmer leur outlook

    Pourrais tu m'indiquer la démarche stp?

    en gros :
    -identifier le mail
    -si il est dans les éléments envoyés ou dans la boite d'envoi (plutôt même car le déroulement du code peut se faire instantanément) on execute la suite du code
    et s'il ne s'y trouve pas on passe ce code du coup

    c'est faisable ça? peux tu m'aider stp?

    Merci

  14. #14
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut supprimé var_Envoi false= false qui ne sert pas
    Bonjour

    Pour ajouter une propriété personnalisée (je l'ai mis au format texte), avant .Display :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .UserProperties.Add "EmailRef", olText
     .UserProperties.Item("EmailRef").Value = "MaValeur"
    La propriété est ajoutée, mais dans la fenetre Outlook, ele n'est pas visible.Ce n'est pas genant, sinon, manuellement, avec le selecteur de champs, cherche le champ à ajouter dans la fenetre.

    A partir d'access, pour rechercher une valeur dans une propriété personnalisée:
    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
    Function GetMonMailEnvoyesFind(mondevis) As Byte   'fonctionne bien
    'http://support.microsoft.com/kb/185050
        Dim myOlApp As Object, myNameSpace As Object, MyFolder As Object
        Dim Customers As Object
        Dim DogCustomers As Object '
     
        Set myOlApp = CreateObject("Outlook.Application")
     
        Set myNameSpace = myOlApp.GetNamespace("MAPI")
     
        Set MyFolder = myNameSpace.GetDefaultFolder(olFolderSentMail)  ' éléments envoyés
        'initialise la propriété utilisateur dans le dossier, sinon çà ne fonctionne pas
        MyFolder.UserdefinedProperties.Add "EmailRef", olText
     
        Set Customers = MyFolder.Items
     
        Set DogCustomers = MyFolder.Items.Find("[EmailRef] = " & Chr(34) & mondevis & Chr(34))
     
     
        If DogCustomers Is Nothing Then
     
        Else
     
            GetMonMailEnvoyesFind = 1
     
            Exit Function
        End If
     
        Set MyFolder = myNameSpace.GetDefaultFolder(olFolderDrafts)    'brouillons
        'initialise la propriété utilisateur dans le dossier
        MyFolder.UserdefinedProperties.Add "EmailRef", olText
     
        Set DogCustomers = MyFolder.Items.Find("[EmailRef] = " & Chr(34) & mondevis & Chr(34))
     
        If DogCustomers Is Nothing Then
     
            GetMonMailEnvoyesFind = 3
        Else
     
            GetMonMailEnvoyesFind = 2
        End If
     
        Set DogCustomers = Nothing
     
     
     
     
    End Function
     
    Sub tth()
     
        Select Case GetMonMailEnvoyesFind("liste1")
        Case "1"
            Call MsgBox("le message a bien été envoyé", vbExclamation, Application.Name)
        Case "2"
            Call MsgBox("le message est dans les brouillons", vbExclamation, Application.Name)
        Case "3"
            Call MsgBox("le message n'a pas été envoyé", vbExclamation, Application.Name)
        End Select
     
     
    End Sub
    Comme tu peux le voir, recherche d'abord dans les éléments envoyés, puis si pas trouvé, cherche dans les brouillons.
    Sans références (Late Binding), testé office 2010 .

    Bonne journée.

    ps: oublie pas de voter

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Merci Thierry pour ce code

    Bon j'ai testé ton code

    Mais j'ai une question, à quel moment dans mon code je dois testé et comment le faire d'ailleurs pour savoir si l'email a été envoyé
    car j'ai mis dans le code ceci :
    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
        With OutMail
            .UserProperties.Add "EmailRef", olText
            .UserProperties.item("EmailRef").Value = "MaValeur"
            .Display
            .To = Adresse_mail1
            .CC = ""
            .BCC = ""
            .Subject = "Commande / Bestellung : N°" & N°_CF_Fournisseur
            .HTMLBody = strContenu & "<br>" & .HTMLBody
            .Attachments.Add "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
     
        End With
     
        Set OutMail = Nothing
        Set OutApp = Nothing
     
     
     
     
     
    Kill "\\SERVEUR\Access\Données sociétés\Fournisseurs\CF\" & num_cde_f & ".pdf"
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_à_expedier = 0
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Form.CDE_expediée = -1
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF2].Requery
     
     
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].SetFocus
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.FilterOn = False
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = Null
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.Requery
    Forms![F_CF_Fournisseur]![F_CF_Fournisseur_SF1].Form.filtreRecherche = "Rechercher"
     
    DoCmd.GoToControl "N°"
    DoCmd.FindRecord Txt_Mem_CF
     
     
    Call tth

    par contre à peine la fenêtre mail apparait, il me dit que le mail n'a pas été envoyé

    excuse mais la je rame un peu, cela va au dela des mes compétences que j'ai

    pourrais tu m'aiguiller encore un peu

  16. #16
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    "MaValeur", c'est la valeur (texte ou numérique que tu veux donner à ta propriété "EmailRef".

    Ceci lors de la construction de ton mail. Dans ton dernier code, je ne vois ni .Display ou .Send ?!
    Ensuite tout ce qui est à partir de la ligne 21 ou 22 doit etre dans une autre procédure, puisque comme on l'a dit,si le mail est ouvert par .Display
    la procédure continue alors que le mail n'est pas (encore) parti .

    Donc, à partir d'une autre procédure, qui doit etre totalement indépendante ,(sinon le mail n'est toujours pas parti),
    tu te sert de ma proc "tth" en changeant la valeur GetMonMailEnvoyesFind("valeur que tu cherche"), avec les guillemets si tu restes en format texte (marchera aussi pour des nombre).
    Et tu inserts ton code entre la ligne 54 et 55 (p.e), en fonction de ce que renvoie la sub.

    Je suis loin d'etre un pro, mais en utilisant les points d'arret, les espions, la touche F1 ......et DVP, on progresse.
    Bon courage

Discussions similaires

  1. aides pour recuperer valeur et executer suite du code
    Par jah83 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/06/2010, 22h14
  2. Réponses: 1
    Dernier message: 17/03/2007, 21h21
  3. code que je ne comprend pas
    Par gloglo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/01/2007, 18h11
  4. [VB6] Exécuter un programme en tant que...
    Par Le_Tolier dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 28/05/2004, 14h53

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