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 :

Placer des variables dans le corps d'un mail envoyé. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Placer des variables dans le corps d'un mail envoyé.
    Bonsoir à tous,

    Je poursuis l'écriture de mon programme ... Avec votre aide j'y parviens pas à pas.
    Depuis quelques jours je travaille sur l'envoi automatique de mail.
    Voici mon problème.
    A partir d'un UserForm, je sélectionne un fichier et j'y place un certain nombre de modifications à effectuer.
    Ce fichier s'ouvre alors, les modifications sont effectuées dans celui-ci.
    Ensuite je le convertis au format .pdf, je l'enregistre et je le ferme.
    Directement, un mail se prépare avec l'adresse du destinataire, un sujet, un message (body) et le fichier .pdf en pièce jointe. Ce mail est transmis avec Thunderbird. (Mais cela ne doit pas avoir une grande importance ... ?
    Il ne me reste plus alors qu'à contrôler puis valider l'envoi. Je reviens alors sur mon UserForm pour une autre sélection.

    Tout cela fonctionne correctement mais il me reste un problème.
    Je souhaiterais que dans le corps du message, je puisse, par l'intermédiaire de variables, placer des références.

    Mon message pourrait alors ressemblé à :"Veuillez trouver ci-joint le fichier N° .....fourni par une variable.... qui a été enregistré le : .....date fournie par une variable...

    Cela est-il possible avec un niveau de programmation qui ne soit pas "trop ambitieux pour mes compétences".

    Voici la partie du code correspondant à l'envoi du mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Destinataire = Courriel
    Sujet = "Envoi document."
    BodyFormat = 2
    HTMLBody = "<html><body><font size=5><font color=#006633>Entreprise Toto.</font color=#006633></font size=5><br>Rue du Truc<br>00000 Cépala<br>Tél. : 00 00 00 00 00<br>Courriel : toto@.fr<br><br>Madame‚ Monsieur‚<br>Veuillez trouver ci-joint  le fichier N° ..... X.......<br> Celui-ci a été enregistré le ..... date......<br> Nous vous souhaitons bonne réception.<br><br>Monsieur DUPOND</body></html>"
     
    Fichierjoint = "C:\Fichier\Machin\" & Fichier_à_Ouvrir & ".pdf"
     
    strcommand = "D:\Thunderbird\thunderbird.exe"
    strcommand = strcommand & " -compose " & "to='" & Destinataire & "'"
    strcommand = strcommand & "," & "subject=" & Sujet & ","
    strcommand = strcommand & "body=" & HTMLBody
    strcommand = strcommand & "," & "attachment=file:///" & Fichierjoint
    Call Shell(strcommand, vbNormalFocus)
    J'espère avoir été assez clair.

    Merci pour votre aide.

    Danad38

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonsoir
    Ne suffit-il pas de modifier le calcul de ta variable Htmlbody?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Placer des variables dans le corps d'un mail envoyé
    Bonjour bbil,

    Merci pour ta réponse mais comment modifier le calcul de cette variable htmlbody ?
    J'ai bien essayé d'inclure des " & " avec le nom des variables (comme on peut le faire avec des MsgBox par exemple) de manière à écrire par :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    HTMLBody = "<html><body><font size=5><font color=#006633>Entreprise Toto.</font color=#006633></font size=5><br>Rue du Truc<br>00000 Cépala<br>Tél. : 00 00 00 00 00<br>Courriel : toto@.fr<br><br>Madame‚ Monsieur‚<br>Veuillez trouver ci-joint  le fichier N° & Num &<br> Celui-ci a été enregistré le & DateFichier &<br> Nous vous souhaitons bonne réception.<br><br>Monsieur DUPOND</body></html>"

    Mais cela ne fonctionne pas, le message affiche le texte avec les & Num & et & DateFichier &. Aucun appel à la valeur de ces variables.
    Je pense que cette écriture est une "énormité" en programmation ...

    Je reste donc bloqué par cette même question : Est-il possible de placer dans le corps du message (dans htmlbody), entre les balises html, des variables.

    Encore merci.

    Danad38

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Sauf que quand tu utilises des & il faut sortir de la chaine de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    str = "La valeur est " & valeur & " !"
    'et non :
    str = "La valeur est & valeur & !"

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Bonjour Zebreloup,

    Merci !
    J'avais déjà procédé de cette manière (comme dans les MsgBox) mais ta remarque m'a amené à rechercher pourquoi cela ne fonctionnait pas. J'ai trouvé mon erreur.
    A l'introduction de ma variable, je ne fermais pas mes balises Html !
    Mon code doit donc être :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    HTMLBody = "<font size=5><font color=#006633>Entreprise Toto.</font color=#006633></font size=5><br>Rue du Truc<br>00000 Cépala<br>Tél. : 00 00 00 00 00<br>Courriel : toto@.fr<br><br>Madame‚ Monsieur‚<br>Veuillez trouver ci-joint  le fichier N° </body></html>" & Num & <html><body><br> Celui-ci a été enregistré le </body></html> & DateFichier & </body></html><br> Nous vous souhaitons bonne réception.<br><br>Monsieur DUPOND</body></html>"

    Maintenant tout fonctionne correctement.
    Merci pour m'avoir obligé à vérifier plus profondement ce que j'avais fais.

    Danad38

  6. #6
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Ok. Mais quand tu copies du code qui ne marche pas, copie exactement ce que tu as, ce sera plus facile. Parce que par exemple tu dis que ça marche maintenant, mais le dernier code que tu as copié ne peut pas marcher, il manque des guillemets. On le voit tout de suite grâce à la coloration syntaxique.
    Bon courage pour la suite

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Placer des variables dans le corps d'un mail envoyé
    Bonjour ZebreLoup,

    A peine envoyée ma réponse que je constate (on ne se relit jamais assez) qu'en effet j'avais oublié des guillemets. Voulant corriger mon message ma connexion Internet est tombée en panne ! C'est donc avec du retard que je confirme que la ligne de code, avec les guillemets manquants, fonctionne correctement.
    Voici donc la ligne en question (En espérant que, cette fois, je n'ai rien oublié). Dans mon module de macro cette ligne de code n'est pas tout à fait la même, elle introduit des noms de personnes et des adresses, je ne peux donc pas la recopier intégralement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HTMLBody = "<font size=5><font color=#006633>Entreprise Toto.</font color=#006633></font size=5><br>Rue du Truc<br>00000 Cépala<br>Tél. : 00 00 00 00 00<br>Courriel : toto@.fr<br><br>Madame‚ Monsieur‚<br>Veuillez trouver ci-joint  le fichier N° </body></html>" & Num & "<html><body><br> Celui-ci a été enregistré le </body></html>" & DateFichier & "</body></html><br> Nous vous souhaitons bonne réception.<br><br>Monsieur DUPOND</body></html>"
    Merci encore car tu prends le temps de vérifier même si on considère que "ça marche". C'est tout à ton honneur et cela prouve ton sérieux.

    Danad38

  8. #8
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Pas de problème. Un dernier conseil avant de partir. Je n'ai pas tester mais je ne pense pas que tu aies besoin de sortir du html/body à chaque fois que tu entres une variable. Et n'hésites pas à écrire ton code sur plusieurs lignes grâce à _(underscore) pour plus de clarté, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    HTMLBody = "<html><body>" _
        & "<font size=5><font color=#006633>Entreprise Toto.</font color=#006633></font size=5>" _
        & "<br>Rue du Truc" _
        & "<br>00000 Cépala" _
        & "<br>Tél. : 00 00 00 00 00" _
        & "<br>Courriel : toto@.fr" _
        & "<br>" _
        & "<br>Madame‚ Monsieur‚<br>Veuillez trouver ci-joint  le fichier N° " & Num _
        & "<br> Celui-ci a été enregistré le " & DateFichier _
        & "<br> Nous vous souhaitons bonne réception." _
        & "<br><br>Monsieur DUPOND" _
        & "</body></html>"

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Placer des variables dans le corps d'un mail envoyé
    Bonjour ZebreLoup,

    Décidement, tu "fais le travail" jusqu'au bout !
    Merci de tes conseils.
    Ces lignes de code ont été pour moi les premières à intégrer des balises html.
    Il a fallu que je comprenne comment cela fonctionnait ... En effet, je ne suis pas obligé de sortir du<html><body> à chaque introduction de variable. (Merci).
    Ensuite j'avais tenté d'utiliser le _ (Underscore) mais je me trompais dans la syntaxe. Ton exemple m'a montré comment faire. Que de clarté gagnée ! (Re-merci).

    Bonne continuation à toi ainsi qu'à tous les membres de ce forum.

    Danad38

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

Discussions similaires

  1. [AC-2007] Récupérer des informations dans le corps d'un mail Outlook
    Par fragglerick dans le forum VBA Access
    Réponses: 9
    Dernier message: 07/03/2013, 23h19
  2. Réponses: 5
    Dernier message: 16/01/2013, 15h30
  3. affichage des images dans le corps d'un mail
    Par pigeon11 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/06/2008, 13h40
  4. Réponses: 4
    Dernier message: 19/04/2008, 12h10
  5. Réponses: 4
    Dernier message: 11/06/2004, 10h21

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