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.
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

bonjour

s'il s'agit toujours du même dossier et qu'il n'y a qu'un seul fichier
alors comme ceci ça peut le faire ! avec *.*

Sub LoadNomDuFichier()
Chemin$ = "E:\*.*"
Fichier$ = Dir(Chemin$)
If (Len(Fichier$) > 0) Then NomFichier$ = Fichier$
MsgBox NomFichier$
End Sub

mettre simplement le chemin
taper F5 et vous verrez le nom du 1'fichier !
 

gaby66

XLDnaute Occasionnel
Re : Envoyer mail avec un fichier joint

Merci Roland pour ta réponse,
Il s'agit toujours du même dossier oui, mais dedans il y a plusieurs fichier. Je veux juste qu'il prend le dernier fichier enregistrer dans ce même dossier.
Ta macro mélanger a la mienne ça donne quoi ?
Il faut que je mélange la mienne avec la tienne c'est ça ?

Merci a toi
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

re

le dernier enregistré c'est possible ! bien que pour moi ce n'est très fiable, mais soit ...!?

mais si tu sais pas comment te servir de cette macro simplissime
ça va être difficile d'aller plus loin !?
 

gaby66

XLDnaute Occasionnel
Re : Envoyer mail avec un fichier joint

Si je me débrouille , t'inquiète pas, je ne suis pas a ma première macro.
Sur ma première macro, je peux mettre un objet, du texte, un ou des destinataires, et une pièce jointe.
Sur ta macro je vois que pour la pièce jointe.
C'est pour ça que je te demandais pour mélanger les deux macro, afin que je puisse toujours mettre, un objet, du texte, des destinataires et une pièce jointe (qu'il soit la dernière enregistrer d'un dossier spécifique)
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

re

'en dessous de cette ligne tu peux rajouter le test s'il y a un fichier par sécurité !
EnvoiChemFich$ = LoadCheminFichier$(Chemin$) '<< ce sera le nom complet pour l'envoi
If EnvoiChemFich$ = "" Then MsgBox "aucun fichier !?", vbExclamation, "envoi mail": Exit Sub
 

Roland_M

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

re

voir en plus simple ! (sur la proposition de camarchepas !)
qui il est vrai est plus simple, perso je t'avais collé une fonction qui me servait pour d'autres choses, mais qui fonctionne tout de même)

Code:
Sub ENVOI_MAIL()

Chemin$ = "E:\Documents\" '<<< 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 "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

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

gaby66

XLDnaute Occasionnel
Re : Envoyer mail avec un fichier joint

Re Bonsoir Roland.

La macro ne fonctionne pas.
ça me trouve bien le dernier fichier du répertoire, car ça s'affiche dans un msg box. et sa ne bloque pas non plus dans la macro. Rien ne se passe comme ci la macro fonctionner. Sauf que j’attends encore le mail lol.
J'ai regarder a 10 reprises si je me suis pas planter sur l'adresse mail, mais non. J'ai regarder aussi dans les courriers indésirables et y'a rien non plus. Je ne comprend pas.

Merci pour ton aide
 

camarchepas

XLDnaute Barbatruc
Re : Envoyer mail avec un fichier joint

Et oui , même réponse que dans l'autre file




Code:
Sub ENVOI_MAIL()

Chemin$ = "C:\Appli_Excel\" '<<< 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 "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

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
 

Discussions similaires

Réponses
2
Affichages
265
Réponses
16
Affichages
535

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado