VBA - Envoi de mail si fichier existant

Bonjour à tous,

Je suis en train de créer une macro pour mon travail afin de rendre l'envoi des mails automatiques (certaines données sont simplifié du coup)

Voici mon code: Le but étant de vérifié si le fichier existe et si oui d'envoyer le mail. Hors même si le fichier existe le code passe directement au END IF (pourtant la variable "Fichier" porte le bon nom).

Je n'arrive pas a comprendre pourquoi le code ne reconnais pas le nom du fichier

Sub mail_LSC()

Dim olApp18 As Outlook.Application
Set olApp18 = CreateObject("outlook.application")
Dim strbody As String
Dim dest As String
Dim dest2 As String
Dim fichier As String

Dim debut As Integer

Dim olMail As Outlook.MailItem
Set olMail = olApp18.CreateItem(olMailItem)

Dim matcon As Workbook

strbody = "Bonjour,"

Set matcon = Workbooks.Open(Filename:="C:\Users\xx\Downloads\Test Mail\Liste_Mail.xlsx")

For debut = 2 To 4

fichier = matcon.Worksheets("Mails").Range("A" & debut)

If Dir("C:\Users\xx\Downloads\Test Mail\fichier", vbNormal) <> "" Then

dest = matcon.Worksheets("Mails").Range("B" & debut)
dest2 = matcon.Worksheets("Mails").Range("C" & debut)

        With olMail
        .To = dest
        .CC = dest2
        .Subject = "Test mail"
        .HTMLBody = strbody
        .Attachments.Add "C:\Users\xx\Downloads\Test Mail\fichier"
        .Send

        End With

        End If

      Next debut

matcon.Close

End Sub

Merci par avance de votre aide et bonne journée à tous

23liste-mail.xlsx (8.63 Ko)

Bonjour,

il faudrait remplacer,

.Attachments.Add "C:\Users\xx\Downloads\Test Mail\fichier"

par

.Attachments.Add "C:\Users\xx\Downloads\Test Mail\" & fichier

Bonjour SabV

Effectivement, comme ceci il reconnait le fichier et fait l'envoi du premier cas de la boucle.

En lancant le test, il apparait une erreur (qu'il n'y avait pas avant) ...

Le déboggeur s'arrete sur la ligne suivante :

.To = dest

Si tu as aussi une solution, je suis preneur

Encore merci de ton aide

Bonjour,

pourriez-vous exécuter la macro en mode pas à pas et vérifier la valeur de la variable dest ?

dite-moi si vous ne savez pas comment faire?

je crois qu'il faudra aussi modifier cette ligne,

If Dir("C:\Users\teap\Downloads\Test Mail\fichier", vbNormal) <> "" Then

par

If Dir("C:\Users\xx\Downloads\Test Mail\" & fichier, vbNormal) <> "" Then

Re boujour,

J'avais également modifié la ligne IF

Pour la variable, elle va bien chercher la valeur correspondante et affiche celle-ci dans la fenetre des variables locale, mais lors du F8 suivant elle affiche le msg d'erreur.

Merci encore du temps que tu consacre à mon prob.

avez-vous vérifié si le fichier "Liste_Mail.xlsx" est bien ouvert lors de l'erreur (en pas à pas) ?

quel est le message d'erreur ?

Le fichier est bien ouvert lors du traitement. J'ai fait un enregistrement vidéo en MP4 si vous voulez voir (il y a des données confidenciel donc je ne peux le mettre à dispo de tous, mais peut vous l'envoyer en privé)

Le message d'erreur est celui-ci :

597c39935aeb7

lorsque le fichier s'ouvre correctement , la macro fonctionne bien,

vu que c'est un problème local, je ne peut faire plus.

acuradreams mail

Ce n'est pas grave, Merci encore de ton aide SabV

bon w-e

une piste à vérifier, votre fichier s'ouvre dans une instances excel différente que le fichier exécutant la macro ?

une manière simple de vérifier, est de voir si les 2 fichiers sont présent dans le VBA Project,

ou sinon,

voir si PERSONAL ou PERSO sont présent dans le répertoire VBAProject de chacun d'eux.

Hello SabV

Je viens de comprendre mon pbs, cela vient de cette partie de code

Dim olApp18 As Outlook.Application
Set olApp18 = CreateObject("outlook.application")

Dim olMail As Outlook.MailItem
Set olMail = olApp18.CreateItem(olMailItem)

Il faut qu'elle soit inclus dans la boucle et non à l'extérieur de celle-ci

Bonne journée

Rechercher des sujets similaires à "vba envoi mail fichier existant"