ENVOI AUTOMATIQUE DE MAIL (AVEC PIÈCE JOINTE) EN VBA : EXCEL, WORD OU ACCESS PAR
cs_Pirotes31
Messages postés37Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention 3 juillet 2015
-
26 mai 2005 à 08:45
castor750108
Messages postés1Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention18 juin 2007
-
18 juin 2007 à 18:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Pirotes31
Messages postés37Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention 3 juillet 2015 26 mai 2005 à 08:45
Merci merci merci et encore merci!
Voilà la source que j'attendais depuis tant de temps!
J'ai laissé des messages sur tout un tas de forum sans obtenir aucune réponse et ton code arrive comme par magie!
Il m'a été d'un grand secours.
Je dois souligner le fait qu'il est particulièrement bien commenté et modulable à souhait.
Je t'ai mis 10/10 afin de te prouver ma gratitude car je désespérais de voir un tel code d'envoi de mail automatique.
C super, et encore merci.
Miss P. :-)
papatte62360
Messages postés2Date d'inscriptionmercredi 17 décembre 2003StatutMembreDernière intervention31 mai 2005 31 mai 2005 à 09:22
impecc!
merki
seanflip
Messages postés3Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention 7 juin 2005 6 juin 2005 à 17:21
Salut papatte62360,
Vraiment un joli code bien expliqué et tout...
Mais j'ai deux problèmes :
-Je voulais le faire marcher sur Mozilla thunderbird, mais rien a faire c toujours outlook express qui s'ouvre,...
-deuxiéme problème surlequel je commence à me tendre, c'est celui des copies du message, j'arrive à accéder à ce champs, mais y vient s'y coller la ligne suivante : "subject=....";
alors ban, c'est vrai qu'il est super ton code, d'ailleurs si je votais je lui mettrais 10 car t'as fait un gros efforts sur les explications et ça c'est super; mais pour ce que je veux en faire, c'est pas le top de ce que devrait être le top.
Bon ben si t'as une idée pour m'aider, tant mieux, sinon tu voulais des remarques sur ton prog, en voila.
salut
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 6 juin 2005 à 23:31
Bjr SEANFLIP
En ce qui concerne Thunderbird ou OutLookExpress, tu dois définir thunderbird comme logiciel de messagerie par défaut. Le prg VBA se contente de communiquer les données au client de messagerie PAR DEFAUT du système. Lorsque tu lance (manuellement) Thunderbird il doit te demander si tu veux qu'il devienne ton client mail par défaut
En ce qui concerne les copies. J'ai essayé avec Cc="adresse" ça fonctionne
Cela donne après la ligne 81 :
Hyperlien=Hyperlien & "&Cc=" & VariableAdresse
ou
Hyperlien=Hyperlien & "&Cc=toto@xxx.fr"
Il ne faut pas oublier le & à l'intérieur des "" avant Cc
Essaie ça
JC
seanflip
Messages postés3Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention 7 juin 2005 7 juin 2005 à 09:49
Salut JC,
Merci pour ces précieux conseils, c'est bo ça marche impeccable.
Mais j'ai encore un souci, c'est pour la mise en forme du mail, j'ai essayé
, vbCrLf et ch(13)(10), mais y a rien qui fait revenir le prompt à la ligne, tout mon mail est écrit sans saut de ligne.
ça me pose quand même un problème....
Si vous avez des idées merci d'avance
seanflip
Messages postés3Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention 7 juin 2005 7 juin 2005 à 09:53
Salut,
Merci pour ta réponse JC, ça marche impeccable.
Mais j'ai un souci dans la mise en forme du mail, j'arrive pas à revenir à la ligne, j'ai essayé
, ch(13)ch10),vbCrLf mais rien à faire ça revient pas a la ligne...
Si vous avez des idées, je suis preneur, merci d'avance
Salut les mecs
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 7 juin 2005 à 10:56
Slt SEANFLIP
Va voir dans le code du classeur Excel, c'est utilisé pour lister les taches lignes par lignes
Ne me demande pas pourquoi VbCrLf ne fonctionne pas... je ne sais pas
JC
jypandre
Messages postés1Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention 4 août 2005 4 août 2005 à 15:52
Bonjour, très bon ton code, j'aurais voulu savoir si c'est possible d'y ajouter une commande (shell ou autre) afin d'y mettre par défaut un papier à lettre... Merci d'avance
cs_dodii
Messages postés12Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention15 mars 2008 16 août 2005 à 18:12
bonjour; l'idée de ce code m'a bien plu mais le probleme c'est que je suis vraiment debutant si vous permettez bien de m'expliquer comment faire pour l'executer j'ai recopié le code dans un module excel et apres ?? je suis sur office excel 2003 .
cs_ordino
Messages postés20Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention13 novembre 2012 14 sept. 2005 à 20:21
14 sept. 2005
Je te donnes une note de 10/10.
J'ai trouvé ton code par Google. Code simple et efficace.
Merci beaucoup.
ordino
cap34
Messages postés1Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention23 septembre 2005 23 sept. 2005 à 16:50
Merci!
c'est exactement ce que je cherchais (c'est mon chef qui va être content!!)
Chris
jfvernoud
Messages postés1Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention15 octobre 2005 15 oct. 2005 à 19:37
Bonjour à tous,
Excellent code mais je rencontre un problème de pièce jointe et ce malgré un paramétrage de la macro pour outlook 2003.
En effet l'envoie automatique se déroule très bien mais aucune pièce jointe n'est insérée en revanche il apparaît dans le corps du message le texte suivant :
Fc :Envoi mail depuis Excel.xls
Ici un petit texte m'indiquant les améliorations, critiques ou autres. Enfin bref un texte pour vérifier qu'il est bien envoyé - (suivant cellule B3)
Adresse : OK envoi et réception en B1
Objet : Ok en B2
Texte : OK en B3
Pièce jointe : c:\Envoi mail depuis Excel.xls en B4 le fichier Envoi mail depuis Excel.xls est bien sous C
Je ne vois pas ou peut être mon erreur.
Merci d'avance de votre aimable réponse,
Cordialement,
JFV
cbr600fs
Messages postés14Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention20 février 20062 24 oct. 2005 à 21:17
Bonjour,
Je suis également débutante et j'aurai voulu savoir comment indiquer que je veux qu'une partie du corps du message soit en gras ou en couleur rouge. J'arrive à effectuer les sauts de lignes via chr(10) et les retours via chr(13) mais en ce qui concerne Gras/Italique ou changement de couleur c'est une autre histoire...
De l'aide serait la bienvenue.
Merci,
Christelle
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 25 oct. 2005 à 23:07
Ce n'est pas que je me désinteresse des questions posées mais je n'étais pas revenu sur vbfrance depuis le mois de juin et je viens de les découvrir. Je vais essayer d'y réfléchir mais je ne promets pas une (des) réponse(s) rapide(s) ni même des réponses tout court...
Jean
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 25 oct. 2005 à 23:23
A l'intention de DODII
Il faut ecrire une procédure (macro) dans le classeur du type
Sub EssaiEnvoi
dim Adr,Obj,Cps,Pièce
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
EnvoiMail Adr,Obj,Cps,Pièce
End Sub
Et associer cette procédure (macro) EssaiEnvoi à un bouton du classeur par exemple
Vous pouvez en trouver un exemple d'utilisation dans le classeur Excel fourni dans le zip
Bonne utilisation
Jean
PhV42
Messages postés1Date d'inscriptionlundi 31 octobre 2005StatutMembreDernière intervention 2 novembre 2005 2 nov. 2005 à 21:58
Merci pour cet excellent bout de code; une fois lancé dans la bonne direction permet de (presque) tout faire; dans mon cas envoi de mails personnalisés contenant un tableau XL, collé comme une image dans le mail ...
Merci !
PhV
cs_dg69
Messages postés6Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 décembre 2005 25 nov. 2005 à 19:54
celà a l'air bien et je vais l'essayer.
Les explications sont claires.
Mais est il possible de l'adapter pour que la pièce jointe soit en fait le document sur lequel on travail dans word ou excel
c'est à dire automatiser : fchier/envoyer vers/destinataire du message (en tant que pièces jointe) et compléter automatiquement les champs A:, le message et l'action d'envoyer.
merci
biwann
Messages postés4Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention17 novembre 2008 29 déc. 2005 à 14:29
Bravo, très bonne idée le coup du mailto: qui permet de pallier au fait que la methode ActiveDocument.SendMail ne permet pas de spécifier le destinataire ni l'objet directement.
Je l'ai modifié pour prendre le nom du fichier courant directement et pour récupérer des champs de mon document qui me permettent de renseigner l'objet du mail de manière générique (j'utilise ActiveDocument.Fields(1).Result pour le champ 1 par exemple).
Autre remarque : les "Attendre 1" au niveau de la boucle de la piece jointe ne sont pas utiles pour Thunderbird. C'est marrant de voir les menus se dérouler tous seuls pour aller chercher la PJ.
biwann
Messages postés4Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention17 novembre 2008 29 déc. 2005 à 14:32
Reponse pour dg69
il suffit simplement de remplacer la ligne :
SendKeys PJ, True
par :
SendKeys ActiveDocument.FullName, True
cs_dg69
Messages postés6Date d'inscriptionjeudi 24 novembre 2005StatutMembreDernière intervention29 décembre 2005 29 déc. 2005 à 19:48
Merci BIWANN,
Mais je n'arrive pas à envoyer le document word sur lequel je travail même en utilisant SendKeys ActiveDocument.FullName, True.
Je n'ai aucune pièce jointe dans mon mail (j'ai outlook 2003).
papillongj
Messages postés3Date d'inscriptionmardi 18 mars 2003StatutMembreDernière intervention31 janvier 2006 30 janv. 2006 à 20:24
Reponse à DG69
Sauve le document actif
ActiveDocument.SaveAs FileName:="c:\temp\nom_fichier.doc"
Puis lance la macro avec en parametre PJ le chemin du fichier enregistré "c:\temp\nom_fichier.doc"
Question :
Tout fonctionne à merveille. Sauf que je souhaite insérer dans le corps du mail un lien vers une page web qui comporte le caractère "&" dans son adresse.
Lorsque je fait:
texte_a_inserer = "toto&&tot"
HyperLien = HyperLien & "&Body=" & texte_a_inserer
Il m'écrit uniquement "toto" et pas le reste
Il interprete le "&" et ne le considère pas comme un caractère à écrire comme du texte dans le mail.
est ce que qqun à une solution?
Merci !!
papillongj
Messages postés3Date d'inscriptionmardi 18 mars 2003StatutMembreDernière intervention31 janvier 2006 30 janv. 2006 à 20:28
Bonjour
pour DG69:
Sauve le document puis envoi le avec en parametre le chemin
ActiveDocument.SaveAs FileName:="c:\temp\document_en_cours.doc"
J'ai une question:
Je souhaite insérer dans le corps du mail une adresse web qui comprend le caractère "&". Le problème c'est qu'il l'interprète et ne le considère pas comme un caractère.
Exemple:
Corps = "tototo&toto"
Il écrit uniquement tototo
Est ce que qqun à une solution?
Merci!!!
papillongj
Messages postés3Date d'inscriptionmardi 18 mars 2003StatutMembreDernière intervention31 janvier 2006 31 janv. 2006 à 10:26
sebosiris
Messages postés3Date d'inscriptiondimanche 5 février 2006StatutMembreDernière intervention12 décembre 2017 12 févr. 2006 à 20:57
Bonjour,
je suis un vrai debutant en matiere de VBA et ce module me parait etre très pratique.
Le problème c'est que sous Word 2000 je n'arrive pas à l'utiliser.
Je souhaiterai envoyer automatiquement le document sur lequel je travaille. Lorsque je crrée une procedure pour appeler ce module, voila ce qui s'affiche dans l'adresse et le sujet : "vrai"
voici la procedure que j'ai placée dans le module du document actif :
Sub EssaiEnvoi
dim Adr,Obj,Cps,Pièce
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
EnvoiEMail Adresse="adresse desirée", Obj="...",Cps,Pièce
End Sub
Bref cela ne fonctionne pas comme je le voudrai.
De plus je souhaiterai associer cette procedure d'envoi de mail a un bouton de commande "valider" d'un userform mais je ne sais pas faire.
Pourriez vous m'aider svp?
ceci m'aiderai bcp pour mon travail
seb
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 12 mars 2006 à 23:20
Pour seb (SEBOSIRIS)
Sub EssaiEnvoi
dim Adr,Obj,Cps,Pièce
' Ces instructions alimentent les variables Adr,Obj et Pièce
' qui sont transmises à la procédure EnvoiMail
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
Cps="Ici le corps du message"
' et si le corps et trop long, on peut l'aliementer en plusieurs fois :
Cps=Cps & " la suite du corps" & vbCrLf
Cps=Cps & " encore une suite après un saut de ligne ajouté par la variable vbCrLf"
EnvoiEMail Adr, Obj,Cps,Pièce
End Sub
La réaction de vb qui affiche 'vrai' est normale car ce qui est transmis à la procédure
EnvoiMail, ce n'est pas le contenu de Adr mais l'expression : Adr="toto@adresse.xxx"
et cette expression est vraie
Donc, il faut écrire soit
Adr="toto@adresse.ddd"
puis
EnvoiMail Adr
soit directement
EnvoiMail "toto@adresse.ddd"
idem bien sur pour l'objet, le corps et les pièces jointes
En ce qui concerne l'utilisation du bouton dans un form, il faut placer votre procédure dans la procédure événementielle Click associée au bouton (double click sur le bouton et vb affiche la procédure) :
Sub MonBouton_Click()
dim Adr,Obj,Cps,Pièce
' Ces instructions alimentent les variables Adr,Obj et Pièce
' qui sont transmises à la procédure EnvoiMail
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
Cps="Ici le corps du message"
' et si le corps et trop long, on peut l'aliementer en plusieurs fois :
Cps=Cps & " la suite du corps" & vbCrLf
Cps=Cps & " encore une suite après un saut de ligne ajouté par la variable vbCrLf"
EnvoiEMail Adr, Obj,Cps,Pièce
End sub
bonne utilisation
Jean
Tanatloc92
Messages postés1Date d'inscriptionvendredi 24 mars 2006StatutMembreDernière intervention27 mars 2006 27 mars 2006 à 11:54
Excellent code !
Un petit rajout pour les utilisateurs de Outlook Office 2000, non compatible pour l'envoi (bon, OK, ya pô grande différence...)
Sub Office2000OutLook()
'Initialisation des tableaux de touches pour Office Outlook 2000
' Pour une pièce jointe
TouchesPJ(0) = 2 ' Nombre de touches nécessaires
TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i
TouchesPJ(2) = "f" ' appel du sous-menu fichier par la touche f
' Pour l'envoi du mail
TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires
TouchesEnvoi(1) = "^{ENTER}" ' Envoi du message avec Ctrl-Entrée
End Sub
Et encore merci nerim ;-)
sanyohan13
Messages postés7Date d'inscriptionmardi 2 mai 2006StatutMembreDernière intervention23 mars 2009 15 juin 2006 à 09:15
salut,
tu n'utilise pas le chrono que tu as mis dans ta partie temporisation???
cyprien35
Messages postés1Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention26 juin 2006 26 juin 2006 à 09:52
Bonjour, j'ai un petit problème pour envoyer des é des è et des & (je compose mon mail en HTML, un é=é)
Quelqu'un aura t-il une solution ?
Merci pour la réponse et pour ce bout de code !
mechive
Messages postés2Date d'inscriptionmercredi 8 décembre 2004StatutMembreDernière intervention12 août 2006 12 août 2006 à 18:35
Bonjour, merci pour ce code.
Mais j'aimerais que l'on ne voit pas les fenetres s'ouvrir pour l'envoi du mail.
J'ai essayé de mettre dans le code :
application.screenupdating=false (au début du code)
application.screenupdating=true (à la fin du code)
Mais cela ne fonctionne pas. Auriez-vous une solution ?
Merci
jeanmich33
Messages postés1Date d'inscriptionmercredi 30 août 2006StatutMembreDernière intervention30 août 2006 30 août 2006 à 22:55
Excellent l'exploitation du "mail to".
j'ai cependant quelques réserves qui me sont apparues à l'usage:
limitation de l'URL à 1024 octets ce qui ampute largement le corps du message, à moins qu'il me manque des éléments?
D'autre part, j'aimerais connaître l'astuce de PhV42 pour intégrer un tableau "sous forme d'image" dans le corps du message avec cette même méthode "mailto".
Et enfin, je confirme que %0A ou %0D fonctionnent pour les retours chariot dans le corpus....
valal vala....
Amitiés à tous!
Jean Michel
VraiGligli
Messages postés1Date d'inscriptionmardi 26 septembre 2006StatutMembreDernière intervention26 septembre 2006 26 sept. 2006 à 14:45
Ce n'est pas original, mais... merci pour ce code ;-)
J'ai réussi à le faire fonctionner sans connaître VB.
Pour Outlook 2002 utilisant Word comme éditeur de mail, le code pour envoyer le message est Ctrl+Alt+Maj E, soit pour VB : ^%E
Padawan62
Messages postés1Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention 5 octobre 2006 5 oct. 2006 à 15:00
Bonjour à tous,
Pour commencer, je précise que je suis plus qu'un novice de VB! J'ai essayé de suivre le fil de ces messages mais ça part un peu dans tous les sens. Est-ce que quelqu'un pourrait m'aider à émerger SVP??? Car je suis complétement perdu!!
En fait, je désire envoyer (avec une messagerie particulière à mon entreprise) le document word sur lequel je travaille en pièce jointe à l'aide d'un bouton.. Quel code dois-je utiliser? il y en a tellement sur cette page.. D'avance merci ,pour toute proposition..
Padawan
nesos
Messages postés1Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention 1 décembre 2006 1 déc. 2006 à 21:03
Bonjour,
Félicitation pour ce code, cependant j'ai un soucis avec Outlook 2000 et windows xp, j'ai une boite de dialogue qui apparait avec le message suivant : "L'argument de la ligne de commande n'est pas valide. Vérifiez le commutateur que vous utilisez."
C'est quoi un commutateur ? et de quelle ligne de commande s'agit il ?
Merci
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 2 déc. 2006 à 22:38
Bonjour,
Pour sanyohan13
J'utilise mon Timer Attendre en ligne 93 (Attendre 5 lors de l'appel du client de messagerie)
puis en lignes 128, 132 et 134 pour l'envoi des touches pour les pièces jointes
Normalement, ces trois "Attendre 1" sont inutiles... mais je conseille de les garder (voire même d'augmenter le délai) en phase de mise au point pour bien voir les menus se dérouler et corriger les éventuels appels de touches qui ne fonctionnent pas.
J'avoue que je n'ai pas essayé avec les dernières versions d'Outlook (2002, 2003 et pourquoi pas 2007 version béta)
Jean
chasss75016
Messages postés1Date d'inscriptionmardi 5 décembre 2006StatutMembreDernière intervention 6 décembre 2006 6 déc. 2006 à 12:41
Bonjour à tous,
Je suis moi aussi novice en VB... et je me heurte à un problème sur l'envoi d'e-mails avec pièce jointe sur outlook 2003...
Le code "%i" sensé reproduire l'action Alt+i ne fonctionne pas... Résultat : au lieu d'insérer une pièce jointe à l'e-mail, je me retrouve avec l'insertion dans le corps de texte de la lettre "f" suivie de l'adresse renseignée en B4 sur le fichier excel... Qu'en pensez vous ? Quelle solution potentielle ?
Merci pour votre aide... je ne vois pas trop quoi faire là...
jm_r22000
Messages postés1Date d'inscriptionlundi 18 décembre 2006StatutMembreDernière intervention18 décembre 2006 18 déc. 2006 à 16:13
Bonjour à tous,
J'ai le même souci que CHASSS75016 : pas de pièce jointe avec outlook 2003, la commande Alt+i ne fonctionne pas car le curseur se trouve au niveau du corps du message.
Peut-être qu'il faut rajouter une commande pour placer le curseur dans la sujet du message avant d'attacher la pièce jointe.
clark1978
Messages postés1Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention13 février 2007 13 févr. 2007 à 12:25
Bonjour,
ce code et top, il répond à une question que j'ai eu la semaine dernière.
Pour aider chasss75016 et jm_r22000, j'utilise aussi Outlook 2003 et j'ai apporté une petite modif suivante:
Sub Office2003OutLook()
'Initialisation des tableaux de touches pour Office Outlook
' Pour une pièce jointe
TouchesPJ(0) = 3 ' Nombre de touches nécessaires
TouchesPJ(1) = "%a" ' Appel du menu Insertion par la touche Alt-i
TouchesPJ(2) = "{RIGHT}" ' appel du sous-menu fichier par la touche f
TouchesPJ(3) = "f"
' Pour l'envoi du mail
TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires
TouchesEnvoi(1) = "%v" ' Envoi du message avec Alt-v
End Sub
J'ai remplacé l'envoie de la touche "%i" par l'envoie des touches "%a" et flèche de droite.
En effet le "%i" ouvrait une fenêtre de recherche de contact au lieu du menu Insertion. Surement un bug D'outlook2003.
Encore brevo pour ce code superbement documenté.
seanbat
Messages postés1Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention15 mars 2007 15 mars 2007 à 15:03
Bonjour,
merci pour ce code vraiment excellent, je l'utilise avec Excel et Outlook 2003, et ca fonctionne très bien.
Le seul problème que je rencontre est que lorsque le mail se compose, il désactive la touche VerrNum et ne la réactive pas.
Je ne sais pas d'ou cela peut venir???
SUMACNAJ
Messages postés35Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention13 septembre 2007 4 mai 2007 à 09:54
Bonjour,
J'aimerais obtenir de l'aide sur l'utilisation de ce code. Mon but est de mettre à disposition un formulaire sous Excel avec des cellules à remplir et des menus déroulants. Une fois que mon utilisateur aura complété son document, il pourra l'envoyer via le bouton mis à disposition sous Excel vers une adresse mail unique.
Mais je suis novice en VB et j'ai un grand besoin de conseils.
Par avance merci de vos réponses, mon adresse mail est tof.jan@laposte.net
SUMACNAJ
Messages postés35Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention13 septembre 2007 9 mai 2007 à 11:56
Bonjour,
Le code me pose un problème parce que je voudrais pouvoir envoyer plusieurs cellules mais dans le code il est indiqué Range("B3") pour le texte et Range("B4") pour la pièce jointe, moi je voudrais que mon texte aille de Range("B3") à Range("B13"), comment faire ?
Merci de vos réponses et de votre aide.
Crusoe30
Messages postés3Date d'inscriptionjeudi 30 septembre 2004StatutMembreDernière intervention11 mai 2007 10 mai 2007 à 21:47
Bonjour
Moi j'ai un petit souci, j'utilise Outlook 2003, le code à l'air de bien marcher, le fichier est bien présent dans l'onglet "Elements envoyès" mais je ne recois aucun fichier
Crusoe30
Messages postés3Date d'inscriptionjeudi 30 septembre 2004StatutMembreDernière intervention11 mai 2007 11 mai 2007 à 12:46
Ouppsssss,
Autant pour moi, tout marche trés bien, simplement les mails sont arrivés aprés avoir posté le mess ci dessus
Par contre je cherche les combinaisons de touches pour utiliser ce programme avec Lotus Notes 4.6... si quelqu'un les connait ....
Merci
jen2204
Messages postés2Date d'inscriptionmardi 22 mai 2007StatutMembreDernière intervention13 août 2008 31 mai 2007 à 13:32
Très bon programme !
Je voudrais en plus que les fenêtre ne s'affichent pas lors de l'envoi du message ! est-ce possible ?
Merci d'avance.
cs_nerim
Messages postés82Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention14 avril 2012 11 juin 2007 à 11:58
Pour SUMACNAJ
Comme dit dans ma réponse à votre mail, l'envoi d'une plage nécessite la mise en forme de cette plage en texte (c'est un texte (String) qu'attend la procédure EnvoiMail). On ne peut se contenter de juxtaposer le contenu de toutes les cellules de la plage, il faut reconstituer le tableau
Deux solutions :
*Transformer la page Excel en tableau HTML (mais votre programme de messagerie risque de vous demander une confirmation pour un envoi de message en HTML, ce qui rompt l'automatisme)
*Transformer la plage Excel en texte avec tabulation entre chaque colonne et retour ligne entre chaque ligne
Voici deux les 2 fonctions qui font cette transformation :
Function PH(LaPlage As Range) As String '(ou Variant si texte de + de 256car)
' transforme une plage en tableau HTML
Dim l As Long, c As Long
PH = "<html>\" 'balises de début du code HTML et de début de table
For l = 1 To LaPlage.Rows.Count ' pour chaque ligne de la plage
PH = PH & \"----
\" ' balise de début de ligne
For c = 1 To LaPlage.Columns.Count 'pour chaque colonne de la ligne
' balise début de colonne + contenu de la cellule + balise fin de colonne
PH = PH & \"" & LaPlage.Cells(l, c) & ", \"
Next c
PH = PH & \"\" ' balise fin de ligne
Next l
PH = PH & "
</html>" ' balises de fin de table et de fin de code HTML
'MsgBox PH
End Function
Function PT(LaPlage As Range) As String
' transforme une plage en texte avec tabulations et retours ligne
Dim l As Long, c As Long
PT = ""
For l = 1 To LaPlage.Rows.Count
For c = 1 To LaPlage.Columns.Count
PT = PT & LaPlage.Cells(l, c)
If c < LaPlage.Columns.Count Then
' on ajoute une tabulation que si on n'est pas sur la dernière colonne
PT = PT & "%09" ' %09 est le code pour la tabulation (vbTab ne fonctionne pas ici)
End If
Next c
PT = PT & "%0A" ' %0A est le code pour le retour ligne (vbCrLf ne fonctionne pas ici)
Next l
'MsgBox PT
End Function
Pour utiliser ces fonction, il suffit de modifier l'appel à la procédure EnvoiMail comme suit :
EnvoiEmail Range("B1"), Range("B2"), PT(Range("B3:B13")), Range("B4")
ou
EnvoiEmail Range("B1"), Range("B2"), PH(Range("B3:B13")), Range("B4")
au lieu de
EnvoiEmail Range("B1"), Range("B2"), Range("B3"), Range("B4")
Merci de m'avoir soumis le problème, je vais modifier mon source publié pour intégrer cette possibilité
cordialement
JC
SUMACNAJ
Messages postés35Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention13 septembre 2007 12 juin 2007 à 08:51
Bonjour Nerim,
Merci de votre réponse, je vous fais parvenir par mail le résultat que j'avais obtenu.
Cordialement
CJ
castor750108
Messages postés1Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention18 juin 2007 18 juin 2007 à 18:48
Bonjour,
C'est exactement la fonctionalité que je cherchais (en Excel 2002 SP3 et THUNDERBIRD 1.5).
26 mai 2005 à 08:45
Voilà la source que j'attendais depuis tant de temps!
J'ai laissé des messages sur tout un tas de forum sans obtenir aucune réponse et ton code arrive comme par magie!
Il m'a été d'un grand secours.
Je dois souligner le fait qu'il est particulièrement bien commenté et modulable à souhait.
Je t'ai mis 10/10 afin de te prouver ma gratitude car je désespérais de voir un tel code d'envoi de mail automatique.
C super, et encore merci.
Miss P. :-)
31 mai 2005 à 09:22
merki
6 juin 2005 à 17:21
Vraiment un joli code bien expliqué et tout...
Mais j'ai deux problèmes :
-Je voulais le faire marcher sur Mozilla thunderbird, mais rien a faire c toujours outlook express qui s'ouvre,...
-deuxiéme problème surlequel je commence à me tendre, c'est celui des copies du message, j'arrive à accéder à ce champs, mais y vient s'y coller la ligne suivante : "subject=....";
alors ban, c'est vrai qu'il est super ton code, d'ailleurs si je votais je lui mettrais 10 car t'as fait un gros efforts sur les explications et ça c'est super; mais pour ce que je veux en faire, c'est pas le top de ce que devrait être le top.
Bon ben si t'as une idée pour m'aider, tant mieux, sinon tu voulais des remarques sur ton prog, en voila.
salut
6 juin 2005 à 23:31
En ce qui concerne Thunderbird ou OutLookExpress, tu dois définir thunderbird comme logiciel de messagerie par défaut. Le prg VBA se contente de communiquer les données au client de messagerie PAR DEFAUT du système. Lorsque tu lance (manuellement) Thunderbird il doit te demander si tu veux qu'il devienne ton client mail par défaut
En ce qui concerne les copies. J'ai essayé avec Cc="adresse" ça fonctionne
Cela donne après la ligne 81 :
Hyperlien=Hyperlien & "&Cc=" & VariableAdresse
ou
Hyperlien=Hyperlien & "&Cc=toto@xxx.fr"
Il ne faut pas oublier le & à l'intérieur des "" avant Cc
Essaie ça
JC
7 juin 2005 à 09:49
Merci pour ces précieux conseils, c'est bo ça marche impeccable.
Mais j'ai encore un souci, c'est pour la mise en forme du mail, j'ai essayé
, vbCrLf et ch(13)(10), mais y a rien qui fait revenir le prompt à la ligne, tout mon mail est écrit sans saut de ligne.
ça me pose quand même un problème....
Si vous avez des idées merci d'avance
7 juin 2005 à 09:53
Merci pour ta réponse JC, ça marche impeccable.
Mais j'ai un souci dans la mise en forme du mail, j'arrive pas à revenir à la ligne, j'ai essayé
, ch(13)ch10),vbCrLf mais rien à faire ça revient pas a la ligne...
Si vous avez des idées, je suis preneur, merci d'avance
Salut les mecs
7 juin 2005 à 10:56
Va voir dans le code du classeur Excel, c'est utilisé pour lister les taches lignes par lignes
(LeMessage=LeMessage & NbTaches & " : " & Selection.Value & "%0A")
Il faut utiliser 0A en hexa : %0A
Ne me demande pas pourquoi VbCrLf ne fonctionne pas... je ne sais pas
JC
4 août 2005 à 15:52
16 août 2005 à 18:12
14 sept. 2005 à 20:21
Je te donnes une note de 10/10.
J'ai trouvé ton code par Google. Code simple et efficace.
Merci beaucoup.
ordino
23 sept. 2005 à 16:50
c'est exactement ce que je cherchais (c'est mon chef qui va être content!!)
Chris
15 oct. 2005 à 19:37
Excellent code mais je rencontre un problème de pièce jointe et ce malgré un paramétrage de la macro pour outlook 2003.
En effet l'envoie automatique se déroule très bien mais aucune pièce jointe n'est insérée en revanche il apparaît dans le corps du message le texte suivant :
Fc :Envoi mail depuis Excel.xls
Ici un petit texte m'indiquant les améliorations, critiques ou autres. Enfin bref un texte pour vérifier qu'il est bien envoyé - (suivant cellule B3)
Adresse : OK envoi et réception en B1
Objet : Ok en B2
Texte : OK en B3
Pièce jointe : c:\Envoi mail depuis Excel.xls en B4 le fichier Envoi mail depuis Excel.xls est bien sous C
Je ne vois pas ou peut être mon erreur.
Merci d'avance de votre aimable réponse,
Cordialement,
JFV
24 oct. 2005 à 21:17
Je suis également débutante et j'aurai voulu savoir comment indiquer que je veux qu'une partie du corps du message soit en gras ou en couleur rouge. J'arrive à effectuer les sauts de lignes via chr(10) et les retours via chr(13) mais en ce qui concerne Gras/Italique ou changement de couleur c'est une autre histoire...
De l'aide serait la bienvenue.
Merci,
Christelle
25 oct. 2005 à 23:07
Jean
25 oct. 2005 à 23:23
Il faut ecrire une procédure (macro) dans le classeur du type
Sub EssaiEnvoi
dim Adr,Obj,Cps,Pièce
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
EnvoiMail Adr,Obj,Cps,Pièce
End Sub
Et associer cette procédure (macro) EssaiEnvoi à un bouton du classeur par exemple
Vous pouvez en trouver un exemple d'utilisation dans le classeur Excel fourni dans le zip
Bonne utilisation
Jean
2 nov. 2005 à 21:58
Merci !
PhV
25 nov. 2005 à 19:54
Les explications sont claires.
Mais est il possible de l'adapter pour que la pièce jointe soit en fait le document sur lequel on travail dans word ou excel
c'est à dire automatiser : fchier/envoyer vers/destinataire du message (en tant que pièces jointe) et compléter automatiquement les champs A:, le message et l'action d'envoyer.
merci
29 déc. 2005 à 14:29
Je l'ai modifié pour prendre le nom du fichier courant directement et pour récupérer des champs de mon document qui me permettent de renseigner l'objet du mail de manière générique (j'utilise ActiveDocument.Fields(1).Result pour le champ 1 par exemple).
Autre remarque : les "Attendre 1" au niveau de la boucle de la piece jointe ne sont pas utiles pour Thunderbird. C'est marrant de voir les menus se dérouler tous seuls pour aller chercher la PJ.
29 déc. 2005 à 14:32
il suffit simplement de remplacer la ligne :
SendKeys PJ, True
par :
SendKeys ActiveDocument.FullName, True
29 déc. 2005 à 19:48
Mais je n'arrive pas à envoyer le document word sur lequel je travail même en utilisant SendKeys ActiveDocument.FullName, True.
Je n'ai aucune pièce jointe dans mon mail (j'ai outlook 2003).
30 janv. 2006 à 20:24
Sauve le document actif
ActiveDocument.SaveAs FileName:="c:\temp\nom_fichier.doc"
Puis lance la macro avec en parametre PJ le chemin du fichier enregistré "c:\temp\nom_fichier.doc"
Question :
Tout fonctionne à merveille. Sauf que je souhaite insérer dans le corps du mail un lien vers une page web qui comporte le caractère "&" dans son adresse.
Lorsque je fait:
texte_a_inserer = "toto&&tot"
HyperLien = HyperLien & "&Body=" & texte_a_inserer
Il m'écrit uniquement "toto" et pas le reste
Il interprete le "&" et ne le considère pas comme un caractère à écrire comme du texte dans le mail.
est ce que qqun à une solution?
Merci !!
30 janv. 2006 à 20:28
pour DG69:
Sauve le document puis envoi le avec en parametre le chemin
ActiveDocument.SaveAs FileName:="c:\temp\document_en_cours.doc"
J'ai une question:
Je souhaite insérer dans le corps du mail une adresse web qui comprend le caractère "&". Le problème c'est qu'il l'interprète et ne le considère pas comme un caractère.
Exemple:
Corps = "tototo&toto"
Il écrit uniquement tototo
Est ce que qqun à une solution?
Merci!!!
31 janv. 2006 à 10:26
http://www.lookuptables.com/
12 févr. 2006 à 20:57
je suis un vrai debutant en matiere de VBA et ce module me parait etre très pratique.
Le problème c'est que sous Word 2000 je n'arrive pas à l'utiliser.
Je souhaiterai envoyer automatiquement le document sur lequel je travaille. Lorsque je crrée une procedure pour appeler ce module, voila ce qui s'affiche dans l'adresse et le sujet : "vrai"
voici la procedure que j'ai placée dans le module du document actif :
Sub EssaiEnvoi
dim Adr,Obj,Cps,Pièce
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
EnvoiEMail Adresse="adresse desirée", Obj="...",Cps,Pièce
End Sub
Bref cela ne fonctionne pas comme je le voudrai.
De plus je souhaiterai associer cette procedure d'envoi de mail a un bouton de commande "valider" d'un userform mais je ne sais pas faire.
Pourriez vous m'aider svp?
ceci m'aiderai bcp pour mon travail
seb
12 mars 2006 à 23:20
Sub EssaiEnvoi
dim Adr,Obj,Cps,Pièce
' Ces instructions alimentent les variables Adr,Obj et Pièce
' qui sont transmises à la procédure EnvoiMail
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
Cps="Ici le corps du message"
' et si le corps et trop long, on peut l'aliementer en plusieurs fois :
Cps=Cps & " la suite du corps" & vbCrLf
Cps=Cps & " encore une suite après un saut de ligne ajouté par la variable vbCrLf"
EnvoiEMail Adr, Obj,Cps,Pièce
End Sub
La réaction de vb qui affiche 'vrai' est normale car ce qui est transmis à la procédure
EnvoiMail, ce n'est pas le contenu de Adr mais l'expression : Adr="toto@adresse.xxx"
et cette expression est vraie
Donc, il faut écrire soit
Adr="toto@adresse.ddd"
puis
EnvoiMail Adr
soit directement
EnvoiMail "toto@adresse.ddd"
idem bien sur pour l'objet, le corps et les pièces jointes
En ce qui concerne l'utilisation du bouton dans un form, il faut placer votre procédure dans la procédure événementielle Click associée au bouton (double click sur le bouton et vb affiche la procédure) :
Sub MonBouton_Click()
dim Adr,Obj,Cps,Pièce
' Ces instructions alimentent les variables Adr,Obj et Pièce
' qui sont transmises à la procédure EnvoiMail
Adr="toto@adresse.xxx"
Obj="sujet du message"
Pièce="c:\.......\MonFichier.jpg"
Cps="Ici le corps du message"
' et si le corps et trop long, on peut l'aliementer en plusieurs fois :
Cps=Cps & " la suite du corps" & vbCrLf
Cps=Cps & " encore une suite après un saut de ligne ajouté par la variable vbCrLf"
EnvoiEMail Adr, Obj,Cps,Pièce
End sub
bonne utilisation
Jean
27 mars 2006 à 11:54
Un petit rajout pour les utilisateurs de Outlook Office 2000, non compatible pour l'envoi (bon, OK, ya pô grande différence...)
Sub Office2000OutLook()
'Initialisation des tableaux de touches pour Office Outlook 2000
' Pour une pièce jointe
TouchesPJ(0) = 2 ' Nombre de touches nécessaires
TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i
TouchesPJ(2) = "f" ' appel du sous-menu fichier par la touche f
' Pour l'envoi du mail
TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires
TouchesEnvoi(1) = "^{ENTER}" ' Envoi du message avec Ctrl-Entrée
End Sub
Et encore merci nerim ;-)
15 juin 2006 à 09:15
tu n'utilise pas le chrono que tu as mis dans ta partie temporisation???
26 juin 2006 à 09:52
Quelqu'un aura t-il une solution ?
Merci pour la réponse et pour ce bout de code !
12 août 2006 à 18:35
Mais j'aimerais que l'on ne voit pas les fenetres s'ouvrir pour l'envoi du mail.
J'ai essayé de mettre dans le code :
application.screenupdating=false (au début du code)
application.screenupdating=true (à la fin du code)
Mais cela ne fonctionne pas. Auriez-vous une solution ?
Merci
30 août 2006 à 22:55
j'ai cependant quelques réserves qui me sont apparues à l'usage:
limitation de l'URL à 1024 octets ce qui ampute largement le corps du message, à moins qu'il me manque des éléments?
D'autre part, j'aimerais connaître l'astuce de PhV42 pour intégrer un tableau "sous forme d'image" dans le corps du message avec cette même méthode "mailto".
Et enfin, je confirme que %0A ou %0D fonctionnent pour les retours chariot dans le corpus....
valal vala....
Amitiés à tous!
Jean Michel
26 sept. 2006 à 14:45
J'ai réussi à le faire fonctionner sans connaître VB.
Pour Outlook 2002 utilisant Word comme éditeur de mail, le code pour envoyer le message est Ctrl+Alt+Maj E, soit pour VB : ^%E
5 oct. 2006 à 15:00
Pour commencer, je précise que je suis plus qu'un novice de VB! J'ai essayé de suivre le fil de ces messages mais ça part un peu dans tous les sens. Est-ce que quelqu'un pourrait m'aider à émerger SVP??? Car je suis complétement perdu!!
En fait, je désire envoyer (avec une messagerie particulière à mon entreprise) le document word sur lequel je travaille en pièce jointe à l'aide d'un bouton.. Quel code dois-je utiliser? il y en a tellement sur cette page.. D'avance merci ,pour toute proposition..
Padawan
1 déc. 2006 à 21:03
Félicitation pour ce code, cependant j'ai un soucis avec Outlook 2000 et windows xp, j'ai une boite de dialogue qui apparait avec le message suivant : "L'argument de la ligne de commande n'est pas valide. Vérifiez le commutateur que vous utilisez."
C'est quoi un commutateur ? et de quelle ligne de commande s'agit il ?
Merci
2 déc. 2006 à 22:38
Pour sanyohan13
J'utilise mon Timer Attendre en ligne 93 (Attendre 5 lors de l'appel du client de messagerie)
puis en lignes 128, 132 et 134 pour l'envoi des touches pour les pièces jointes
Normalement, ces trois "Attendre 1" sont inutiles... mais je conseille de les garder (voire même d'augmenter le délai) en phase de mise au point pour bien voir les menus se dérouler et corriger les éventuels appels de touches qui ne fonctionnent pas.
J'avoue que je n'ai pas essayé avec les dernières versions d'Outlook (2002, 2003 et pourquoi pas 2007 version béta)
Jean
6 déc. 2006 à 12:41
Je suis moi aussi novice en VB... et je me heurte à un problème sur l'envoi d'e-mails avec pièce jointe sur outlook 2003...
Le code "%i" sensé reproduire l'action Alt+i ne fonctionne pas... Résultat : au lieu d'insérer une pièce jointe à l'e-mail, je me retrouve avec l'insertion dans le corps de texte de la lettre "f" suivie de l'adresse renseignée en B4 sur le fichier excel... Qu'en pensez vous ? Quelle solution potentielle ?
Merci pour votre aide... je ne vois pas trop quoi faire là...
18 déc. 2006 à 16:13
J'ai le même souci que CHASSS75016 : pas de pièce jointe avec outlook 2003, la commande Alt+i ne fonctionne pas car le curseur se trouve au niveau du corps du message.
Peut-être qu'il faut rajouter une commande pour placer le curseur dans la sujet du message avant d'attacher la pièce jointe.
13 févr. 2007 à 12:25
ce code et top, il répond à une question que j'ai eu la semaine dernière.
Pour aider chasss75016 et jm_r22000, j'utilise aussi Outlook 2003 et j'ai apporté une petite modif suivante:
Sub Office2003OutLook()
'Initialisation des tableaux de touches pour Office Outlook
' Pour une pièce jointe
TouchesPJ(0) = 3 ' Nombre de touches nécessaires
TouchesPJ(1) = "%a" ' Appel du menu Insertion par la touche Alt-i
TouchesPJ(2) = "{RIGHT}" ' appel du sous-menu fichier par la touche f
TouchesPJ(3) = "f"
' Pour l'envoi du mail
TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires
TouchesEnvoi(1) = "%v" ' Envoi du message avec Alt-v
End Sub
J'ai remplacé l'envoie de la touche "%i" par l'envoie des touches "%a" et flèche de droite.
En effet le "%i" ouvrait une fenêtre de recherche de contact au lieu du menu Insertion. Surement un bug D'outlook2003.
Encore brevo pour ce code superbement documenté.
15 mars 2007 à 15:03
merci pour ce code vraiment excellent, je l'utilise avec Excel et Outlook 2003, et ca fonctionne très bien.
Le seul problème que je rencontre est que lorsque le mail se compose, il désactive la touche VerrNum et ne la réactive pas.
Je ne sais pas d'ou cela peut venir???
4 mai 2007 à 09:54
J'aimerais obtenir de l'aide sur l'utilisation de ce code. Mon but est de mettre à disposition un formulaire sous Excel avec des cellules à remplir et des menus déroulants. Une fois que mon utilisateur aura complété son document, il pourra l'envoyer via le bouton mis à disposition sous Excel vers une adresse mail unique.
Mais je suis novice en VB et j'ai un grand besoin de conseils.
Par avance merci de vos réponses, mon adresse mail est tof.jan@laposte.net
9 mai 2007 à 11:56
Le code me pose un problème parce que je voudrais pouvoir envoyer plusieurs cellules mais dans le code il est indiqué Range("B3") pour le texte et Range("B4") pour la pièce jointe, moi je voudrais que mon texte aille de Range("B3") à Range("B13"), comment faire ?
Merci de vos réponses et de votre aide.
10 mai 2007 à 21:47
Moi j'ai un petit souci, j'utilise Outlook 2003, le code à l'air de bien marcher, le fichier est bien présent dans l'onglet "Elements envoyès" mais je ne recois aucun fichier
11 mai 2007 à 12:46
Autant pour moi, tout marche trés bien, simplement les mails sont arrivés aprés avoir posté le mess ci dessus
Par contre je cherche les combinaisons de touches pour utiliser ce programme avec Lotus Notes 4.6... si quelqu'un les connait ....
Merci
31 mai 2007 à 13:32
Je voudrais en plus que les fenêtre ne s'affichent pas lors de l'envoi du message ! est-ce possible ?
Merci d'avance.
11 juin 2007 à 11:58
Comme dit dans ma réponse à votre mail, l'envoi d'une plage nécessite la mise en forme de cette plage en texte (c'est un texte (String) qu'attend la procédure EnvoiMail). On ne peut se contenter de juxtaposer le contenu de toutes les cellules de la plage, il faut reconstituer le tableau
Deux solutions :
*Transformer la page Excel en tableau HTML (mais votre programme de messagerie risque de vous demander une confirmation pour un envoi de message en HTML, ce qui rompt l'automatisme)
*Transformer la plage Excel en texte avec tabulation entre chaque colonne et retour ligne entre chaque ligne
Voici deux les 2 fonctions qui font cette transformation :
Function PH(LaPlage As Range) As String '(ou Variant si texte de + de 256car)
' transforme une plage en tableau HTML
Dim l As Long, c As Long
PH = "<html>\" 'balises de début du code HTML et de début de table
For l = 1 To LaPlage.Rows.Count ' pour chaque ligne de la plage
PH = PH & \"----
\" ' balise de début de ligne
For c = 1 To LaPlage.Columns.Count 'pour chaque colonne de la ligne
' balise début de colonne + contenu de la cellule + balise fin de colonne
PH = PH & \"" & LaPlage.Cells(l, c) & ", \"
Next c
PH = PH & \"\" ' balise fin de ligne
Next l
PH = PH & "
</html>" ' balises de fin de table et de fin de code HTML
'MsgBox PH
End Function
Function PT(LaPlage As Range) As String
' transforme une plage en texte avec tabulations et retours ligne
Dim l As Long, c As Long
PT = ""
For l = 1 To LaPlage.Rows.Count
For c = 1 To LaPlage.Columns.Count
PT = PT & LaPlage.Cells(l, c)
If c < LaPlage.Columns.Count Then
' on ajoute une tabulation que si on n'est pas sur la dernière colonne
PT = PT & "%09" ' %09 est le code pour la tabulation (vbTab ne fonctionne pas ici)
End If
Next c
PT = PT & "%0A" ' %0A est le code pour le retour ligne (vbCrLf ne fonctionne pas ici)
Next l
'MsgBox PT
End Function
Pour utiliser ces fonction, il suffit de modifier l'appel à la procédure EnvoiMail comme suit :
EnvoiEmail Range("B1"), Range("B2"), PT(Range("B3:B13")), Range("B4")
ou
EnvoiEmail Range("B1"), Range("B2"), PH(Range("B3:B13")), Range("B4")
au lieu de
EnvoiEmail Range("B1"), Range("B2"), Range("B3"), Range("B4")
Merci de m'avoir soumis le problème, je vais modifier mon source publié pour intégrer cette possibilité
cordialement
JC
12 juin 2007 à 08:51
Merci de votre réponse, je vous fais parvenir par mail le résultat que j'avais obtenu.
Cordialement
CJ
18 juin 2007 à 18:48
C'est exactement la fonctionalité que je cherchais (en Excel 2002 SP3 et THUNDERBIRD 1.5).
Mis en oeuvre et paramétré en 2h maximum.
Merci