copier une plage dans outlook

C@thy

XLDnaute Barbatruc
Bonjour le forum,:cool:

j'ai cherché les fils correspondant au sujet, mais je ne trouve pas ce que je cherche.

Je dois copier une plage excel et la coller dans outlook, mais collage spécial en tant que image métafichier améliorée, en effet, le mail doit pouvoir être lu depuis un smartphone (traduction de mûre, pour ne pas le nommer...), et seule l'image métafichier améliorée convient...

je joins mon fichier exemple (et mes élucubrations macro) si ça peut aider.

Un grand merci à tous ceux qui pourraient tenter de répondre à ce sujet.

Bizz

C@thy
 

Pièces jointes

  • archivage de taux 2013 test envoi outlook.xlsm
    52.7 KB · Affichages: 68

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

à Gérard : j'ai outlook 2010 aussi, et cela ne fonctionne pas pour la 1ère version
le collage ne se fait pas, mon message est vide...
pour la 2ème il me dit un composant activex ne peut pas créer d'objet...

je teste la soluce de Staple...

Bizz

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

Pour l'agrafe :

ceci ne lui plait pas :

Set Outlook = GetOutlookApp

il me dit "objet requis", j'ai bien activé la référence outlook x.x object library

screugneugneu...

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : copier une plage dans outlook

Bonjour C@thy, le forum,

Il faut déjà voir si tu arrives à envoyer un mail quelconque par Outlook.

La méthode de mon post #15 est classique, mets la ligne du collage en commentaire.

A+
 

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

Bonjour Gérard, le fil,

merci à tous pour tous vos efforts.

oui j'arrive à envoyer mon message par macro sans le paste (qui ne fonctionne pas)
le corps du message est vide.

je vais essayer de le faire en html...

Biz a tutti

C@thy
 

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

Bon, en html c'est absolument affreux, les cellules fusionnées ne le sont plus, la présentation ne va pas du tout
voici mon code :
Code:
sub envoimail
Const sign1 = "Cellule Trésorerie"
Const sign2 = "Agence France Trésor"
Const sign3 = "Tél. : 01 00 00 00 00"
Const dest = [EMAIL="toto@toto.fr"]toto@toto.fr[/EMAIL]"
Sub PlageDeCellulesDansCorpsDuOlItem()
Dim appOutlook As Outlook.Application
Dim OlItem As Outlook.MailItem
Dim iMsg As Object, iConf As Object
Dim strHTML As String
Dim I As Byte, j As Byte, nb As Variant
'Crée une session Microsoft Outlook
Set appOutlook = CreateObject("outlook.application")
Set OlItem = appOutlook.CreateItem(olMailItem)
'On Error GoTo mg
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "<HTML><body><img src='D:\Gestion du CUT_Etape 4 OK au 04-06-13\logoAFT.bmp'><br>" _
& "Bonjour,<BR><BR>vous trouverez ci-joint le tableau du solde du compte à la clôture des opérations du " & Format(Now, "dd mmmm yyyy") & ".<BR><BR>" _
strHTML = strHTML & "<TABLE BORDER>"
strHTML = strHTML & "<TD align='center'><FONT COLOR='blue'>" & "Date" & "</FONT></TD>"
Sheets("Envoi du message trésorerie").Select
For I = 3 To 49 + rep 'nombre de lignes
strHTML = strHTML & "<TR halign='middle'nowrap>"
For j = 2 To 7 'nombre de colonnes
strHTML = strHTML & "<TD align='center'><FONT COLOR='blue'>" & Cells(I, j) & "</FONT></TD>"
'Else
'nb = Replace(Format(Cells(I, j).Value, "dddd d mmmm yyyy"), ".", "")
' strHTML = strHTML & "<TD align='left'><FONT COLOR='blue'>" & nb & "</FONT></TD>"
'End If
Next j
strHTML = strHTML & "</TR>"
Next I
strHTML = strHTML & "</TABLE>"
strHTML = strHTML & "<BR>Cordialement,<BR><BR>"
strHTML = strHTML & sign1 & "<BR>" & sign2 & "<BR>" & sign3
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
'Crée un nouveau OlItem
Set OlItem = appOutlook.CreateItem(olMailItem)
' initialisation de variables :
'Titre, texte, destinataires, etc ... puis envoi.
With OlItem
.Subject = "Solde du compte à la clôture des opérations le " & Format(Now, "dd mmmm yyyy")
.HTMLBody = strHTML
'.Recipients.Add (dest)
.To = dest
.Display
.Send
End With
End Sub

Edit : il m'a rajouté la balise email dans l'adresse mail...

On peut dire que ce sujet nous donne du fil à retordre...

Bises

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : copier une plage dans outlook

Re,

Pour la macro du post #15 as-tu bien coché la référence Word comme j'ai indiqué ?

