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

boîte de dialogue enregistrer sous pour enregistrer le ou les mails sélectionnés


Sujet :

VBA Outlook

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut boîte de dialogue enregistrer sous pour enregistrer le ou les mails sélectionnés
    Bonjour.

    Je ne suis pas familier avec les macros Outlook, c’est pourquoi je fais appel à vous.

    Comment ouvrir la boîte de dialogue «enregistré sous» choisir le dossier et enregistrer le ou les mails sélectionnés au format msg ou txt, ainsi que leurs pièces jointes.

    Merci d’avance pour votre aide.

  2. #2
    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
    Bonsoir,
    il y a des exemples dans la faq notamment celui-ci pour sauvegarder au format .MSG, dans ce format les PJ sont également dedans.

    Concernant la partie PJ j'ai abordé le sujet récemment ICI

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonsoir
    il y a des exemples dans la faq notamment celui-ci pour sauvegarder au format .MSG, dans ce format les PJ sont également dedans.
    C'est ce qu'il me faut, en modifiant comme un peu.

    J'ai ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oShell = CreateObject("Shell.Application")
    Et remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    repertoire = BrowseForFolder("Choisissez la destination", SDossier(5, 0)) & "\"
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    repertoire = oShell.BrowseForFolder(0, "Choisissez la destination", 1) & "\"
    Ça fonctionne !

    Par contre pour enregistrer en txt comment modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objCurrentMessage.SaveAs PathNomExport, OlSaveAsType.olMSG
    Une question :
    Si plusieurs messages sont sélectionnés, la boîte de dialogue "Enregistrer sous" revient autant de fois que le nombre de msg sélectionnés il faut choisir chaque fois le dossier.
    Comment faire une boucle sur tous les messages sélectionnés pour les enregistrer sous le même dossier sans être obligé de selectionner celui-ci à chaque fois ?

  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

    Pour enregistrer en txt il faut changer olMSG par olTXT. attention dans ce cas les PJ ne seront pas exportées.

    Pour Avoir une seule boite de dialogue il faut rendre ta variable "repertoire" PUBLIC par exemple et la tester avant l'affichage de la boite de dialogue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if repertoire ="" then 
    repertoire = oShell.BrowseForFolder(0, "Choisissez la destination", 1) & "\"
    end if

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonsoir Oliv-
    Pour Avoir une seule boite de dialogue il faut rendre ta variable "repertoire" PUBLIC par exemple et la tester avant l'affichage de la boite de dialogue
    Ça fonctionne la première fois, si un ou plusieurs messages sont sélectionnés, la boîte de dialogue s'ouvre, après avoir choisi le répertoire les messages sont sauvegardés dans celui-ci.

    Si l'opération est renouvelée, après avoir sélectionné un ou plusieurs messages, la boîte de dialogue s'ouvre plus et les messages sont sauvegardés dans le répertoire choisi précédemment.

    Je ne trouve pas la solution pour ouvrir une deuxième fois la boîte afin de choisir un répertoire différent.

    Avez-vous une solution.

  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
    Tu mets au début de la procédure principale

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    bonjour Oliv-

    Ça fonctionne, merci pour ton aide.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour

    Je reviens sur cette discussion pour une nouvelle question.

    Est-ce possible d'ajouter au sujet la valeur d'un champ de publipostage du document Word ?

    Par exemple : MyIt.Subject = "Concerne votre inscription " & Nom du champ

  9. #9
    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
    champ de publipostage du document Word
    Bonjour,
    c'est la première fois que tu évoques cela, il faudrait que tu expliques un peu...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour oliv-

    Faudra-t-il ouvrir une nouvelle discussion au sujet de mon dernier message après lecture des explications ci-dessous ?

    Le principe est le suivant :

    - Le contenu d’un document Word comportant des champs de publipostage sert de base pour envoyer des mails à différent adhérent.

    Comment dans l'objet du mail : MyIt.Subject = "Concerne votre inscription" récupérer et ajouter ici le champ «Nom adhérent»

    J’utilise la procédure suivante qui provient certainement de ce forum et je suis navré de ne pas citer l’auteur car je n’ai pas noté son nom.
    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
    Sub EnvoiMail()
    Dim oApp As Outlook.Application
    Dim MyIt As MailItem
    'Dim myAtt As Attachment
    Dim stTemp As String
    Dim myRange As Range
    Set myRange = ActiveDocument.Range
    myRange.WholeStory
    myRange.Select
    stTemp = Selection.Text
     
    Set oApp = CreateObject("outlook.application")
    Set MyIt = oApp.CreateItem(olMailItem)
    'Set myAtt = MyIt.Attachments.Add(ActiveDocument.FullName)
     
    MyIt.To = "xxxxxx@orange.fr"
    MyIt.Subject = "Concerne votre inscription " & … 
    MyIt.BodyFormat = olFormatHTML
    MyIt.Body = stTemp
     
    MyIt.Send
     
    End Sub

  11. #11
    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,
    Non tu peux continuer dans ce sujet de toute façon, il n'y a pas à part moi, à mon désarroi, beaucoup de personnes qui répondent.

    Ton code de publipostage semble tronqué ? Pourquoi n'utilises tu pas le publipostage de WORD ? dois tu envoyer des pièces jointes ?

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour
    Ton code de publipostage semble tronqué ? Pourquoi n'utilises tu pas le publipostage de WORD ? dois tu envoyer des pièces jointes ?
    Je ne vois pas où mon code est tronqué, pourriez-vous préciser à quel endroit ?

    À la ligne 17 : MyIt.Subject = "Concerne votre inscription " ICI je souhaite récupérer la valeur du champ de publipostage «Nom adhérent» du document WORD qui me sert de base pour envoyer un mail.

    Oui le mail comprend une pièce jointe, j'ai commenté cette possibilité dans le code.

    J'espère que l'explication est plus claire.

    Merci pour ta réponse & @ +

  13. #13
    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,

    En fait, généralement un publipostage sert à envoyer une multitude de Courrier ou Email, sur la base d'un modèle en allant piocher les infos dans une base (un fichier excel, une base accès,...)

    Dans ton code il n'y a pas de boucle, c'est donc que tu envois un seul Email ? pourquoi le mail est en "dur" (MyIt.To = "xxxxxx@orange.fr")

    Essaye comme cela ActiveDocument.MailMerge.DataSource.DataFields("Nom adhérent").Value

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonsoir

    En effet pour le moment le code envois un seul Email et c'est pourquoi le destinataire du mail est en "dur" (MyIt.To = "xxxxxx@orange.fr").

    J'utilise le publipostage pour sélectionner le destinataire sur la base d'un modèle piochant les infos (adresse mail, nom de l'adhérent) dans une base de fichier Excel.

    Si on bascule sur le code du champ "Nom adhérent" il affiche { MERGEFIELD NOM_ } et sur le champ "Adresse mail" il affiche { MERGEFIELD ADRESSE_MAIL_ }

    J'ai fait le test avec ta proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.MailMerge.DataSource.DataFields("MERGEFIELD NOM_").Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.MailMerge.DataSource.DataFields("MERGEFIELD ADRESSE_MAIL_").Value
    Ça ne fonctionne pas.

    L'idée de faire une boucle sur plusieurs destinataires d'une une multi sélection dans une liste déroulante se serait les pied mais c'est trop compliqué pour moi.

  15. #15
    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
    Il ne faut pas mettre "megerfield " mais.juste le nom qui apparaît dans Excel.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour et merci pour votre aide.

    J'ai crée une entête de message composée par le logo, l'adresse et n° téléphone.

    Premier souci l'entête ne se positionne pas en haut du corps du message mais 2 lignes plus bas, est-ce possible de corriger cela.

    Un autre petit souci, la macro efface l'entête. Comment faire pour l'éviter ?

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour,

    J'ai trouver la solution à un détail près !

    Le principe est d’insérer l’image du logo dans le document Word, et grâce au code de Morgan BILLY ICI l’image est récupérer dans le corps du message Outlook, mais elle se positionne à droite.

    Comment la positionner à gauche ??

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour

    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
    Sub EnvoiMail()
    Dim oApp As Outlook.Application
    Dim MyIt As MailItem
    'Dim myAtt As Attachment
    Dim stTemp As String
    Dim myRange As Range
     
    Set myRange = ActiveDocument.Range
    myRange.WholeStory
    myRange.Select
    stTemp = Selection.Text
     
    Set oApp = CreateObject("outlook.application")
    Set MyIt = oApp.CreateItem(olMailItem)
    'Set myAtt = MyIt.Attachments.Add(ActiveDocument.FullName)
     
    MyIt.To = "xxxxxx@orange.fr"
    MyIt.Subject = "Concerne votre inscription " & ActiveDocument.MailMerge.DataSource.DataFields("NOM_").Value MyIt.BodyFormat = olFormatHTML
    MyIt.Body = stTemp 
    MyIt.Send 
     
    End Sub
    Citation :
    Il faut AFFICHER le mail (.display), ce qui fait apparaître la signature, avant d'AJOUTER quelque chose au corps du Mail et non pas le remplacer.
    En gros il faut faire
    Où faut-il placer le code d'Oliv- trouver dans une autre discussion pour insérer une entête (align=left la réponse à ma précédente question)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'afficher
    MyIt.Display
    Signature = MyIt.HTMLBody
    MyIt.HTMLBody = "<body>" & vbCr & "<img src=" & Chr(34) & "C:\Users\xxx\Documents\xxxx\image_entete_outlook.jpg" & Chr(34) & " align=left>" & vbCr & "</body>" & Signature

  19. #19
    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,
    Je crois que tu fais fausse route, soit tu utilises Word et ses fonctions de publipostage, soit tu t'affranchies de word et tu fais directement un publipostage maison à partir de Excel, mais dans ce cas tu dois créer ton Mail avec tes balises HTML.

    Il faut que tu me dises :

    Envoi tu 1 Mail à 1 seul destinataire ou à ou plusieurs ?
    Est ce toujours le même logo (+images) quel que soit le destinataire ?
    Envoi tu une PJ systèmatiquement ? si oui est-ce la même pj quel que soit le destinataire ?

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    779
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 779
    Points : 178
    Points
    178
    Par défaut
    Bonjour,
    Oui j'envoie 1 Mail à 1 seul destinataire ou à plusieurs.
    Oui c'est toujours le même logo (+images) quel que soit le destinataire.
    Non je n’envoie pas une PJ systématiquement, si j'envoie une PJ elle est la même quel que soit le destinataire.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/12/2007, 14h36
  2. [VB] macro pour enregistrer sous
    Par CélineM dans le forum SDK
    Réponses: 1
    Dernier message: 07/06/2007, 12h28
  3. macro pour enregistrer sous
    Par macromega dans le forum Général VBA
    Réponses: 2
    Dernier message: 03/05/2007, 19h17
  4. [PHP-JS] Définir chemin pour enregistrer sous
    Par zia2 dans le forum Langage
    Réponses: 16
    Dernier message: 16/05/2006, 18h31
  5. Réponses: 3
    Dernier message: 03/11/2005, 18h30

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