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 :

Problème pour créer un message outlook à partir des adresses choisies depuis zone de liste à choix multiple [Toutes versions]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Néophyte
    Inscrit en
    Octobre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Néophyte
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 24
    Points : 23
    Points
    23
    Par défaut Problème pour créer un message outlook à partir des adresses choisies depuis zone de liste à choix multiple
    Bonjour.

    Voila un moment que je me prends la tête sans trouver de solution par moi même ou sur le net. Il faut dire que je suis débutant!
    Je précise que je suis sous Access et Outlook 2013

    Je souhaite pouvoir sélectionner depuis Access les adresses courriel de mes utilisateurs contenues dans une table, puis parmi ces adresses pouvoir manuellement sélectionner les adresses auxquelles je souhaite envoyer un message (le même message pour toutes). Je pensais pour cela à une zone de liste à choix multiple contenue dans mon formulaire, à moins que quelqu'un ait mieux à me proposer.

    Ce qui fonctionne :
    - constitution de la liste par l'intermédiaire d'une requête paramétrée (avec un formulaire pour choisir les critères).
    - affichage dans mon formulaire d'une zone de liste à choix multiple contenant les adresses issues de la requête
    - ouverture d'Outlook depuis Access via un bouton dans le formulaire

    Ce qui fonctionne aussi mais ne m'aide pas directement :
    - ouvrir Outlook et y intégrer dans la liste des destinataires d'un nouveau message toutes les adresses contenues dans une requête simple

    Ce qui ne fonctionne pas: (et qui a peut-être de l'importance, donc je préfère le préciser)
    - ouvrir Outlook et y intégrer dans la liste des destinataires d'un nouveau message toutes les adresses contenues dans ma requête paramétrée : j'ai un message d'erreur "erreur d’exécution '3061': trop peu de paramètres. 5 attendu."

    Ce que je ne sais pas faire : (entre autres choses)
    - copier les adresses sélectionnées dans ma zone de liste vers mon message (champ cci en l’occurrence)

    Un petit coup de main serait grandement apprécié SVP!

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,


    Regarde un exemple ici : http://claudeleloup.developpez.com/t...sociation/#LVI
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Néophyte
    Inscrit en
    Octobre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Néophyte
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 24
    Points : 23
    Points
    23
    Par défaut Merci beaucoup !
    Bonjour et merci pour cette réponse rapide!
    Dommage que ma messagerie mette les notifications du forum en spam, je viens juste de voir la réponse.
    Cela me semble effectivement répondre à mon besoin et même plus !
    Par contre ça m'a l'air complexe, je pense que je vais mettre du temps à l'intégrer mais ça vaut le coup.
    Je redirais le résultat ici mais il va me falloir quelques jours pour mettre en œuvre.

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    As tu simplement essayé de faire un PUBLIPOSTAGE ? à partir de Word (Choix "message electronique") pointant sur ta base ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Néophyte
    Inscrit en
    Octobre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Néophyte
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Bonjour et un grand merci pour cette suggestion.
    Cependant compte-tenu de la nécessité en ce qui me concerne (qui plus est dans un environnement multi-utilisateurs) je ne pense pas que cela puisse répondre complètement à mon besoin; en effet il est nécessaire de pouvoir filtrer à chaque publipostage les personnes concernés selon de multiples critères; il me semble que la solution la plus adaptée reste alors de passer par un formulaire de sélection.
    Du coup la base proposée par ClaudeLELOUP répond tout à fait à ce besoin, même si la transposition à mon cas est loin d'être simple, d'autant que j'ai des problèmes avec le code; je suis en Access 2013 64 bits et certains de mes utilisateurs sont en 32...

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Le "publipostage" comporte des options de filtre et de tri.
    une fois ton document initial prêt c'est très simple

    regarde cela https://support.office.com/fr-be/art...rs=fr-BE&ad=BE

  7. #7
    Membre à l'essai
    Homme Profil pro
    Néophyte
    Inscrit en
    Octobre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Néophyte
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2014
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Bonjour et encore merci.
    Pour l’instant je ne souhaite pas passer par Word. Je préfère, par commodité pour les utilisateurs et compte-tenu du besoin actuel se contenter de générer une liste de mél qui s'intègrent automatiquement dans le logiciel de messagerie.
    Entre temps j'ai avancé sur un procédé plus simple, mais vos suggestions m'ont bien orienté et ça m'a permis de trouver une solution simple.
    Voici donc comment j'ai fais:
    Je crée un formulaire double fonction: pilotage de la requête paramétrée et génération du mél.
    Je crée aussi ma requête paramétrée à partir de la base contenant les contacts.
    Je crée un module (sur la base de recherches sur différents sites dont je n'ai pas les références sous la main)
    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
    Public Sub emailing( _
        MelTo As String, _
        Recipient As String, _
        Subject As String, _
        Body As String, _
        Optional Attach As Variant)
     ' --------------------------
        Dim I As Integer
        Dim oEmail As Outlook.MailItem
        Dim appOutLook As Outlook.Application
     
        ' Créer un nouvel item mail
     
        Set appOutLook = New Outlook.Application
        Set oEmail = appOutLook.CreateItem(olMailItem)
     
        ' Les paramètres
        oEmail.To = MelTo
        oEmail.BCC = Recipient
        oEmail.Subject = Subject
        oEmail.Body = Body
     
        If Not IsMissing(Attach) Then
     
           If TypeName(Attach) = "String" Then
     
                 ' S'il y a des pièces jointes
                oEmail.Attachments.Add Attach
     
            Else
     
                For I = 0 To UBound(Attach) - 1
                oEmail.Attachments.Add Attach(I)
     
                Next
     
            End If
     
        End If
     
        ' Envoie le message
        oEmail.Display
     
        ' Détruit les références aux objets
        Set oEmail = Nothing
     
        Set appOutLook = Nothing
     
    End Sub
    Dans mon formulaire, j'ai une zone de texte indépendante appelée "lst2" et j'ai une zone de liste appelée "Lst" à valeurs multiple,contenant les noms des contacts et leurs adresses générés par ma requête.
    Sur l'évènement après MAJ, de "Lst" j'ai le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Me.lst2 = ""
    Dim I As Integer
    For I = 0 To Me.Lst.ListCount
    If Me.Lst.Selected(I) Then Me.lst2 = Me.lst2 & Me.Lst.Column(0, I) & " <" & Me.Lst.Column(1, I) & ">" & "; "
    Next I
    qui vide la zone de texte au cas uù elle n'y serait pas et qui la remplit ensuite avec le nom de chaque contact et son adresse, au format accepté par Outlook, s'il vous plait.
    Un bouton permet d'effacer la sélection dans "Lst" et le contenu de "lst2" avec le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim n As Integer
        With Me.Lst
            For n = 0 To .ListCount - 1
                .Selected(n) = False
            Next n
        End With
    Me.lst2 = ""
    Dim I As Integer
    For I = 0 To Me.Lst.ListCount
    If Me.Lst.Selected(I) Then Me.lst2 = Me.lst2 & Me.Lst.Column(0, I) & " <" & Me.Lst.Column(1, I) & ">" & "; "
    Next I
    un autre permet de sélectionner toutes les adresses dans "Lst" avec le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim n As Integer
        With Me.Lst
            For n = 0 To .ListCount - 1
                .Selected(n) = True
            Next n
        End With
    Me.lst2 = ""
    Dim I As Integer
    For I = 0 To Me.Lst.ListCount
    If Me.Lst.Selected(I) Then Me.lst2 = Me.lst2 & Me.Lst.Column(0, I) & " <" & Me.Lst.Column(1, I) & ">" & "; "
    Next I
    ensuite sur tous mes contrôles je rajoute le code suivant afin de m'assurer que tout est désélectionné dans la liste avant de la mettre à jour et que "lst2" s'efface à chaque fois pour ne pas envoyer aux mauvaises adresses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim n As Integer
        With Me.Lst
            For n = 0 To .ListCount - 1
                .Selected(n) = False
            Next n
        End With
    Me.lst2 = ""
    Dim I As Integer
    For I = 0 To Me.Lst.ListCount
    If Me.Lst.Selected(I) Then Me.lst2 = Me.lst2 & Me.Lst.Column(0, I) & " <" & Me.Lst.Column(1, I) & ">" & "; "
    Next I
    Lst.Requery
    lst2 = ""
    Ne manque plus que le bouton qui appelle oultlook, avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Me.lst2 = ""
    Dim I As Integer
    For I = 0 To Me.Lst.ListCount
    If Me.Lst.Selected(I) Then Me.lst2 = Me.lst2 & Me.Lst.Column(0, I) & " <" & Me.Lst.Column(1, I) & ">" & "; "
    Next I
    Call emailing("mon-adresse@la-seule-visible.fr", Me.lst2, "sujet-du-message-ou-laisser-vide", "")
    Les adresses sont alors en copie cachée.
    Vous remarquerez qu'il est possible de peaufiner pour intégrer le corps du message ou ajouter une pièce jointe.


    Voila, encore un grand merci à vous pour l'aide; ça marche pour l'instant et je planche sur une adaptation à Thunderbird.
    J'ai essayé de présenter rapidement les choses pour vous tenir informés de mes progrès, même si il y des bricoles pas tout à fait au point mais il y aurait matière à améliorer le code notamment pour éviter tout ce qui est redondant.

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

Discussions similaires

  1. [Vxi3] Problème pour créer des tranches horaires
    Par Laure94 dans le forum Designer
    Réponses: 2
    Dernier message: 11/07/2011, 18h15
  2. Problème pour créer des sous-figures avec subfig
    Par cmilie dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 17/07/2009, 10h22
  3. Problème pour créer des objets de la même classe
    Par Dietzer dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 25/06/2009, 17h01
  4. [URL] problème pour créer un url a partir d'une adresse relative
    Par luckyvae dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 04/10/2007, 11h37
  5. [XML word] problème pour créer des puces
    Par ratapapa dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/07/2005, 13h52

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