Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2012, 20h06   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 35
Points : 8
Points : 8
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 :
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
Danad38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 20h18   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
bonsoir
Ne suffit-il pas de modifier le calcul de ta variable Htmlbody?
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 12h26   #3
Invité régulier
 
Inscription : décembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 35
Points : 8
Points : 8
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 :
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
Danad38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h43   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Sauf que quand tu utilises des & il faut sortir de la chaine de caractère :
Code :
1
2
3
str = "La valeur est " & valeur & " !"
'et non :
str = "La valeur est & valeur & !"
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 19h32   #5
Invité régulier
 
Inscription : décembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 35
Points : 8
Points : 8
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 :
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
Danad38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 09h14   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 10h37   #7
Invité régulier
 
Inscription : décembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 35
Points : 8
Points : 8
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 :
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
Danad38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h16   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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 :
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>"
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 17h14   #9
Invité régulier
 
Inscription : décembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 35
Points : 8
Points : 8
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
Danad38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h04.


 
 
 
 
Partenaires

Hébergement Web