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 mail depuis access par outlook, pièce jointe


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Par défaut envoi mail depuis access par outlook, pièce jointe
    Bonjour, j'essaye de mettre en place un système d'envoi de mail depuis access via outlook, R_EMailOui est une requète qui me permet de sélectionner certain des enregistrements selon un champ oui/non, mail est le champ ou l'on rentre les Email, et les Me.txt..., sont des champs du formulaire. Voici le 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
    Private Sub Outlook_Click()
     
     
      ' Initialisation :
      Dim ListeEMail As Recordset
      Set ListeEMail = CurrentDb.OpenRecordset("R_EMailOui")
      ListeEMail.MoveFirst
      ListeComplete = ""
     
      ' Parcourt de la requête :
      While Not ListeEMail.EOF
        ListeComplete = ListeComplete & ListeEMail("Mail") & ";"
        ListeEMail.MoveNext
      Wend
     
      ' On enlève le dernier point virgule :
      ' ListeComplete nous sera évidemment utile tout à l'heure :
      ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
     
      ' Stop DAO :
      ListeEMail.Close
      Set ListeEMail = Nothing
     
     
      ' #######################################
      ' # 2. Envoi de l'E-Mail avec Outlook : #
      ' #######################################
     
      ' Initialisation :
      Dim MonOutlook As Object
      Dim MonMessage As Object
      Set MonOutlook = CreateObject("Outlook.Application")
      Set MonMessage = MonOutlook.createitem(0)
     
      ' Préparation du message :
      MonMessage.To = Me.txtTo
     
      ' Récupération de la chaîne d'E-Mails Access :
      MonMessage.bcc = ListeComplete
      MonMessage.Subject = Me.txtSubject
      Corps = Me.txtCorp
      Corps = Corps & Chr(13) & Chr(10)
       MonMessage.body = Corps
     
      ' C'est parti :
      MonMessage.Send
     
      ' Fermeture de la session Outlook :
      Set MonOutlook = Nothing
     
        End Sub
    Il m'envoie bien les messages comme je le veux, la il n'y a pas de problèmes, mais le problème que j'ai c'est que je voudrais rajouter une pièce jointe, j'ai trouvé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonMessage.Attachments.Add "C:\Isims\3IRT\stage\Base de données\DSC_5818.JPG"
    qui fonctionne mais ce qui m'interesserait c'est de pouvoir modifier dans le formulaire le chemin de la pièce jointe, j'ai deux champ texte avec un bouton pour rajouter le chemin et un pour le supprimer pour chaque champ texte, ca fonctionne, mais lorsque je remplace le C:\Isims\...., par le nom du champ il ne veut pas, que je mette les apostrophes, un égal, les deux ensemble, ou rien, ca ne change rien.

    J'espère avoir été clair, merci d'avance.

    edit: j'ai trouvé la solution, j'ai mis le contenu du champ dans une variable de type string et la ca fonctionne

  2. #2
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Bonjour,

    Je pense qu'il faudrait faire comme ceci :

    Attention ce code nécessite la référence à "Microsoft Outlook XX.0 Object library" et il n'a pas été testé. (Dans le menu du VBE: Outils->Références)

    Il faut joindre les fichiers en parcourant les enregistrements de la requête (J'ai supposé que les URL des fichiers à attacher étaient présent dans la même table).
    Du coup le mail est créé / rempli puis envoyé à la fin.

    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
    Private Sub Outlook_Click()
      Dim MonOutlook As New Outlook.Application
      Dim MonMessage As Outlook.MailItem
      Dim ListeEMail As Recordset
      Dim ListeComplete As String
     
      ' Initialisation
      Set MonMessage = MonOutlook.createitem(0)
      Set ListeEMail = CurrentDb.OpenRecordset("R_EMailOui")
      ListeEMail.MoveFirst
      ListeComplete = ""
     
      ' Parcourt des enregistrements de la requête
      While Not ListeEMail.EOF
        ListeComplete = ListeComplete & ListeEMail("Mail") & ";"
        MonMessage.Attachments.Add ListeEMail("PieceJointe")
        ListeEMail.MoveNext
      Wend
     
      'Remplissage de l'objet MailItem
      MonMessage.To = Me.txtTo
      MonMessage.bcc = left(ListeComplete, Len(ListeComplete) - 1) ' On enlève le dernier point virgule
      MonMessage.Subject = Me.txtSubject
      MonMessage.body = Me.txtCorp & vbCrLf
     
      ' Envoi du mail
      MonMessage.Send
     
      ' Fermeture de la session Outlook et désallocation des objets
      MonOutlook.Quit
      ListeEMail.Close
      Set MonOutlook = Nothing
      Set ListeEMail = Nothing
     
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Par défaut
    les pièces jointes ne se trouve pas dans la même table et ne seront utilisé qu'une seule fois, ils ne sont donc pas stockés dans la base de données, mais à l'extérieur.

    Pour les changements que tu apportes, il est vrai que je peux modifier un peu l'ordre, au lieu de d'abord préparer l'ensemble des mails, je prépare le dit mail, puis la liste, le message et on envoie, c'est plus logique dans ce dernier sens.

    Merci de la réponse.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Par défaut
    Pour éviter de créer un post en plus vu que ca parle toujours d'access et d'outlook, je continue ici.

    En utilisant le code ci dessus(premier post) j'arrive sous access 2007, à créer et envoyer le message, mais quand je le fais passer vers access 2000, j'ai le message d'outlook qui apparait me disant qu'un programme essaye d'envoyer un message, blablabla, le message de sécurité quoi, ca me dérange pas spécialement, ca prouve qu'il y a une connexion entre access et outlook qui se fait, mais pour une raison que j'ignore, il ne m'envoie pas le fichier, et je n'ai rien ni en boite d'envoi, ni en boîte de reception, ni dans message envoyé.

    J'ai essayé sur un autre pc avec la même version d'outlook, la seule différence étant qu'il n'y avait pas de compte configuré dessus, la il me crée bien le message avec pièce jointe, adresse, sujet, et corps correct, mais ne me l'envoie pas, probablement parce que je n'ai pas de compte configuré dessus.

    Serait il possible que le problème viendrait d'une configuration d'outlook dans les machines de l'entreprise, ou est ce que le problème viendrait d'ailleurs? (j'ai retiré les références mauvaises et remis leur équivalent dans les version antérieures, je ne pense pas que ce soit un problème de références, vu que le code dont je m'inspire était fait à la base pour la version 2000).

    J'espère avoir été clair, merci d'avance.

  5. #5
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Bonjour,

    Il est possible qu'il s'agisse ensuite d'un problème de sécurité et c'est une bonne question pour l'administrateur réseau de la société et / ou du service dans lequel vous êtes.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Par défaut
    Bonjour, et merci de la réponse, c'est bien ce que je craignais, le problème étant que je ne le vois qu'une fois toute les lunes et dans cet intervalles la, j'aurais déjà fini mon stage et ne pourrais donc pas le mettre en place correctement, me reste qu'a contourner le problème en faisant sortir la liste des mail dans un champ texte et il leur faudra faire un copier coller d'access vers outlook, pas trop le choix...

  7. #7
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Par défaut
    j'ai réussi à regler le problème en changeant la ligne par .

    Il ne l'envoie pas automatiquement mais ouvre la page d'outlook avec les différentes partie mise en place. qui plus est je n'ai plus le message d'outlook me disant qu'il y a un programme qui veut se connecter et qui nous demande confirmation. Ca ne l'envoi plus automatiquement certe mais le message de sécurité qui n'apparait plus, le fait que ca fonctionne malgré tout, et ca permet à l'utilisateur de vérifier les adresses, c'est une meilleures solution à mon sens.

    Merci pour les réponses.

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

Discussions similaires

  1. [XL-2010] Envoi d'un fichier Excel en pièce jointe par mail.
    Par macboul13 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2015, 07h11
  2. [AC-2003] Envoi mail à liste de destinataires avec pièce jointe et sans Outlook
    Par philippe.desrues dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/07/2013, 16h35
  3. Message d'erreur pour mail depuis VBA par Outlook
    Par Plateforme3 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/12/2007, 13h26
  4. [VBA] Envoi mail sans passer par outlook
    Par PoZZyX dans le forum Access
    Réponses: 8
    Dernier message: 12/04/2006, 17h27
  5. [VBA-A] Envoi de mail sans passer par Outlook ou autre.
    Par genius99 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 08h50

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