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

Envoi de mail depuis VBA access


Sujet :

VBA Access

  1. #21
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Je vois.

    Il faut trouver d'où vient ton processus outlook.

    Outlook est bien fermé !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    Merci pour ton aide, je pense que je vais valider cette solution, et utiliser cette procédure à la fermeture du formulaire qui a permi l'envoi du mail.

    sur un site officiel de microsoft j'ai trouvé ça :

    À cause du complément, il se peut qu'Outlook reste en mémoire après que l'utilisateur l'aura fermé.
    Pour plus de détails et pour savoir comment réparer l'assembly généré par TLBIMP, veuillez vous reporter aux articles suivants dans la Base de connaissances de Microsoft :

    BUG: InvalidCastException Is Generated When You Try to Sink Outlook Application Events (Q309336) ( )
    HOW TO: Build an Office COM Add-in by Using Visual Basic .NET (Q302896) ( )
    voici la page complete

    Je sais pas si c en rapport avec mon probléme mais ça dépasse de loin mais compétence.

    Je vais prendre la solution dégradée de "tuer le process par le code"

  3. #23
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pas la bonne méthode de tuer sans savoir.

    Tu aurais un complément installé ??


    Sans cela, la solution de GetObject devrait te venir en aide.

    En effet un peu plus tôt on t'a proposé le CreateObject qui crée un nouvelle instance même si un instance est déjà ouverte, alors que GetObject utilise l'instance ouverte si elle existe.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    non j'ai pas de complément installé, j'utilise juste la library outlook 11.0. mais comme il y avait un lien entre les complément et les library, je pensais qu'il y avait un rapport avec le bug énoncé par microsoft.

    pour la fonction get, je veux bien testé, mais comment je vois en VB si il existe une instance d'outlook ouverte?

    car get doit bien etre utilisé que s'il l'instance existe?

  5. #25
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Correct.

    Elle apparaît à quel moment ton instance ?

    Avant ton code est-elle présente ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    Alors pour rappel, voici le code que j'utilise :

    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
    Option Compare Database
    Dim oApp As Outlook.Application
     
    Sub UseOutlook(body As String, piecejointe As String)
    'On Error GoTo MonErreur
    Dim Message_Outlook As Object
    Dim myrecordset As DAO.Recordset
    Dim Body_mail As String
    Dim ListeDestinataire As String
    Outlook_LOGIN
    Set Message_Outlook = oApp.CreateItem(0)
    Set myrecordset = CurrentDb.OpenRecordset("SELECT Contact_ONP.mail FROM Contact_ONP WHERE (((Contact_ONP.mail) Is Not Null) AND ((Contact_ONP.listediffusion)=-1));")
     
    ListeDestinataire = ""
    Do
    If ListeDestinataire = "" Then
    ListeDestinataire = myrecordset.Fields(0).Value
    Else
    ListeDestinataire = ListeDestinataire & "; " & myrecordset.Fields(0).Value
    End If
    myrecordset.MoveNext
    Loop While myrecordset.EOF = False
    myrecordset.Close
     
    Message_Outlook.To = ListeDestinataire
    Message_Outlook.Cc = " destinataire "
    Message_Outlook.Bcc = " destinataire "
    Message_Outlook.Subject = "Dorémi - Ajout de rencontre "
    Body_mail = "Nous vous informons qu'une nouvelle rencontre à été ajoutée dans la base Dorémi."
    Body_mail = Body_mail & Chr(13) & Chr(10)
    Body_mail = Body_mail & "Contenu.."
    Message_Outlook.body = body
     
    Message_Outlook.Display
    'oApp.Quit
    Set oApp = Nothing
    'MonErreur:
    'oApp.Quit
    'Set oApp = Nothing
     
    End Sub
     
    Function Outlook_LOGIN() As Boolean
    Dim MAILBOX_STATE, Folder
    On Error GoTo Outlook_Login_Err
    Set oApp = GetObject(, "Outlook.Application")
    If oApp Is Nothing Then
    recup_err:
    Set oApp = CreateObject("Outlook.Application")
    Set MAPI = oApp.GetNamespace("MAPI")
    MAILBOX_STATE = 200
    Set Folder = MAPI.GetDefaultFolder(6)
    Folder.Display
    End If
     
    Exit Function
    Outlook_Login_Err:
    If Err.Number <> 0 Then
    If Err.Number = 429 Then
    GoTo recup_err
    End If
    Exit Function
    End If
    End Function
    Ainsi, c'est la fonction Outlook_LOGIN() qui me permet d'instancié outlook. Je passe par une fonction car elle m'évite une erreur sur le createitem(0) du message.
    Cette fonction m'a été suggéré par isa911, et elle fonctionne bien pour la création de la nouvelle instance.

    A aucun autre moment de mon code je crée une instance ou appel cette fonction.

    Aprés, j'ai pas gérer le cas ou l'utilisateur ait déja lancé outlook... Et je suppose que c'est la que tu interviens avec le get.

  7. #27
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Je sais pas où ça coince.

    Essaie 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
     
    Sub testOutlook()
    On Error Resume Next
    Dim oApp As Outlook.Application
    Set oApp = GetObject(, "Outlook.Application")
    If Err.Number = 429 Then
        CreateObject ("Outlook.application")
    End If
     
    Debug.Print Err.Number
    Debug.Print Err.Description
     
    Set oApp = Nothing
     
    End Sub
    Chez moi, Outlook s'ouvre et se ferme immédiatement et il ne reste rien.
    Si outlook est ouvert, l'application est utilisée et aucune nouvelle instance n'est créée.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Envoi de mail depuis access avec retour sur actions
    Par clickandgo dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/04/2012, 11h03
  2. [AC-2003] Outil d'envoi de mail depuis Access
    Par Kloun dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2009, 10h53
  3. Envoi de mails depuis Lotus notes via Access
    Par samia21 dans le forum IHM
    Réponses: 8
    Dernier message: 26/05/2008, 08h42
  4. [VBA] Gérer la taille des cellules lors de l'envoi de mail depuis excel
    Par Arschney dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2007, 10h58
  5. envoyer un mail depuis VBA access
    Par romrai dans le forum Access
    Réponses: 10
    Dernier message: 06/03/2006, 13h51

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