Code VBA pour coller un tableau excel dans corps de mail Outlook - VB/VBA/VBS - Programmation
Marsh Posté le 16-05-2013 à 08:02:05
As tu regardé si les fonctions .Copy et .Paste fonctionnent ? Sinon, il faudra probablement passer par de l'écriture html dans le code vba, du genre :
|
C'est juste pour te donner une piste, je viens d'écrire ces lignes juste là, de tête. La méthode est bonne, probablement pas la syntaxe !
J'ai déjà utilisé cette méthode pour envoyer des messages via outlook formatés en HTML. Ça fonctionne bien, mais c'est très chiant à écrire !
Edit : un lien vers la syntaxe des tableaux en HTML : http://www.guide-code-html.com/les-tables-html.php
Marsh Posté le 16-05-2013 à 09:33:50
Bonjour Otobox!
Merci pour cette réponse rapide!
J'ai effectivement déjà essayé les fonctions .copy et .paste, mais cela ne fonctionen pas.
Je vais me pencher sur le lien que tu m'as envoyé et essayer d'y voir clair
Marsh Posté le 16-05-2013 à 10:02:32
Est-ce que ce code crée un nouveau tableau pour ensuite insérer mes données dedans?
Ou faut-il reprendre les caractéristiques de mon tableau excel existant?
Je suis désolée, je suis vraiment débutante en vba!
Marsh Posté le 16-05-2013 à 11:01:51
Merci Marc, je pense effectivement revenir vers CDO car via outlook je galère vraiment à insérer ce tableau dans le corps du mail.
Marsh Posté le 16-05-2013 à 11:24:34
Regarde ici :
http://msdn.microsoft.com/en-us/li [...] e.11).aspx
ça a marché pour moi.
Marsh Posté le 16-05-2013 à 11:38:55
Takama13, val_ou souhaite coller son tableau dans le corps même d'un mail, pas en pièce jointe …
A noter le même auteur dans nos liens, une référence !
CDO permet aussi de s'affranchir des blocages de sécurité depuis la version 2007 d'Outlook …
Marsh Posté le 16-05-2013 à 13:34:34
Oui, effectivement … Franchement, t'aurais pu (dû !) la mettre directement en lien !
En tout cas lien à conserver …
Marsh Posté le 16-05-2013 à 13:49:44
J'ai modifié et utilisé le code du sujet "Mailing a Range or Selection in the Body of an E-Mail Message" http://msdn.microsoft.com/fr-fr/li [...] ectionBody
Mais la macro me dit que la fonction .HTMLBody = RangetoHTML(rng) n'est pas définie.
Est-ce que vous avez une idée?
J'ai l'impression que je ne m'en sortirai jamais. . .
V.
Marsh Posté le 16-05-2013 à 13:59:53
"You need to use this module with the RangetoHTML subroutine."
Où le trouver?
Faut-il le cocher dans les compléments?
Marsh Posté le 16-05-2013 à 14:09:29
Marc L a écrit : |
Je sais, mais je pensais que c'était utile de voir toutes les possibilités
val_ou a écrit : "You need to use this module with the RangetoHTML subroutine." |
C'est sur la même page :
Creating HTML for a Worksheet, Range, or Selection
The function RangetoHTML is called in the following sections in this column:
Marsh Posté le 16-05-2013 à 15:25:43
Merci beaucoup Takama13 pour ton aide.
Le tableau est enfin inséré dans le corps de mon mail!
Malheureusement, lorsque j'ajoute un .body = "corps de texte", mon tableau est supprimé.
N'est-il pas possible de mettre mon tableau + du texte?
Marsh Posté le 16-05-2013 à 15:29:42
Je pense être parvenue à mes fins!
Merci pour ce lien, c'est une vraie mine d'or!
http://msdn.microsoft.com/en-us/li [...] ectionBody
Marsh Posté le 16-05-2013 à 15:51:40
Pour ajouter du texte, je ne sais pas.
à cette ligne :
.HTMLBody = RangetoHTML(rng) & Signature
Essaie :
.HTMLBody = RangetoHTML(rng) & Signature & "Ton texte"
Marsh Posté le 16-05-2013 à 15:53:21
Tu penses que ma signature se mettra automatiquement en mettant & Signature?
Pour ajouter du texte, on peux faire .HTMLBody = "texte" & RangeToHTML(rng)
Ou bien ajouter la fonction
Dim StrBody As String
' Build the string that you want to add.
StrBody = "This is line 1" & "<br>" & _
"This is line 2" & "<br>" & _
"This is line 3" & "<br><br><br>"
Marsh Posté le 16-05-2013 à 16:30:11
Pour ta signature, ajoute dans ton code, juste avant "With OutMail" :
Code :
|
Pour le texte, tu veux ajouter quoi ?
Marsh Posté le 16-05-2013 à 16:32:38
En fait mon texte utilise également des variables.
Quand je n'avais pas mon tableau et que je mettais mon texte style :
"dear all,
please find the resultats for the period Tblo(1) & "-" & Right(Year(Date), 2), cela fonctionnait.
Mais ... en intégrant ces variables dans le StrBody, ça ne fonctionne pas
Marsh Posté le 16-05-2013 à 16:55:43
A la ligne :
.HTMLBody = RangetoHTML(rng) & ...
Tu peux ajouter des variables (comme la signature dans mon exemple plus haut), et même du texte en utilisant du code HTML.
Mais je ne connais pas l'HTML pour t'aider.
Marsh Posté le 16-05-2013 à 17:02:23
Le problème c'est que si j'utilise .HTMLBody = RangetoHTML(rgn) & du texte, il me collera tout mon texte à la suite. Sans faire de retour à la ligne.
En ce qui concerne la signature, j'ai un message d'erreur sur "GetBoiler" (ligne 4 dans ton code) : erreur de compilation, Sub ou Funtion non définie
Marsh Posté le 16-05-2013 à 17:14:33
oops, désolé, voici la fonction :
Code :
|
Pour ne pas que ton texte apparaisse à la suite, il faut que tu utilises du code HTML.
En cherchant vite fait sur google, cela donnerait :
.HTMLBody = RangetoHTML(rng) & "<HTML><BODY>je saute la ligne ici <br> et voilà!</BODY></HTML>"
Marsh Posté le 16-05-2013 à 17:33:14
Ma signature ne s'insert pas
Est-ce que le fait que le code soit avant le "With OutMail" et donc les destinataires, le sujet, le corps, ça joue?
Marsh Posté le 16-05-2013 à 17:38:01
Tu as bien mis le bon chemin ici :
"\Microsoft\Signatures\Nom de ta signature dans outlook.htm"
PS : il faut que tu changes Nom de ta signature dans outlook hein
Marsh Posté le 16-05-2013 à 17:40:16
oui bien sur mdr!
C'est mon Prenom et mon Nom, avec un espace entre les deux, mais ça ne fonctionne pas
Marsh Posté le 16-05-2013 à 17:50:11
Tu as vérifié que "\Microsoft\Signatures\TonPrénom TonNom.htm" existe sur ton disque dur ?
Marsh Posté le 17-05-2013 à 10:24:45
Elle existe, j'ia fait une recherche avec le mot clef "signature"
Marsh Posté le 17-05-2013 à 10:39:50
étrange, cela marche bien chez moi.
tu as quoi comme erreur ?
Marsh Posté le 17-05-2013 à 10:48:40
Aucune erreur, la signature ne se met pas tout.
Est-ce qu'il faut préciser le serveur C?
Parce que j'ai 9 serveurs sur ce pc.
Marsh Posté le 17-05-2013 à 11:25:51
S'il ne met rien, c'est qu'il ne trouve pas ton fichier.
Tu es sous windows 7 ?
Si oui, regarde dans c:\utilisateurs\TonCompteUtilisateur\AppData\Roaming\Microsoft\Signatures et regarde qu'il y ait bien le fichier TonPrénomTonNom.htm
Marsh Posté le 17-05-2013 à 13:12:28
Dans mon c:\utilisateurs\mon id je n'ai accès qu'à mes documents, ma musique, mes images, etc (les autres dossiers doivent être masqués)
Si je fais une recherche, je trouve que ma signature "Valerie" (je l'ai renommé pour éviter l'espace) se trouve quand même bien dans c:\utilisateurs\ccbd (mon id)\AppData\Roaming\Microsoft
Marsh Posté le 17-05-2013 à 16:09:38
ALLELUIA !
Faute vraiment bête . . . dans mon .HTMLBody = StrBody & RangetoHTML(rng) j'avais oublié le & Signature!
Par contre, mon logo ne s'insert pas dans ma signature (pas très très grave mais pas parfait)
Marsh Posté le 17-05-2013 à 16:10:37
Merci milles fois Takama13 !!
Je ne m'en serai jamais sortie sans toi!
Marsh Posté le 17-05-2013 à 16:15:51
La fontion GetBoiler lit ta signature en mode texte.
Donc pas de logo.
et de rien
Marsh Posté le 17-05-2013 à 16:19:16
Je ne sais pas.
J'ai récupérer le code sur le lien que j'ai donné plus haut.
Je n'ai pas de logo dans ma signature donc je ne me suis pas posé la question.
Marsh Posté le 17-05-2013 à 16:21:33
Ah d'accord.
Ce n'est pas très grave c'est un petit détail.
Encore merci!
Marsh Posté le 15-05-2013 à 16:28:00
Bonjour à tous et à toutes,
Je suis actuellement en train de travailler sur une macro qui génère un email à une liste définie de personne.
Ma macro trouve les destinataires (feuille 2 dans fichier 1), ajoute le sujet du mail, le texte pour le corps du mail.
Le soucis qui se pose à moi et qui m'a valu la lecture de tous les topics possibles et inimaginables durant 3 jours est le suivant : j'aimerais coller le tableau de mon fichier 2 dans le corps même de mon email.
J'ai réussi à créer le code qui me permet de mettre ce tableau en pièce jointe, mais j'aimerais savoir s'il est possible de le mettre dans le corps du mail, après mon texte.
Merci pour votre aide !