Envoyer mail avec un fichier joint

  • Initiateur de la discussion Initiateur de la discussion gaby66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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 !
 
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
 
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 !?
 
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)
 
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
 
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:
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
811
Retour