Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2481 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code VBA pour coller un tableau excel dans corps de mail Outlook

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Code VBA pour coller un tableau excel dans corps de mail Outlook

n°2190320
val_ou
Posté le 15-05-2013 à 16:28:00  profilanswer
 

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  :) !

mood
Publicité
Posté le 15-05-2013 à 16:28:00  profilanswer
 

n°2190362
otobox
Maison fondée en 2005
Posté le 16-05-2013 à 08:02:05  profilanswer
 

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 :


Dim msgCorps as string
msgCorps="<table>" 'Ouverture d'un tableau en html"
msgCorps=msgCorps & "<tr><td>" & cells(i,j).value & "</td><td>"  & cells(i,j+1).value & "</td></tr>"
msgCorps=msgCorps & "<tr><td>" & cells(i+1,j).value & "</td><td>"  & cells(i+1,j+1).value & "</td></tr>"
msgCorps=msgCorps & "</table>
'etc
'puis ensuite envoyer le corps du message avec :
objMessageOutlook.bodyHtml=msgCorps


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


Message édité par otobox le 16-05-2013 à 08:03:31

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°2190370
val_ou
Posté le 16-05-2013 à 09:33:50  profilanswer
 

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 :)

n°2190373
val_ou
Posté le 16-05-2013 à 10:02:32  profilanswer
 

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!

n°2190379
Marc L
Posté le 16-05-2013 à 10:55:49  profilanswer
 


           Bonjour.
 
           Apparemment le plus simple serait de passer par CDO
 
           Bon courage !
 
         

n°2190381
val_ou
Posté le 16-05-2013 à 11:01:51  profilanswer
 

Merci Marc, je pense effectivement revenir vers CDO car via outlook je galère vraiment à insérer ce tableau dans le corps du mail.

n°2190388
Takama13
Posté le 16-05-2013 à 11:24:34  profilanswer
 

Regarde ici :
http://msdn.microsoft.com/en-us/li [...] e.11).aspx
 
ça a marché pour moi.

n°2190396
Marc L
Posté le 16-05-2013 à 11:38:55  profilanswer
 

 
           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 …


Message édité par Marc L le 16-05-2013 à 11:45:41
n°2190407
Takama13
Posté le 16-05-2013 à 12:11:48  profilanswer
 

je sais, regarde la "part two"

n°2190424
Marc L
Posté le 16-05-2013 à 13:34:34  profilanswer
 

 
           Oui, effectivement …   Franchement, t'aurais pu (dû !) la mettre directement en lien !
 
           En tout cas lien à conserver …
 

mood
Publicité
Posté le 16-05-2013 à 13:34:34  profilanswer
 

n°2190428
val_ou
Posté le 16-05-2013 à 13:49:44  profilanswer
 

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.
 

n°2190431
val_ou
Posté le 16-05-2013 à 13:59:53  profilanswer
 

"You need to use this module with the RangetoHTML subroutine."
 
Où le trouver?
Faut-il le cocher dans les compléments?

n°2190435
Takama13
Posté le 16-05-2013 à 14:09:29  profilanswer
 

Marc L a écrit :

 
           Oui, effectivement …   Franchement, t'aurais pu (dû !) la mettre directement en lien !
 
           En tout cas lien à conserver …
 


 
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."
 
Où le trouver?
Faut-il le cocher dans les compléments?


 
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:

n°2190451
val_ou
Posté le 16-05-2013 à 15:25:43  profilanswer
 

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?

n°2190453
val_ou
Posté le 16-05-2013 à 15:29:42  profilanswer
 

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


Message édité par val_ou le 16-05-2013 à 15:58:28
n°2190454
Takama13
Posté le 16-05-2013 à 15:51:40  profilanswer
 

Pour ajouter du texte, je ne sais pas.
à cette ligne :
.HTMLBody = RangetoHTML(rng) & Signature
 
Essaie :
.HTMLBody = RangetoHTML(rng) & Signature & "Ton texte"

n°2190455
val_ou
Posté le 16-05-2013 à 15:53:21  profilanswer
 

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>"

n°2190460
Takama13
Posté le 16-05-2013 à 16:30:11  profilanswer
 

Pour ta signature, ajoute dans ton code, juste avant "With OutMail" :
 

