Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
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 16/11/2007, 11h48   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 33
Points : 2
Points : 2
Par défaut envoyer plage excel par Outlook ?

Bonjour,

mon problème est le suivant : je désire envoyer automatiquement "via une macro VBA" une plage d'une feuille excel. J'aimerais que cette plage qui contient un tableau soit copiée dans le corps du message outlook avant son envoi.

J'ai pu dénicher ce code qui ne me permet d'envoyer que le contenu d'une cellule et pas celui d'une plage entière :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Sub SendMail_Outlook()
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
 
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
 
    .To = RANGE("B1").Value
    .Subject = RANGE("B2").Value
    .Body = RANGE("F6").Value
    .Send
 
End With
End Sub
dans le .body, je n'arrive pas à spécifier le contenu d'un tableau
Merci d'avance de votre aide
mjanbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 11h57   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Tu veux que ce soit un tableau, ou simplement les données des cellules.

si ce sont les données, tu peux concaténer avant de l'atribuer au Body;

Code :
1
2
3
4
5
6
7
Dim stTemp as string
stTemp = Range("F6").Value & vbCrLf
stTemp = stTemp & Range("F7").value & vbCrLf
 
 
 
.body = stTemp
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 12h16   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
As-tu essayé

On envoie un fichier Excel.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 12h16   #4
Invité de passage
 
Inscription : novembre 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 33
Points : 2
Points : 2
Merci pour ta réactivité

En fait j'ai besoin de coller (dans le body) un tableau de donnée avec sa mise en forme (couleur et font)

Si je concatène, je récupère les données brutes mais par le tableau telkel

merci de vos eclaircissement
mjanbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 12h33   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Je ne vois pas beaucoup d'issues.

En envoyant ton mail, je suppose, j'espère qu'il est au format HTML.

La plage de cellules est-elle toujours la même.
Si c'est le cas, on peut toujours Transformer avec une fonction la plage de cellules en tableau.

Mais je pense que tu ferais bien de poser ta question dans le forum Excel, c'est un meilleur endroit.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 12h34   #6
Invité de passage
 
Inscription : novembre 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 33
Points : 2
Points : 2
je peux envoyer tout le fichier en pièce jointe avec le code :

Code :
.Attachments.Add "D:\DATA MEHDI\VBA\OUTLOOK\Example envoi file outlook VBA.xls"
mais je veux envoyer uniquement le tableau, voir uniquement la feuille qui le comporte et non pas tout le classeur xls
mjanbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 12h40   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Repose ta question dans le forum Excel, c'est plus un problème Excel que Outlook. tu y rencontrera des spécialiste de Excel qui ont certainement une solution à te proposer.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 12h47   #8
Invité de passage
 
Inscription : novembre 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 33
Points : 2
Points : 2
Je bascule vers le forum xls

merci de tes réponse qui m'ont comme même avancé un peu
mjanbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2007, 12h05   #9
Membre chevronné
 
Avatar de cavo789
 
Homme Christophe Avonture
Développeur Web
Inscription : mai 2004
Messages : 649
Détails du profil
Informations personnelles :
Nom : Homme Christophe Avonture
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 649
Points : 774
Points : 774
Bonjour

Voici mon code. Il me permet de sélectionner un range. Ensuite, je fais appel à la méthode PublishObjects qui va générer un fichier nommé XLRange.htm.

Ceci fait, j'appelle une fonction qui me crée un email Outlook et qui prend le fichier HTML généré comme .HTMLBody du mail. Je ne fournis pas le code de cette fonction car, nul doute, que tu trouveras plein de sources de ce type (Outlook VBA Automation) sur le net.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub SendRangePerMail()
 
Dim rngeSend As Range
Dim sFileName As String
 
   ' Select the range to be sent
 
   With ExcelApp
 
      On Error Resume Next
 
Set rngeSend = _
  .InputBox(Prompt:="Please select range you wish to send.", Type:=8, _
  Default:=.Selection.Address, Title:=sTitle)
 
      If rngeSend Is Nothing Then Exit Sub 'User pressed Cancel
 
      On Error GoTo 0
 
      ' Get the temp folder path
 
      sFileName = "C:\Temp\XLRange.htm"
 
      ' Now create the HTML file
 
      .ActiveWorkbook.PublishObjects.Add(4, sFileName, rngeSend.Parent.Name, _
         rngeSend.Address, 0, "", "").Publish True
 
 Call oMail.PrepareOutlookMail("", False, , , sFileName, "", True, _
  .ActiveWorkbook.Name)
 
      ' The HTML file generated by Excel is no more needed
 
      Kill sFileName
 
   End With ' With ExcelApp
 
End Sub
__________________
Christophe
Développeur de l'extension AllEvents, gestionnaire d'évènements pour Joomla
http://avonture.be/allevents - https://www.facebook.com/com.allevents - http://twitter.com/#!/avonture
cavo789 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h58.


 
 
 
 
Partenaires

Hébergement Web