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

Macros et VBA Excel Discussion :

Gérer l'envoi de mail préformaté avec outlook depuis données Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Gérer l'envoi de mail préformaté avec outlook depuis données Excel
    Bonjour,
    j'ai une petite question car j'aimerais automatiser un traitement.

    J'ai un fichier Excel comprenant une liste de demandes, avec les coordonnées du demandeur (nom prénom téléphone mail).
    Une demande=une ligne avec la description de la demande et du demandeur.
    J'ai régulièrement besoin de recontacter chacun des demandeurs, et j'utilise pour cela des mails préformatés (j'ai trois modèles) dans lesquels je remplace par exemple [Nom du demandeur] par son nom.
    J'envoie ensuite le mail à la main depuis Outlook.

    J'aimerais automatiser cela car cela devient fastidieux quand j'ai beaucoup de mails à envoyer alors qu'ils ont tous la même forme.

    Ce que j'aimerais faire:
    - Pouvoir cliquer sur la ligne désirée, exécuter ma macro et choisir quel type de mail préformaté envoyer pour cette demande (j'ai trois modèles prédéfinis).
    - qu'en fonction du modèle de mail désiré, ça m'ouvre Outlook,et que le mail soit déjà rempli avec le texte préformaté choisi, un titre générique en objet pour le mail, les informations du demandeur récupérées depuis le fichier Excel à la place de mes champs de type [Nom du demandeur] et son adresse mail déjà renseignée dans l'emplacement "destinataire".
    - que je n'ai plus qu'à contrôler les informations remplies et cliquer sur envoyer.

    Je débute et je ne sais pas comment faire ceci,comment contrôler outlook depuis Excel ni automatiser ces traitements.
    Merci d'avance pour vos pistes et conseils.

    Cordialement,
    M

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Tu peux commencer en cherchant dans les cours, tutaux et FAQ tout ce qui concerne l'automation d'Outlook.

    Bon courage,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    j'y suis à peu près parvenu avec le code suivant mais j'ai encore deux soucis:
    le texte affiché est correct, j'ai bien les champs que je récupère sur mon fichier Excel qui sont insérés et les bonnes infos dans le mail, mais le corps de texte que je stocke dans une variable est tronqué,toujours au même endroit (juste après "nous vous contacterons sous 15 jours" dans le code que j'ai recopié ci-dessous).
    Une variable string peut-elle stocker seulement un nombre maximum de caractères?

    Deuxième problème, je marque mon mail comme envoyé dans une case pour confirmer que j'ai envoyé un mail de confirmation (toute dernière ligne de ma macro)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(LigneCourante, 6) = "x"
    ; hors j'aimerais que cela ne soit fait qu'une fois que j'ai cliqué sur "envoyer le mail",pour le moment cela se fait dès que j'ai exécuté ma macro, même si elle ne fonctionne pas correctement cela se marche comme envoyé.

    Merci d'avance pour votre retour, le code est ci-dessous.
    Cordialement,
    M




    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
     
    Sub SendMail()
      Dim Subj As String
      Dim EmailAddr As String
      Dim Recipient As String
      Dim Fichier As String
      Dim Msg As String
      Dim HLink As String
      Dim LigneCourante As Long
     
    '-------------------------------------------------définir les données
     
          LigneCourante = Windows(ThisWorkbook.Name).ActiveCell.Row
          Subj = "Confirmation de la date d'enregistrement de votre demande "
          Recipient = Cells(LigneCourante, 2)
          Recipient = Recipient & " " & Cells(LigneCourante, 1)
          EmailAddr = Cells(LigneCourante, 5)
     
    '--------------------------------------------------Composer le message
          Msg = "Bonjour " & Recipient & "%0A"
          Msg = Msg & "%0A" & "Nous vous confirmons que votre demande en date du " & Cells(LigneCourante, 3) & " a bien été enregistrée.Nous vous contacterons sous 15 jours pour vous donner une date de réalisation pour l'analyse de votre demande."
          Msg = Msg & "%0A" & "Cordialement,"
          Msg = Msg & "%0A" & "Mon nom"
     
     '--------------------------------------------------Construire lien hypertexte
          HLink = "mailto:" & EmailAddr & "?"
          HLink = HLink & "subject=" & Subj & "&"
          HLink = HLink & "body=" & Msg
     '--------------------------------------------------Transmettre le message
          ActiveWorkbook.FollowHyperlink HLink
     
     '------------------------------------------------- On marque le mail comme envoyé
          Cells(LigneCourante, 6) = "x"
     
    End Sub
    Petit complémnet: j'ai essayé de séparer mo texte et de le stocker dans deux variables, il est toujours tronqué à "nous vous contacterons sous 15"!
    D'ou est-il tronqué de cette manière?
    Voilà le code retouché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    '--------------------------------------------------Composer le message
          Msg = "Bonjour " & Recipient & "%0A"
          Msg = Msg & "%0A" & "Nous vous confirmons que votre demande en date du " & Cells(LigneCourante, 3) & " a bien été enregistrée."
          Msg2 = "Nous vous contacterons sous 15 jours pour vous donner une date de réalisation pour l'analyse de votre besoin."
          Msg2 = Msg2 & "%0A" & "Cordialement,"
          Msg2 = Msg2 & "%0A" & "Mon Nom"
     
     '--------------------------------------------------Construire lien hypertexte
          HLink = "mailto:" & EmailAddr & "?"
          HLink = HLink & "subject=" & Subj & "&"
          HLink = HLink & "body=" & Msg & Msg2

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Une variable de type chaîne peut contenir 2^16 caractères. Le pb ne vient pas de là. Plus probablement de la méthode FollowHyperLink, mais je ne l'ai jamais utilisé pour faire ça, donc je laisse qqn de plus expérimenté s'exprimer sur le sujet.
    Je préfère utiliser l'automation d'Outlook et je pense que tu vas devoir y passer pour résoudre ton deuxème problème.

    Je te renouvelle donc ma suggestion de décrouvir en FAQ ou tutos ce qui concerne l'automation d'Outlook. Plus compliqué, mais tellement plus riche!

    Bon courage,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Merci pour tes conseils mais je n'ai rien trouvé là dessus dans les FAQ (peut-être ai-je mal cherché).
    J'imagine que pour pouvoir contrôler Outlook je vais devoir faire référence à ldes librairies spécifiques, mais les fichiers étant utilisés par de nombreux utilisateurs j'aimerais également éviter ça.
    Personne n'a de renseignements supplémentaires sur la méthode Follow Hyperlink?Je n'ai trouvé que des exemples l'utilisant pour des Url,pas des envois de mails.

    Cordialement,
    M

  6. #6
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Un petit up car ça fait quelques jours et j'en suis toujours au même point.
    Quelqu'un aurait des renseignements supplémentaires sur le fait que mon texte est tronqué quand j'utilise la méthode follow hyperlink?
    J'aimerais bien trouver une solution de contournement.
    Merci d'avance,
    M

    Au pire une autre méthode existerait-elle?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    essaye de remplacer "%0A" par chr(10) & chr(13)
    Elle est pas belle la vie ?

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par random Voir le message
    essaye de remplacer "%0A" par chr(10) & chr(13)
    Salut, j'ai essayé mais ça coupe toujours mon texte et je n'ai plus les retours à la ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          Msg = "Bonjour " & Recipient & Chr(10) & Chr(13)
          Msg = Msg & Chr(10) & Chr(13) & "Nous vous confirmons que votre demande en date du " & Cells(LigneCourante, 3) & " a bien été enregistrée."
          Msg2 = "Nous vous contacterons sous 15 jours pour vous donner une date de réalisation pour l'analyse de votre besoin."
          Msg2 = Msg2 & Chr(10) & Chr(13) & "Cordialement,"
          Msg2 = Msg2 & Chr(10) & Chr(13) & "Mon Nom"

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    D'ou est-il tronqué de cette manière?
    Il me semble que la méthode FollowHyperlink est limitée à 255 caractères.


    bone soirée
    michel

  10. #10
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Ok ce doit être ça.
    Est-il possible de rajouter les autres caractères qui me manquent dans mon mail avec une autre méthode que j'ajouterai?C'est la seule chose dont j'aurais besoin.

    Merci pour votre réponse.
    Cordialement,
    M

  11. #11
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'ai essayé de contourner cela en stockant mon texte dans une variable String et en la collant dans Outlook grâce à Sendkeys.
    Ca fonctionne, mais le seul problème est que le pointeur de souris de trouve au niveau de l'adresse email quand outlook s'ouvre,et donc mon texte est copié dans el champ destinataire".
    Comment la coller dans le corps de texte?
    Cordialement,
    M

  12. #12
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    En allant au bout de ma réflexion j'y suis parvenu: j'ai fait un sendkeys avec 3 TAb.
    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
    Sub ft()
    Dim MailAd As String
    Dim Msg As String
    Dim Subj As String
    Dim URLto As String
    MailAd = Range("E2")
    Subj = "Conformation d'enregistrement de votre demande"
    Range("G2") = "Mon texte"
     
    Range("G2").Select
     
    MsgBox Msg
    URLto = "mailto:" & MailAd & "?subject=" & Subj
    ActiveWorkbook.FollowHyperlink Address:=URLto
     
    ' Boucle d'attente que Outlook se lance
    Dim WaitBegin As Long, WaitEnd As Long
    WaitBegin = Timer
    WaitEnd = WaitBegin + 1
    Do Until Timer >= WaitEnd
    DoEvents
    Loop
     
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys "{TAB}"
    SendKeys Msg
     
    End Sub
    ¨
    Par contre l'attente est assez longue peut-on changer ça?Et à chaque exécution mon verrouillage numérique du clavier est désactivé,pourquoi?

Discussions similaires

  1. [OL-2013] Envoi de mail automatique avec PJ sous outlook 2013
    Par Jwinner dans le forum VBA Outlook
    Réponses: 10
    Dernier message: 21/01/2015, 10h48
  2. [XL-2013] Envoyer un mail automatiquement avec Outlook depuis mon userform
    Par Samira60000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/01/2015, 16h39
  3. [UNIX] envoi de mail HTML avec mailx
    Par darinze dans le forum Développement
    Réponses: 3
    Dernier message: 21/09/2011, 14h24
  4. Réponses: 4
    Dernier message: 02/04/2007, 18h17
  5. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59

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