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 :

[VBA]Boucle et Pièces Jointes sur mailing list


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Février 2006
    Messages : 230
    Points : 176
    Points
    176
    Par défaut [VBA]Boucle et Pièces Jointes sur mailing list
    Bonjour,
    Comme toujours j'avance dans cette mine de renseignements et de tuyaux qu'est ce forum. Véritablement, cela donne envie de progresser même si parfois le découragement fait place quand on se compare à d'autres. enfin trois mois seulement cela laisse l'espoir !!!

    J'ai un formulaire basé sur une requête me permettant de sélectionner les correspondants à qui je veux envoyer un email... J'y joins une pièce jointe personnalisée que je tire d'un lien hypertexte renseigné dans ma table initiale... Tout fonctionne bien sauf qu'il me met pour tous les correspondants sélectionnés la pièce jointe correspondante au premier de la liste !!! c'est un problème de boucle sans doute... mais je ne vois pas la solution... si simple probablement.

    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
    Private Sub Mail_Click()
    Dim olApp As Outlook.Application
      Dim EMail As Outlook.MailItem
      Set olApp = Outlook.Application
      'Déclaration d'une variable ADO :
      Dim bds As New ADODB.Recordset
      bds.Open "R_Sélect_Email", CurrentProject.Connection
     
      ' On se positionne sur le premier enregistrement :
      bds.MoveFirst
      ' Tant que le dernier enregistrement n'est pas atteint :
      While Not bds.EOF
      ' On affiche le contenu du champs NomPrenom et EMail :
        Set EMail = olApp.CreateItem(olMailItem)
       Set myAttachments = EMail.Attachments
     
        With EMail
        .To = bds("E_mail")
        .Subject = "Ma société"
        .Attachments.Add (Forms!Employés1.Fiche_Id.Hyperlink.Address)
        .Body = "Ceci est un test. Nous vous demandons de ne pas répondre à ce message."
        .Display
        '.Send
        End With
        ' On va sur le suivant :
        bds.MoveNext
      Wend
      ' On ferme et on libère la variable :
      bds.Close
      Set bds = Nothing
    End Sub

    F (il fait très beau aux Marquises) !!!

  2. #2
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    tu attaches effectivement le même fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         .Attachments.Add (Forms!Employés1.Fiche_Id.Hyperlink.Address)
    il faudrait que tu prennes l'adresse dans la table sur laquelle tu boucles et non pas sur le formulaire

    PS: Il fait très beau en Auvergne aussi....
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    A Toulouse c'est une tempête de ciel bleu... Pour la baignade on va attendre Juillet ou Aout.

    Il s'agit des adresses Employé1. Tu peux ouvrir le recordset du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forms.employé1.recordset
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.enployé1.recordsetclone
    Pour la boucle je te laisse faire.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Février 2006
    Messages : 230
    Points : 176
    Points
    176
    Par défaut Pièce jointe dans boucle email
    Bonjour,
    Je reviens vers vous après quelques jours en mer. Les sirènes ne m'ont guère inspiré... Définitivement, j'ai un problème de conception dans ma boucle et je n'arrive pas à attacher ma pièce jointe 1 avec mon escorte 1, PJ2 avec escorte 2... Je tourne en rond (pas dans le Pacifique heureusement). Je suis revenu au point de départ. Quelqu'un peut il me mettre sur la voie pour savoir quoi et où insérer le code dans mon code déjà existant ?
    Merci

  5. #5
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Février 2006
    Messages : 230
    Points : 176
    Points
    176
    Par défaut Piece jointe et mailing
    Re bonjour,
    Je ne doute pas que Loufab avait la solution... que j'ai vainement cherchee. En plus la difference entre recordset et recordset clone est totalement floue pour moi meme avec l'aide. Quequ,un aurait-il un element pour aiguiller un pauvre marin solitaire du Pacifique Sud !

  6. #6
    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
    Regarde ici, peut-être pour l'inspiration.

    Je hais les gens qui profitent du soleil quand je dois faire du vélo sous la neige.
    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 !

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Le recordset d'un formulaire correspond à l'ensemble des enregistrements (et des champs ) spécifié par la source de celui-ci.

    Le recordsetclone est une "copie" de ce même recordset. Celui-ci est utiliser particulièrement lorsque l'on veut utiliser une valeur du recordset sans changer d'enregistrement courant.

    Beaucoup d'application en perspective. Copie de valeur, recherche sans interférer dans la position...

    Dans le cas qui te concerne tu dois utiliser le recordset ou recordsetclone (suivant si tu veux ou ne veux pas changer le pointeur de position) pour récupérer les employés.

    La déclaration est simple

    dim rst as dao.recordset
    set rst = forms.Employés1.recordset

    Cela se traite comme un recordset classique (voir le tuto sur DAO)

    Cordialement,
    A l'occase fait nous parvenir une belle photo de ton ile
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Février 2006
    Messages : 230
    Points : 176
    Points
    176
    Par défaut
    Bonjour de Bora Bora,
    J'ai enfin finalisé grâce à votre aide et cette mine que constitue le forum, ma petite automatisation de mails...

    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
    Private Sub Mail_Click()
     Dim olApp As Outlook.Application
     Dim EMail As Outlook.MailItem
      Set olApp = Outlook.Application
      'Déclaration d'une variable ADO :
      Dim bds As New ADODB.Recordset
      bds.Open "R_Sélect_Email", CurrentProject.Connection
      ' On se positionne sur le premier enregistrement :
      bds.MoveFirst
      ' Tant que le dernier enregistrement n'est pas atteint :
      While Not bds.EOF
      ' On affiche le contenu du champs NomPrenom et EMail :
        Set EMail = olApp.CreateItem(olMailItem)
     
       With EMail
        .To = bds("E_mail")
        .Subject = "Ma société"
        If IsNull(bds("fiche_Id")) = False Then
        .Attachments.Add (bds("Fiche_Id"))
        End If
        .Body = "Ceci est un test. Nous vous demandons de ne pas répondre à ce message."
        .Display
        '.Send
        End With
        ' On va sur le suivant :
        bds.MoveNext
      Wend
      ' On ferme et on libère la variable :
      bds.Close
      Set bds = Nothing
    End Sub
    Pour aller plus loin, j'envisage de faire une table de messages m'évitant d'aller dans le code pour modifier le sujet et le contenu du message. A priori pas de porblème.
    Par contre, il me semble avoir déjà vu sur le forum une discussion pêrmettant de rechercher automatiquement le chemin des pièces jointes... en effet, mes pj au format pdf sont toujours du type A.pdf, B.pdf, C.pdf... où A, B, C seraient les noms des employés et par conséquent similaires au champ "Nom". Quel est le moyen ou le lien où je peux trouver de l'aide au développement de ce projet ?

    Merci encore déjà de m'avoir aider à ce développement précédent.. mais que les progrès sont laborieux !!!

    A bientôt

    Une petite photo d'hier pour la route...

    F

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/07/2011, 16h41
  2. Envoi pièce jointe sur mail
    Par binou-ze dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2010, 10h39
  3. [AC-2003] boucle sur pièces jointes envoi mail
    Par novice06 dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2010, 14h50
  4. [Mail] Envoi de pièces jointes sur email
    Par Atrahazis dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2007, 14h35
  5. Insertion pièce jointe sur mail
    Par Michel DELAVAL dans le forum Access
    Réponses: 1
    Dernier message: 27/06/2006, 11h18

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