Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mise en page mail

23 réponses
Avatar
Excell
Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & "\"
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe, je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut etre
convertir ma plage de selection en pdf dans un ficvhier temporaire, mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/

10 réponses

1 2 3
Avatar
Daniel.C
Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron De
Bruin. Les questions que tu te poses à propos du "FileFormatNum" viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007. Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format que tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe, je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut etre
convertir ma plage de selection en pdf dans un ficvhier temporaire, mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/


Avatar
Excell
bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format que tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe, je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut etre
convertir ma plage de selection en pdf dans un ficvhier temporaire, mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/


Avatar
Daniel.C
Je viens d'exécuter ton code. Tu envoies une feuille en tant que classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un décalage au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format que tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe, je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut etre
convertir ma plage de selection en pdf dans un ficvhier temporaire, mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/




Avatar
Excell
Bonjour

Merci pour les renseignements et pour l'aide, mais si il y a des colonnes
masquées(necessaire pour utilisation)
existe t 'il un moyen pour que je puisse effectué une mise en page par
code vba pour resoudre mon probleme

D'avance merci et bonne journée
RP

Le Tue, 18 Dec 2007 11:41:39 +0100, Daniel.C a
écrit:

Je viens d'exécuter ton code. Tu envoies une feuille en tant que
classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules
visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un décalage
au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en
compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron
De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format que
tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe,
je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut
etre
convertir ma plage de selection en pdf dans un ficvhier temporaire,
mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/




Avatar
Daniel.C
Bonjour.
Il faut mettre en forme le classeur en copiant les informations une par une
au lieu de les copier en bloc.
Au lieu de :
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With

mets :

With Dest.Sheets(1)
For Each c In Source
c.Copy
.Range(c.Address).PasteSpecial xlPasteColumnWidths
.Range(c.Address).PasteSpecial xlPasteValues
.Range(c.Address).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Next c
End With

Daniel
"Excell" a écrit dans le message de news:

Bonjour

Merci pour les renseignements et pour l'aide, mais si il y a des colonnes
masquées(necessaire pour utilisation)
existe t 'il un moyen pour que je puisse effectué une mise en page par
code vba pour resoudre mon probleme

D'avance merci et bonne journée
RP

Le Tue, 18 Dec 2007 11:41:39 +0100, Daniel.C a
écrit:

Je viens d'exécuter ton code. Tu envoies une feuille en tant que
classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules
visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un décalage
au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en
compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron
De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format que
tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe,
je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut
etre
convertir ma plage de selection en pdf dans un ficvhier temporaire,
mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/






Avatar
Excell
Re bonjour, merci beaucoup pour ce probleme résolu
mais j'ai encore un souci car je souhaite encore 2 choses pour que tout
soit parfait
c'est que la selection soit en mode paysage et non en mode portrait et
l'image inserée n'est pas dans le mail
Je continue mes recherches de mon coté aussi

Grand merci pour ta patience daniel c
J'arrive au but
RP

Le Wed, 19 Dec 2007 10:27:39 +0100, Daniel.C a
écrit:

Bonjour.
Il faut mettre en forme le classeur en copiant les informations une par
une
au lieu de les copier en bloc.
Au lieu de :
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With

mets :

With Dest.Sheets(1)
For Each c In Source
c.Copy
.Range(c.Address).PasteSpecial xlPasteColumnWidths
.Range(c.Address).PasteSpecial xlPasteValues
.Range(c.Address).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Next c
End With

Daniel
"Excell" a écrit dans le message de news:

Bonjour

Merci pour les renseignements et pour l'aide, mais si il y a des
colonnes
masquées(necessaire pour utilisation)
existe t 'il un moyen pour que je puisse effectué une mise en page par
code vba pour resoudre mon probleme

D'avance merci et bonne journée
RP

Le Tue, 18 Dec 2007 11:41:39 +0100, Daniel.C a
écrit:

Je viens d'exécuter ton code. Tu envoies une feuille en tant que
classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules
visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un décalage
au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en
compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C
a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron
De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format
que
tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe,
je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut
etre
convertir ma plage de selection en pdf dans un ficvhier temporaire,
mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/