Code :
  1. SigString = Environ("appdata" ) & "\Microsoft\Signatures\Nom de ta signature dans outlook.htm"
  2.     If Dir(SigString) <> "" Then
  3.         Signature = GetBoiler(SigString)
  4.     Else
  5.         Signature = ""
  6.     End If


 
Pour le texte, tu veux ajouter quoi ?

n°2190461
val_ou
Posté le 16-05-2013 à 16:32:38  profilanswer
 

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

n°2190468
Takama13
Posté le 16-05-2013 à 16:55:43  profilanswer
 

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.
 

n°2190470
val_ou
Posté le 16-05-2013 à 17:02:23  profilanswer
 

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

n°2190474
Takama13
Posté le 16-05-2013 à 17:14:33  profilanswer
 

oops, désolé, voici la fonction :

Code :
  1. Function GetBoiler(ByVal sFile As String) As String
  2.     Dim fso As Object
  3.     Dim ts As Object
  4.     Set fso = CreateObject("Scripting.FileSystemObject" )
  5.     Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
  6.     GetBoiler = ts.readall
  7.     ts.Close
  8. End Function


 
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>"

n°2190478
val_ou
Posté le 16-05-2013 à 17:33:14  profilanswer
 

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?

n°2190481
Takama13
Posté le 16-05-2013 à 17:38:01  profilanswer
 

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 ;)

n°2190483
val_ou
Posté le 16-05-2013 à 17:40:16  profilanswer
 

oui bien sur mdr!
C'est mon Prenom et mon Nom, avec un espace entre les deux, mais ça ne fonctionne pas :/

n°2190485
Takama13
Posté le 16-05-2013 à 17:50:11  profilanswer
 

Tu as vérifié que "\Microsoft\Signatures\TonPrénom TonNom.htm" existe sur ton disque dur ?

n°2190562
val_ou
Posté le 17-05-2013 à 10:24:45  profilanswer
 

Elle existe, j'ia fait une recherche avec le mot clef "signature"

n°2190565
Takama13
Posté le 17-05-2013 à 10:39:50  profilanswer
 

étrange, cela marche bien chez moi.
tu as quoi comme erreur ?

n°2190566
val_ou
Posté le 17-05-2013 à 10:48:40  profilanswer
 

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.

n°2190578
Takama13
Posté le 17-05-2013 à 11:25:51  profilanswer
 

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

n°2190590
val_ou
Posté le 17-05-2013 à 13:12:28  profilanswer
 

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

n°2190602
Takama13
Posté le 17-05-2013 à 14:30:19  profilanswer
 

c'est bien un fichier htm ?

n°2190656
val_ou
Posté le 17-05-2013 à 16:01:10  profilanswer
 

Oui je l'ai est au format .htm et .rtf

n°2190659
Takama13
Posté le 17-05-2013 à 16:07:32  profilanswer
 

Alors je comprends pas, désolé.

n°2190661
val_ou
Posté le 17-05-2013 à 16:09:38  profilanswer
 

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)

n°2190662
val_ou
Posté le 17-05-2013 à 16:10:37  profilanswer
 

Merci milles fois Takama13 !!  :bounce:  
 
Je ne m'en serai jamais sortie sans toi!  :)  :)

n°2190663
Takama13
Posté le 17-05-2013 à 16:15:51  profilanswer
 

La fontion GetBoiler lit ta signature en mode texte.
Donc pas de logo.

 

et de rien :jap:


Message édité par Takama13 le 17-05-2013 à 16:16:10
n°2190665
val_ou
Posté le 17-05-2013 à 16:17:16  profilanswer
 

On peux pas mixer texte + image?

n°2190666
Takama13
Posté le 17-05-2013 à 16:19:16  profilanswer
 

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.

n°2190668
val_ou
Posté le 17-05-2013 à 16:21:33  profilanswer
 

Ah d'accord.
Ce n'est pas très grave c'est un petit détail.
 
Encore merci! :)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code VBA pour coller un tableau excel dans corps de mail Outlook

 

Sujets relatifs
Action automatique à la reception d'un mailProbleme sur Macro Excel 2010
[.htaccess] remplacer les accents par leur code - URL rewritingIdentification et codage VBA
Vba import csv to xls[Excel/VBA] MàJ Données Graphique
[excel] nom case à cocher automatiqueGénérer des codes sur Excel
[VBA] comparaison de 2 fichiers excel 
Plus de sujets relatifs à : Code VBA pour coller un tableau excel dans corps de mail Outlook


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR