macro pour envoi fichier .xls avec microsoft outlook

sf-Thibault

XLDnaute Nouveau
Bonjour,

Je n'arrive pas à m'en sortir avec cette marco.
Je dois envoyer un fichier .xls par courriel avec microsoft outlook 2003, mais dans ma macro ci-dessous, le fichier .xls n'est pas en pièce jointe mais le reste fonctionne.

Sub Descriptif_seul()
'
' Descriptif_seul Macro
' Macro enregistrée le 04/01/2008 par sf
'

'Sélection cellule et attribuer la date du jour:
Range("E6").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
'Copier la valeur et enregistrer le classeur:
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
'ActiveWorkbook.Save
'Sélection de la zone à copier:
Range("A1:L200").Select
Selection.Copy
'Ouverture fichier en lecture seule et collage:
Workbooks.Open Filename:="G:\Devis standards\Descriptif2.xls", ReadOnly:= _
True
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'Sélection et copie du N° de descriptif:
Range("H8:L9").Select
Selection.Copy
'Attribution du nom de fichier à la cellule N3 et fusion de:
Range("N3").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
'Récupération du N° de descriptif:
NOPRO = Range("N3")
'Modification du nom du fichier:
DEVISNOPRO = "Projet-" & NOPRO
'Attribution du nom de fichier à la cellule N4:
Range("N4").Value = DEVISNOPRO
'Enrigistrment du fichier:
Chemin = "G:\devis standards\NE_PAS_SUPPRIMER\"
ActiveWorkbook.SaveAs Chemin & ActiveSheet.Range("N4").Value


'Ouverture de la boîte de dialogue et remplissage des zones:

Dim OutApp As Object
Dim OutMail As Object
Dim strto As String, strcc As String, strbcc As String
Dim strsub As String, strbody As String

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)

strto = Range("N2")
strcc = Range("O2")
'strbcc = ActiveCell
strsub = ("Offre de prix " & ActiveSheet.Range("E5"))
strbody = "Bonjour, l'email fonctionne bien" & vbNewLine & vbNewLine & _
"à verify le document Excel en annexe"

With OutMail
.To = strto
.CC = strcc
.BCC = strbcc
.Subject = strsub
.Body = strbody
' .Send
.Display
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "%S"
End With

Set OutMail = Nothing
Set OutApp = Nothing

End Sub

Merci de m'aider, il ne me manque pas grand chose mais cela me bloque.
A bientôt
Stéphane
 

BERRACHED said

XLDnaute Accro
Re : macro pour envoi fichier .xls avec microsoft outlook

Salut,sf-Thibault

voici un exemple de notre ami thierry que tu peux adapter

Cordialement
 

Pièces jointes

  • USF-Send-mail.zip
    26.1 KB · Affichages: 243
  • USF-Send-mail.zip
    26.1 KB · Affichages: 237
  • USF-Send-mail.zip
    26.1 KB · Affichages: 236

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Bonsoir à toutes et tous,,

Je reviens sur ce post car j'ai un problème avec ce super fichier de Thierry's.
Un grand merci à lui.