Avatar
Daniel.C
Je n'ai pas bien compris ce que tu veux dire par "mode paysage" en parlant
de ta sélection. Tu veux que les colonnes se retrouvent en lignes ?
Pour insérer ta plage dans le code du texte, en adaptant d'après un code de
Ron De Bruin :
Set rng = .range("B2:U43")
et dans la création du message :
.HTMLBody = RangetoHTML(rng)
Daniel
"Excell" a écrit dans le message de news:

Re bonjour, merci beaucoup pour ce probleme résolu
mais j'ai encore un souci car je souhaite encore 2 choses pour que tout
soit parfait
c'est que la selection soit en mode paysage et non en mode portrait et
l'image inserée n'est pas dans le mail
Je continue mes recherches de mon coté aussi

Grand merci pour ta patience daniel c
J'arrive au but
RP

Le Wed, 19 Dec 2007 10:27:39 +0100, Daniel.C a
écrit:

Bonjour.
Il faut mettre en forme le classeur en copiant les informations une par
une
au lieu de les copier en bloc.
Au lieu de :
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With

mets :

With Dest.Sheets(1)
For Each c In Source
c.Copy
.Range(c.Address).PasteSpecial xlPasteColumnWidths
.Range(c.Address).PasteSpecial xlPasteValues
.Range(c.Address).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Next c
End With

Daniel
"Excell" a écrit dans le message de news:

Bonjour

Merci pour les renseignements et pour l'aide, mais si il y a des
colonnes
masquées(necessaire pour utilisation)
existe t 'il un moyen pour que je puisse effectué une mise en page par
code vba pour resoudre mon probleme

D'avance merci et bonne journée
RP

Le Tue, 18 Dec 2007 11:41:39 +0100, Daniel.C a
écrit:

Je viens d'exécuter ton code. Tu envoies une feuille en tant que
classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules
visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un décalage
au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en
compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C
a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron
De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format
que
tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe,
je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut
etre
convertir ma plage de selection en pdf dans un ficvhier temporaire,
mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/








Avatar
Daniel.C
Oups.
J'ai oublié la fonction RangeTo HTML :

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2007
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" 'Copy the range and create a
new workbook to past the data in
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 'Publish the sheet to a htm file
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 'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "alignÎnter x:publishsource=", _
"align=left x:publishsource=") 'Close TempWB
TempWB.Close savechanges:úlse 'Delete the htm file we used in this
function
Kill TempFile Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End FunctionDaniel"Excell" a écrit dans le message de
news:
Re bonjour, merci beaucoup pour ce probleme résolu
mais j'ai encore un souci car je souhaite encore 2 choses pour que tout
soit parfait
c'est que la selection soit en mode paysage et non en mode portrait et
l'image inserée n'est pas dans le mail
Je continue mes recherches de mon coté aussi

Grand merci pour ta patience daniel c
J'arrive au but
RP

Le Wed, 19 Dec 2007 10:27:39 +0100, Daniel.C a
écrit:

Bonjour.
Il faut mettre en forme le classeur en copiant les informations une par
une
au lieu de les copier en bloc.
Au lieu de :
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With

mets :

With Dest.Sheets(1)
For Each c In Source
c.Copy
.Range(c.Address).PasteSpecial xlPasteColumnWidths
.Range(c.Address).PasteSpecial xlPasteValues
.Range(c.Address).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Next c
End With

Daniel
"Excell" a écrit dans le message de news:

Bonjour

Merci pour les renseignements et pour l'aide, mais si il y a des
colonnes
masquées(necessaire pour utilisation)
existe t 'il un moyen pour que je puisse effectué une mise en page par
code vba pour resoudre mon probleme

D'avance merci et bonne journée
RP

Le Tue, 18 Dec 2007 11:41:39 +0100, Daniel.C a
écrit:

Je viens d'exécuter ton code. Tu envoies une feuille en tant que
classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules
visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un décalage
au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en
compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C
a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez Ron
De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format
que
tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " & wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece jointe,
je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut
etre
convertir ma plage de selection en pdf dans un ficvhier temporaire,
mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr = ".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/








Avatar
Excell
en fait, par defaut l'impression se fait en mode "portrait"
et si on veux que la page soit horizontal on choisi le mode "paysage"Le
Wed, 19 Dec 2007 12:03:20 +0100, Excell a écrit:

Re bonjour, merci beaucoup pour ce probleme résolu
mais j'ai encore un souci car je souhaite encore 2 choses pour que tout
soit parfait
c'est que la selection soit en mode paysage et non en mode portrait et
l'image inserée n'est pas dans le mail
Je continue mes recherches de mon coté aussi

Grand merci pour ta patience daniel c
J'arrive au but
RP

Le Wed, 19 Dec 2007 10:27:39 +0100, Daniel.C a
écrit:

Bonjour.
Il faut mettre en forme le classeur en copiant les informations une par
une
au lieu de les copier en bloc.
Au lieu de :
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With

mets :

With Dest.Sheets(1)
For Each c In Source
c.Copy
.Range(c.Address).PasteSpecial xlPasteColumnWidths
.Range(c.Address).PasteSpecial xlPasteValues
.Range(c.Address).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Next c
End With

Daniel
"Excell" a écrit dans le message de news:

Bonjour

Merci pour les renseignements et pour l'aide, mais si il y a des
colonnes
masquées(necessaire pour utilisation)
existe t 'il un moyen pour que je puisse effectué une mise en page par
code vba pour resoudre mon probleme

D'avance merci et bonne journée
RP

Le Tue, 18 Dec 2007 11:41:39 +0100, Daniel.C a
écrit:

Je viens d'exécuter ton code. Tu envoies une feuille en tant que
classeur en
pièce jointe. Le fait que ta mise en page diffère de celle du classeur
original provient du fait que tu ne sélectionnes que les celllules
visibles.
Si tu as des lignes ou des colonnes masquées, il se produit un
décalage
au
collage.
Daniel
"Excell" a écrit dans le message de news:

bonjour,
merci pour l'explication,
petite precision, je n'envoie pas un classeur par mail mais un plage
selectionnée sur une feuille et la mise en page n'est pas tenue en
compte
lors de l'envoi de cette selection

Bonne journée
RP

Le Mon, 17 Dec 2007 20:32:37 +0100, Daniel.C
a
écrit:

Bonsoir.
Je n'ai ps épluché tout ton code; apparemment tu l'as pioché chez
Ron
De
Bruin. Les questions que tu te poses à propos du "FileFormatNum"
viennent du
fait que la macro différencie les fichiers aux format s2003 et 2007.
Sinon,
je ne vois pas pourquoi le classeur attaché n'aurait pas le format
que
tu
lui assignes ?
Cordialement.
Daniel
"Excell" a écrit dans le message de news:

Bonjour tout le monde,


Apres les aides recues et trouvée sur d'autres sites, en anglais,
voici le code que j'utilise pour envoyer un mail avec une plage
selectionnée en cliquant sur un bouton de commande.

Sub Button16_Click()
'Working in 2000-2007
Dim Source As Range
Dim Dest As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("b2:u43").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "La source n'est pas selectionnée ou la feuille est
protégée, corrigé svp et réessayé.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Set
wb = Sheets("Rapports").Range("c3") 'ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & ""
TempFileName = "Rapport hebdomadaire de " & wb '.Name & " " &
Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
End If
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr,
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = ""
.cc = ""
.BCC = ""
.Subject = "Rapport hebdomadaire"
.Body = "Bonjour, voici mon rapport hebdomadaire. " &
wb
.Attachments.Add Dest.FullName
.Display 'or use .Display
End With
On Error GoTo 0
.Close SaveChanges:úlse
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Le seul probleme que j'ai avec ce code est que dans la piece
jointe,
je
n'ai plus aucun respect de ma mise en page, qui sera necessaire aux
administratif lors de l'impression ???

Comment puis je resoudre ce probleme (si cela est necessaire, peut
etre
convertir ma plage de selection en pdf dans un ficvhier temporaire,
mais
j'ai vu qu'il fallait 4 applications ???)

D'autres methodes peuvent etres proposée si necessaire

La question que je me pose est que veut dire "FileExtStr =
".xls":
FileFormatNum = -4143" je ne comprends pas trop bien cette ligne
de
code

Merci pour votre aide
Bonne journée

RP


--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/











--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/







Avatar
Daniel.C
ActiveSheet.PageSetup.Orientation = xlLandscape
daniel
"Excell" a écrit dans le message de news:



en fait, par defaut l'impression se fait en mode "portrait"
et si on veux que la page soit horizontal on choisi le mode "paysage"Le
Wed, 19 Dec 2007 12:03:20 +0100, Excell a écrit:


1 2 3