Envoyer mail avec un fichier joint

gaby66

XLDnaute Occasionnel
Bonjour,

J'aimerais envoyer un mail avec un fichier joint via une macro, seulement le fichier change de nom a chaque fois.
J'aimerais que le fichier joint qu'il doit être envoyer, soit a chaque fois le dernier enregistrer dans un dossier spécifique. Car le dossier reste toujours le même, c'est juste le nom du fichier qui change.

Actuellement j'utilise déjà une macro qui fonctionne parfaitement a condition que le nom du fichier soit toujours le même. Sauf que pour mon cas le nom du fichier change a chaque fois.

Voici ma macro actuel :

Sub ENVOI_MAIL()
'
' ENVOI_MAIL Macro
'
Set oOutlook = CreateObject("Outlook.Application")
Set oNewMail = oOutlook.CreateItem(olMailItem)

With oNewMail
.Attachments.Add "F:/Parking New 5.xls" '<-Ici le chemin du fichier
.Recipients.Add "dupond.duppond@gmail.fr '<-l'adresse du/des destinataires"
.Subject = "Parking Xavier"
.Body = "Tu trouveras en pièce jointe le parking, Xav"
.Send '<-.display ou .Send si tu veux l'envoyer directement
End With
'
End Sub



Merci pour votre aide, car j'arrive pas a trouver ma solution.
 

gaby66

XLDnaute Occasionnel
Re : Envoyer mail avec un fichier joint

Non aucun soucis,
J'ai regarder la macro a 2 reprises, j'arrive pas a trouver d'ou vient le soucis.
Le plus simple c'est que je te donne une copie conforme. Peut etre que toi tu vera d'où viens le soucis.

Sub ENVOI_MAIL_2()

Chemin$ = "C:\Users\gab.boulou\Desktop\archive parking\" '<<< ici ton répertoire complet( avec \ au bout exp E:\ ou "E:\Documents\"
EnvoiChemFich$ = LoadCheminFichier$(Chemin$) '<< ce sera le nom complet pour l'envoi
If EnvoiChemFich$ = "" Then MsgBox "Aucun fichier!?", vbExclamation, "envoi": Exit Sub
'ceci pour faire les essais et bien entendu supprimer si ok !?
MsgBox EnvoiChemFich$
End
'-------------------------------------------------------------

Set oOutlook = CreateObject("Outlook.Application")
Set oNewMail = oOutlook.CreateItem(olMailItem)
With oNewMail
.Attachments.Add EnvoiChemFich$ '<<<< colle le fichier avec son chemin
.Recipients.Add "gaby3004@hotmail.fr" '<-l'adresse du/des destinataires
.Subject = "Situation du Parking" '<-Inscrire l'objet du mail
.Body = "Vous trouverez en Pièce Jointe la dernière Version du Parking" '<-Inscrire le corp du message
.Send '<-.display ou .Send si tu veux l'envoyer directement
End With


End Sub

Public Function LoadCheminFichier$(Chemin$) 'ici ne rien modifier !
LoadCheminFichier$ = ""
If Right(Chemin$, 1) <> "\" Then Chemin$ = Chemin$ & "\"
Fichier = Dir(ChemFich$ & "*.*")
Dim Dat As Date
Dat = "01/01/1901"
Do While Fichier > ""
DateFiche = FileDateTime(ChemFich$ & Fichier)
If DateFiche > Dat Then Dat = FileDateTime(Fichier): LoadCheminFichier$ = Chemin$ & Fichier
Fichier = Dir
Loop
End Function
 

gaby66

XLDnaute Occasionnel
Re : Envoyer mail avec un fichier joint

Re les gars,

Je viens de comprendre d'ou vient le soucis.
Le soucis est qu'il trouve pas le chemin pour le fichier.
Pourtant je suis persuadé qu'il s'agit du bon, car j'ai une autre macro qui fonctionne avec le même chemin, mais si je change le chemin par "c:\" par exemple, est bien ça fonctionne.
Le soucis vient du chemin, sinon la macro fonctionne.
Je vais faire des tests avec d'autre chemin.
Merci pour votre aide en tous cas :)
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

re

voir comme ceci

Code:
Sub ENVOI_MAIL_2()

AdresDestinMail$ = "gaby3004@hotmail.fr" 'destinataire
AdresMailCC$ = "" 'adres en copie
AdresMailBCC$ = "" 'adres en copie invible
Sujet$ = "Situation du Parking" 'objet du mail
Message$ = "Vous trouverez en Pièce Jointe la dernière Version du Parking" 'message
Chemin$ = "C:\Users\gab.boulou\Desktop\archive parking\" 'dossier complet avec le fichier
EnvoiChemFich$ = LoadCheminFichier$(Chemin$) '<< ce sera le nom complet pour l'envoi
If EnvoiChemFich$ = "" Then MsgBox "Aucun fichier!?", vbExclamation, "envoi": Exit Sub 'quitte
' ENVOI
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error GoTo ErreurNET
With OutMail
  .To = AdresDestinMail$
  .CC = AdresMailCC$
  .BCC = AdresMailBCC$
  .Subject = Sujet$
  .Body = Message$
  .Attachments.Add EnvoiChemFich$
  .Send '<<<<<<<<< Pour envoye direct(utiliser l'un ou l'autre pas les deux!)
  '.Display '<<<<< Pour voir le mail avant envoi
End With
' fin
Set OutApp = Nothing: Set OutMail = Nothing
On Error GoTo 0: Err.Clear
Exit Sub
ErreurNET: 'sous prog erreur
Msg$ = "Erreur " & Err.Source & "  No " & Err.Number & vbLf & vbLf & Err.Description
T$ = "Envoi Mail: Problème de connexion !?"
MsgBox Msg$, vbCritical, T$, Err.HelpFile, Err.HelpContext
On Error GoTo 0: Err.Clear
End Sub

Public Function LoadCheminFichier$(Chemin$)
SvgDir$ = CurDir 'svg chemin en cours
LoadCheminFichier$ = ""
On Error GoTo quit
If Right(Chemin$, 1) <> "\" Then Chemin$ = Chemin$ & "\"
ChDrive Left(Chemin$, 1): ChDir Chemin$ ' 'place sur le lecteur et position sur le dossier
Fichier$ = Dir(Chemin$ & "*.*")
Dim Dat As Date: Dat = "01/01/1901"
Do While Fichier$ > ""
 DateFiche = FileDateTime(Chemin$ & Fichier$)
 If DateFiche > Dat Then Dat = FileDateTime(Fichier$): LoadCheminFichier$ = Chemin$ & Fichier$
 Fichier = Dir
Loop
quit:
ChDrive Left(SvgDir$, 1): ChDir SvgDir$ 'replace d'origne
End Function

ou comme ceci

Code:
Sub ENVOI_MAIL_2()

AdresDestinMail$ = "gaby3004@hotmail.fr" 'destinataire
AdresMailCC$ = "" 'adres en copie
AdresMailBCC$ = "" 'adres en copie invible
Sujet$ = "Situation du Parking" 'objet du mail
Message$ = "Vous trouverez en Pièce Jointe la dernière Version du Parking" 'message
Chemin$ = "C:\Users\gab.boulou\Desktop\archive parking\" 'dossier complet avec le fichier
EnvoiChemFich$ = LoadCheminFichier$(Chemin$) '<< ce sera le nom complet pour l'envoi
If EnvoiChemFich$ = "" Then MsgBox "Aucun fichier!?", vbExclamation, "envoi": Exit Sub 'quitte
' ENVOI
On Error GoTo ErreurNET
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
With OLMail
  .To = AdresDestinMail$
  .CC = AdresMailCC$
  .BCC = AdresMailBCC$
  .Subject = Sujet$
  .Body = Message$
  .Attachments.Add EnvoiChemFich$
  .Send '<<<<<<<<< Pour envoye direct(utiliser l'un ou l'autre pas les deux!)
  '.Display '<<<<< Pour voir le mail avant envoi
