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 :

Envoyer un mail avec fichier excel attaché


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Envoyer un mail avec fichier excel attaché
    Bonjour,

    J'essaie de créer un bouton dans un formulaire qui me permettrait d'envoyer un mail avec fichier excel attaché ( venant d'un état) à plusieurs destinaires.

    Mon état est basé sur une requête paramétrée. Ce que je souhaiterai faire c'est de mettre en destinaire du mail l'ensemble des enregistrements de ma requête ( j'ai un champs adresse mail dans ma requete que j'ai aussi mis dans mon état ).

    J'essaie de mettre dans une variable ( AdresseMail) le champs "Email" de ma requête "_Cours requete" afin de l'utiliser avec la fonction :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.SendObject acOutputReport, stDocName, acFormatXLS, AdresseMail....
    Est-ce que quelqu'un pourrais m'aider à savoir comment codé correctement pour que ça fonctionne ?

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    As-tu essayé ce que y est proposé dans la FAQ
    http://access.developpez.com/faq/?pa...n#OuvrUnInstOL?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Le problème c'est que je ne connais pas la syntaxe à utiliser pour affecter dans la variable les valeurs d'un champs d'une requête, j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable = [nom_requete].[nomchamps]
    avec ou sans .value derrière ... avec un !

    bref je crois que je mélange plusieurs langage ( ça fait bien longtemps que je n'ai pas eu à coder )

    Merci de m'aider

  4. #4
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Il y a plusieurs sources d'informations pour t'aider là dessus sur dvp.

    Notamment http://warin.developpez.com/access/d...artie_5#L5.4.1

    Le cours entier mérite une bonne lecture
    http://warin.developpez.com/access/dao/?page=sommaire

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai lu ce que tu m'as conseillé, et j'ai donc testé comme 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
    Dim res As DAO.Recordset
    Dim db As DAO.Database
    Set db = CurrentDb
    Set res = db.OpenRecordset([_Cours Requête]![Email], dbOpenDynaset)
     
        Dim stDocName As String
        Dim AdresseMail As String
        Dim i, Compt, numero As Integer
        AdresseMail = ""
    i = res.RecordCount
     res.MoveFirst
     
     For Compt = 0 To i - 1
     AdresseMail = AdresseMail + "," + res
     res.MoveNext
     
            Compt = Compt + 1
       Next Compt
     
        stDocName = "Emploi du temps"
        DoCmd.SendObject acOutputReport, stDocName, acFormatXLS, AdresseMail, , ,,
    ça ne fonctionne toujours pas : il me met comme erreur : "impossible de trouver le '!' auquel il est fait référence dans votre expression."

    En mode débogage il s'arrête sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set res = db.OpenRecordset([_Cours Requête]![Email], dbOpenDynaset)
    sachant que _Cours Requête est ma requête et Email est le nom de mon champs. Au départ je n'avais mis que le nom de la requête mais ça ne fonctionne pas plus.
    Si tu pouvais me dire ce que je fais de travers ... Merci beaucoup de ton aide

  6. #6
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    Tu as dû lire un peu vite ...

    L'openRecordset attend une source de données (le nom d'une table, d'une requête, ou une instruction SQL complète). Cela génère un jeu d'enregistrements dans lequel tu peux par code naviguer ...


    qq chose du genre (idée de code non testée ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    set orst = db.openrecordset("SELECT email FROM [_Cours Requête]")
    ...
    while not orst.EOF
          AdresseMail = AdresseMail & "," & orst!email
           orst.movenext
    wend
    ...

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Effectivement, comme ça ça marche nettement mieux ... Des que j'ai retrouvé mes neurones je continue à bosser ....

    J'ai juste un dernier petit problème, mon code est donc le suivant :
    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
    On Error GoTo Err_Commande23_Click
     
    Param1 = InputBox("Veuillez saisir la semaine de l'emploi du temps à consulter")
     
    Dim res As DAO.Recordset
    Dim db As DAO.Database
    Set db = CurrentDb
    Set res = db.OpenRecordset("SELECT Email FROM [_Cours Requête]where Semaine =" & Param1 & "", dbOpenDynaset)
    Dim stDocName As String
    Dim AdresseMail As String
     
    AdresseMail = ""
    While Not res.EOF
     AdresseMail = AdresseMail + "," + res!Email
     res.MoveNext
    Wend
     
        stDocName = "Emploi du temps"
        DoCmd.SendObject acOutputReport, stDocName, acFormatXLS, AdresseMail, ,
     
     
    Exit_Commande23_Click:
        Exit Sub
     
    Err_Commande23_Click:
        MsgBox Err.Description
        Resume Exit_Commande23_Click
    J'ai déclaré ma variable Param1 en public puisque j'en ai besoin pour un état basé sur ma même requête ( où j'ai besoin de ce paramètre d'entrée sur mon champs Semaine ).
    Dans mon état, sur la zone de texte "Semaine" j'ai donc ajouté comme source de données =[Semaine]=[Param1] mais il ne le reconnait pas comme ma variable déclarée public.
    Je suppose que je dois encore confondre pas mal de chose mais je ne vois pas quoi ...

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir

    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set res = db.OpenRecordset("SELECT Email FROM [_Cours Requête] where Semaine ='" & Param1 & "'", dbOpenDynaset)

    Bon courage

    Didier71

  9. #9
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    Tu ne peux mettre le nom d'une variable - même publique - dans une propriété Source de données.

    Remarque: Il serait trop long pour moi de t'expliquer ici comment faire proprement les choses et cela supposerait de rentrer dans le détail de ton code... mais idéalement, il vaudrait mieux éviter les variables publiques.

    En oubliant cette remarque, pour résoudre ton souci s'agissant d'un état, tu peux alimenter ta zone de texte par code en plaçant quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Report_Open(Cancel As Integer)
       Me!Semaine = param1
    End Sub
    A toi de voir quel évènement de l'état (j'ai pris ici l'ouverture de l'état) est le plus approprié.

Discussions similaires

  1. Envoyer par mail x fichiers excel qui viennent d'une table oracle
    Par philcphilc dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 05/03/2014, 18h20
  2. envoyer un mail avec fichier joint généré par fpdf
    Par abdelkarim_1987 dans le forum Langage
    Réponses: 4
    Dernier message: 25/09/2013, 14h01
  3. Envoyé de mail avec fichier excel non ouvert
    Par Soifranc dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/11/2011, 09h24
  4. Envoyer un mail avec un fichier attaché SANS uuencode
    Par XnaMitch dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/10/2008, 16h56
  5. [Librairies] Envoyer mail avec fichier joint
    Par TicTacToe dans le forum Bibliothèques et frameworks
    Réponses: 24
    Dernier message: 11/05/2006, 17h55

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