Je suis désolé (pour autant que je doive l'être), mais je l'ai un peu adapté à mes besoins en effacant quelques lignes d'origine :rolleyes:

Cependant je n'arrive pas tout à fait à faire excactement ce que je souhaite:
Je désire aussi pouvoir écrire un message avec l'envoi du mail.

J'ai étalé mon probème dans le bas du Module1.

Si un expert pouvait jeter un coup d'oeil.
Je vous en remercie infiniment par avance.

Hulk.
 

Pièces jointes

  • Envoi mail1.xls
    45.5 KB · Affichages: 125

Spitnolan08

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Bonsoir le fil,

Je ne sais pas s'il fallait aussi envoyer un fichier dans la problématique de Hulk, mais si ce n'est pas l'objet : voir le fichier joint.

Cordialement
 

Pièces jointes

  • Envoi mail2.zip
    11.9 KB · Affichages: 108

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Salut à tous, Spitnolan,

Je te remercie pour ta réponse (que j'ai pas vraiment compris).
Aussi, c'est dommage que tu ne m'ailles pas donnés des explications, ça m'aurait peut-être aidé à mieux comprendre :D

En revanche, ça ne joue plus du tout comme ça.
Il affiche un message d'erreur disant :

La valeur de configuration "SendUsing" est non valide.

et dans l'éditeur le .Send est en jaune.

Je te remercie encore.

Hulk.
 

Spitnolan08

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Re,

J'ai oublié d'indiquer qu'il faut activer Microsoft CDO for Exchange xxxx Library dans Menu Outils de VBA -->Références.

et rajouter si en déclaration obligatoire :
Code:
Sub SendWorkBook()
Dim objMessage As CDO.Message
....

Pour le reste, le code me semble limpide puisque tout (Dans ce que j'ai ajouté) est écrit sans variable intermédiaire. Le reste ce sont des propriétés CDO dont la fonctionnalité est immédiatement compréhensible en se référant aux textbox respectifs...

Bon courage,
Cordialement
 
Dernière édition:

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Re,

Merci de me répondre aussi vite.

Pb je n'ai pas Microsoft CDO for Exchange xxxx Library, mais le Microsoft CDO for Windows 2000 Library et apparemment ça ne joue pas il me dit le même message.

Le CDO Exchange que tu dis, je peux le télécharger quelque part ou pas dispo pour Office 2003 (version que j'utilise) ?

Gracias.

@+.

Hulk.
 

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Hello,

D'abord un grand bonjour à tous en ce beau dimanche ensoleillé :p

Désolé de m'acharner, mais je reviens à la charge avec ce pb qui me :mad: depuis hier :D

Apparemment la solution que me propose Spitnolan (encore et quand même merci à toi Spitnolan) nécessite Office 2007, et étant donné que je tourne avec Office 2003 je ne possède pas dans mes références "Microsoft CDO for Exchange Lybrary".

Je joins à nouveau le fichier avec lequel je parviens tout de même à envoyer le mail... sans ce que j'ai rajouté (évidemment).

Y a t-il une bonne âme pour m'éclaircir et me calmer (ma chemise commence à craquer... :D )

Au fait je souhaite pouvoir aussi écrire le massage dans la TextBox3. Les questions que je me pose sur ce que j'ai rajouté sont dans le Module1.

Au plaisir de vous lire.

Tchuss.

Hulk.

P.S. J'ai un peu modifié le classeur et les macros d'origines pour l'adapter à mes besoins. J'espère que l'auteur ne m'en voudras pas. Merci à lui !
 

Pièces jointes

  • Envoi mail via Userform.zip
    20.6 KB · Affichages: 82

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Hello,

Dur dur encore passé pas mal de temps aujourd'hui, mais en vain.
J'suis pas loin de capituler, mais pas encore :D

Juste encore une question:
Dans le classeur il y a une feuille cachée (Sheet1) mais impossible de la trouver ???
Elle n'y est ni dans le code de ThisWorkBook, ni dans le code des autres feuilles, et ni dans Format/Feuille/Afficher ??
Et dans le code de Sheet1 il y a rien !

Dans un des codes il y a ces deux phrases:
Sheets(1).Range("A1") = MailAdresse
Sheets(1).Range("A2") = MailSubject

Ca veut bien dire qu'elle est quelque part cette feuille non ?

Il y a aussi des fantômes dans Excel ou bien ? :D

Merci pour vos réponses.

Bonne soirée.

Hulk.
 

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Salut à tous,

Bien vu et merci Jean-Marcel, j'y avais pas pensé, ça joue il l'affiche !
Mais comment on fait ça (beuh) ?

En revanche ça ne m'avance pas plus ça ne fait que copier les TextBox dans les cellules de la Sheet1.

Pourtant quand message d'erreur et ligne en jaune, je vois bien que ça correspond bien aux TextBox.

Bref pleins de choses qui me turlupinent et que je ne maîtrise pas donc je pense que vais laisser tomber et l'utiliser comme tel.
Car oui ! Sans mes demandes ça fonctionne parfaitement bien, je peux bel et bien envoyer le classeur joint à l'adresse voulue dans TextBox1 et l'objet dans TextBox2.
C'est pour ça que je ne comprends pas, c'est ou je me suis trompé (et je pense que c'est plutôt ça) ou pas possible d'envoyer le contenu du message via l'Userform.

Je joins une ultime fois le fichier en question avec mes questions dans le module1.

Merci encore Jean-Marcel et bonne soirée à tous.

Hulk.
 

Pièces jointes

  • Envoi mail via Userform.xls
    48 KB · Affichages: 100

ledzepfred

XLDnaute Impliqué
Re : macro pour envoi fichier .xls avec microsoft outlook

salut Hulk,

s'te plait ne t'enerve pas tu sais ce qui arrive quand tu t'énerves hein...:D

J'ai testé de mon côté et la macro sendworkbook plante sur l'instruction thisworkbook.sendmail.
Sélectionnes sendmail et tapes sur F1, l'aide vba te dira quels sont les arguments supportés par cette instruction

et je te parie ta chemise (pas craquée!!!!) que sendmail ne supporte que deux arguments à savoir l'adresse et le sujet mais ne supporte pas le corps. j'ai pas vérifié c'est juste une hypothèse

Autre réponse à tes questions Maille, Sujet et Corps sont en français car ce ne sont ni plus ni moins que des variables non déclarées (à la reflexion c'est peut-être ça aussi le pb!!!)
Il y a a d'autres solutions pour envoyer un classeur à une liste de destinataires (même certains en copie), avec un sujet :
va voir ce post https://www.excel-downloads.com/threads/probleme-de-macro.106285/, c'est une solution pour outlook

Bien sur à adapter à ton userform

A+
 
Dernière édition:

Hulk

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

Hello à tous, Ledzepfred,

Merci pour ta réponse et désolé de ne te répondre que maintenant.
Je me doutais bien que comme par hasard il ne gére pas le corps grr car j'ai tout, ou presque, essayé !

T'inquiète j'ai réussi à garder mon sang froid, et même que je suis sur une nouvelle piste :D

Par contre tu sais comment il a fait le truc de masquer la feuille ?
et une autre pertite question :

Sub SortirUserForm()
Dim Msg As Byte
Msg = MsgBox("Etes-vous sûr de vouloir envoyer le classeur ? " & _
vbCrLf & " à : " & MailAdresse, vbYesNo + vbQuestion, "")
If Msg = 6 Then
Sheets(1).Range("A1") = MailAdresse
Sheets(1).Range("A2") = MailSubject
MailAdresse = ""
MailSubject = ""
Application.OnTime Now + TimeValue("00:00:01"), "SendWorkBook"
Else: MsgBox "Envoi annulé !", vbInformation, ""
End If
End Sub

Dans ce bout de code je ne comprends pas ce que veut dire les lignes en gras, tu arrives à m'expliquer un peu, surtout Msg = 6 ? Ce que je veux dire c'est que si par exemple je met Msg = 4 ou autre, ça ne joue plus ! comment et où lui dire... juste pour comprendre ??

En tous cas merci et je reviendrais à la charge :D

Bonne après-midi à tous.

Hulk.
 

Roland_M

XLDnaute Barbatruc
Re : macro pour envoi fichier .xls avec microsoft outlook

bonjour

pour la compréhension il est toujours préférable d'utiliser des constantes !
exemple idem modifié !
dans le cas présent on demande une réponse(oui/non)(vbYesNo)
soit vbYes(qui est=6 soit vbNo(qui est =7) mais ce n'est pas clair du tout !!! à éviter !!

Code:
Sub SortirUserForm()
Dim Msg As Variant
Msg = MsgBox("Etes-vous sûr de vouloir envoyer le classeur ? " & vbCrLf & " à : " & MailAdresse, vbYesNo + vbQuestion, "")
If Msg = VbYes Then Sheets(1).Range("A1") = MailAdresse
   Sheets(1).Range("A2") = MailSubject
   MailAdresse = ""
   MailSubject = ""
   Application.OnTime Now + TimeValue("00:00:01"), "SendWorkBook"
Else 
   MsgBox "Envoi annulé !", vbInformation, ""
End If
End Sub
 
Dernière édition:

ledzepfred

XLDnaute Impliqué
Re : macro pour envoi fichier .xls avec microsoft outlook

bonjour à tous,

Roland a répondu à ta question : si tu déclare Msg comme variable de type Byte, tester la réponse à la msgbox avec 6 pour oui ou 7 pour non. Comme Roland le préconise c'est mieux question compréhension de déclarer Msg as Variant et d'utiliser vbyes et vbno pour tester la réponse.

Pour masquer la feuille (mais alors vraiment la masquer) il suffit d'utiliser ce code :

Sheets("Feuil1").Visible = xlVeryHidden

l'antidote à ce code est tout bêtement : Sheets("Feuil1").Visible = True

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 366
Messages
2 087 641
Membres
103 627
dernier inscrit
nabil