End With
' fin
Set OLApplication = Nothing: Set OLMail = Nothing
On Error GoTo 0: Err.Clear
Exit Sub
ErreurNET: 'sous prog erreur
Msg$ = "Erreur " & Err.Source & "  No " & Err.Number & vbLf & vbLf & Err.Description
T$ = "Envoi Mail: Problème de connexion !?"
MsgBox Msg$, vbCritical, T$, Err.HelpFile, Err.HelpContext
On Error GoTo 0: Err.Clear
End Sub

Public Function LoadCheminFichier$(Chemin$)
SvgDir$ = CurDir 'svg chemin en cours
LoadCheminFichier$ = ""
On Error GoTo quit
If Right(Chemin$, 1) <> "\" Then Chemin$ = Chemin$ & "\"
ChDrive Left(Chemin$, 1): ChDir Chemin$ ' 'place sur le lecteur et position sur le dossier
Fichier$ = Dir(Chemin$ & "*.*")
Dim Dat As Date: Dat = "01/01/1901"
Do While Fichier$ > ""
 DateFiche = FileDateTime(Chemin$ & Fichier$)
 If DateFiche > Dat Then Dat = FileDateTime(Fichier$): LoadCheminFichier$ = Chemin$ & Fichier$
 Fichier = Dir
Loop
quit:
ChDrive Left(SvgDir$, 1): ChDir SvgDir$ 'replace d'origne
End Function
 

gaby66

XLDnaute Occasionnel
Re : Envoyer mail avec un fichier joint

Hello Roland,
Je ne voudrais pas abuser de ta gentillesse a m'aider, mais il y a un tout autre problème auquel je sèche. Peut être que toi tu sais en un clic.
Le programme que je fais avec ton aide actuellement, je le fais sur excel 2013 chez moi, mais c'est pour mon travail auquel labas c'est excel 2007.
Pour essayer de faire simple pour t'expliquer mon soucis, c'est que sur une feuille (appelé DONNEES), sur cette feuille j'importe des données depuis le Web. Sur une autre feuille (appelé TRIAGE DES DONNEES) je récupère ce qui m'intéresse dans la feuille DONNEES via des formules qui fonctionne parfaitement a ce jour. Quand j'actualise la feuille DONNEES, car les infos de la feuille DONNEES change parfois, les formules qui sont dans TRIAGE DES DONNEES qui récupère les infos se mettent à jour aussi quand je suis chez moi avec excel 2013 (TOUT est OK), mais quand je suis a mon taf avec excel 2007, les infos ne change pas, ne se mettent pas en erreur non plus, les formules sont toujours correcte dans la cellule aussi car j'ai vérifier chaque cellule, seulement on dirait qu'il reste figé sur la première actualisation des DONNEES, car en faite ça fonctionne une fois, mais pas +. Comme ci la mémoire tampons ne se vidé pas.

C'est un peu bizard je comprend pas pourquoi, je me dit que c'est peut être un problème d'incompatibilité entre 2013 et 2007, mais il y a peut être quelque chose a faire pour y remédié a ce problème.

J'ai essayer de mettre la formule dans une macro et qui me la tire ensuite, mais sans succès. La formule est bien présente et correcte, mais ne joue pas son rôle, elle m'affiche pas le résultat, et ne se met pas en erreur non plus. J'ai regarder le format de la cellule également est je suis en "Standard".
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

bonjour,

malheureusement je ne connais pas 2013 ! mais ce n'est certainement pas 2007 ou 2013 !
mais peut être une histoire de config ou d'options !?
au boulot tu n'es pas admin !
peut être que de ce fait il n'exécute pas certaines macros !
je sais pas te dire comme ça !?
encore que tu devrais avoir des messages de sécurité ou les macros sont désactivées !?
 

Discussions similaires

Statistiques des forums

Discussions
314 656
Messages
2 111 609
Membres
111 221
dernier inscrit
Odré