En effet sur Office 2003 le VBA d'Outlook est sous Word.

ActiveDocument.ActiveWindow.Selection.Paste est du Word.

A+
 

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

Bon, j'ai coché, même punition:rolleyes:

du coup j'ai copié ton fichier sur le bureau, comme ça tout était déjà coché, et je l'ai lancé sous 2003 (j'ai les 2 versions sur mon poste).

blocage sur l'instruction ActiveDocument.ActiveWindow.Selection.Paste 'colle l'image,
message : "Un composant activex ne peut pas créer d'objet".

J'ai outlook 2010, c'est peut-être ça??

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : copier une plage dans outlook

Re,

Lance la macro du post #15 avec .Send en commentaire pour rester sur le mail.

Puis Al+F11 pour aller dans le VBA => double-clic sur les éléments des projets à gauche.

Sur Office 2003 on voit "Microsoft Word Objets" et "ThisDocument", que voit-on sur 2010 ?

A+
 

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

Bon, pour l'instant, la solution la moins pire :

Code:
Const dest = "[EMAIL="cb@toto.fr"]cb@toto.fr[/EMAIL]"
Const destcc = "[EMAIL="bv@toto.fr"]bv@toto.fr[/EMAIL]"
Sub Mail_Selection_Range_Outlook_Body()
' Fonctionne sous Office 2000-2010
    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Set rng = Nothing
    On Error Resume Next
    Set rng = Sheets("Envoi du message trésorerie").Range("B2:G49")
    On Error GoTo 0
    If rng Is Nothing Then
        MsgBox "La selection n'est pas correcte ou la feuille est protégée" & _
               vbNewLine & "veuillez corriger et réessayer.", vbOKOnly
        Exit Sub
    End If
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "<HTML><body><img src='D:\Gestion du CUT_Etape 4 OK au 04-06-13\logoAFT.bmp'><br>"
strHTML = strHTML & "Bonjour,<BR><BR>vous trouverez ci-joint le tableau du solde du compte à la clôture des opérations du " & Format(Now, "dd mmmm yyyy") & ".<BR>"
    With OutMail
        .To = dest
        .CC = destcc
        .BCC = ""
        .Subject = "Solde du compte à la clôture des opérations le " & Format(Now, "dd mmmm yyyy") & " CECI EST UN TEST"
        .HTMLBody = strHTML & RangetoHTML(rng)
        .Display
        '.Send
    End With
    On Error GoTo 0
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub
Function RangetoHTML(rng As Range)
' Fonctionne sous Office 2000-2010
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    'Copie dans un fichier temporaire
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With
    'Publie la feuille en tant que fichier html
    With TempWB.PublishObjects.Add(SourceType:=xlSourceRange, _
         Filename:=TempFile, Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
    'lecture du fichier HTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")
    'fermeture du fichier temp
    TempWB.Close savechanges:=False
    'Delete  du fichier temp utilisé dans cette fonction
    Kill TempFile
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function
sur le blackbouzin on doit naviguer, déplacer vers la droite et vers le bas pour tout lire, mais on lit correctement,
alors qu'en image ce n'est pas lisible correctement, et en plus on doit naviguer aussi.

sur la pomme c'est nickel, mais on n'a pas de pommes chez nous... :(

Donc, pour l'instant j'adopte cette version, moyennement satisfaisante...:eek:

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

Heu... :eek:...

Lance la macro du post #15 avec .Send en commentaire pour rester sur le mail.

Puis Al+F11 pour aller dans le VBA => double-clic sur les éléments des projets à gauche.

Sur Office 2003 on voit "Microsoft Word Objets" et "ThisDocument", que voit-on sur 2010

j'ai pas réussi

quand je double-clique sur les éléments du projet à gauche j'ai le nom du module, je ne vois pas ce que tu dis...:rolleyes::eek::rolleyes: (j'osais pas te le dire)

C@thy
 

C@thy

XLDnaute Barbatruc
Re : copier une plage dans outlook

j'ai oublié de dire :

j'ai aussi testé ceci :
Code:
Sub envoiPlageCellules_Excel()
ActiveSheet.Range("B1:G49").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Introduction = "bonjour , ci joint les données à la clôture des opérations de la journée du " & Date
.Item.To = dest
.Item.CC = destcc
.Item.Subject = "Solde du compte à la clôture des opérations le " & Format(Date, "dd mmmm yyyy")
.Item.Display
'.Item.Send
End With
End Sub
qui semblait beaucoup plus simple, mais je récupère mon bouton de lancement de la macro dans le message, et pourtant il est nom imprimable (printobject = false)

C@thy
 

Discussions similaires

Statistiques des forums

Discussions
312 896
Messages
2 093 388
Membres
105 716
dernier inscrit
jrmdprt