Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Envoyer plusieurs mails avec des destinataires et des pièces jointes différentes avec Outlook

ivan27

XLDnaute Occasionnel
Bonsoir à tous,

J'ai trouvé des nombreux exemples de transmission de mail depuis Excel, avec Microsoft Outlook, mais aucun ne s'applique vraiment à mon cas.

Sur mon PC, dans le répertoire c:\Temp\STT, j'ai plusieurs classeurs au format excel (.xlsx) que je souhaites transmettre avec Outlook depuis excel.

Chaque classeur porte le nom du destinataire, inscrit dans la colonne A de la feuille STT. Exemple : ''FOURNISSEUR TITI.xlsx'' ou ''ESSAI.xlsx''

Donc chaque fichier présent dans le répertoire c:\Temp\STT, doit être transmis en pièce jointe d'un mail à l'adresse inscrite colonne E de la feuille STT.
Le classeur FOURNISSEUR TITI.xlsx doit étre transmis à autreFournisseur@postmail.fr
Le classeur ESSAI.xlsx doit être transmis à fournisseurESSAI@mail.com
etc...

Pour le contenu du mail (objet, corps, signature), soit on peut écrire le texte en dur dans le code, mais je préférerais utiliser les données de la feuille "paramètres''
OBJET : en G2
CORPS et SIGNATURE : en G3, G4

Merci d'avance pour votre aide

Ivan
 

Pièces jointes

  • testMail.xlsx
    17.7 KB · Affichages: 37

Lolote83

XLDnaute Barbatruc
Bonjour IVAN27,

Voici en retour ton fichier.
Dans le code Mod_Mail, pour le moment l'option .Send (envoi automatique) est déselectionné, et c'est donc le .Display (Aperçu avant envoi) qui est actif.
Faire des essais et une fois que tout fonctionne, inverser les coches '
Attention, pour que cela fonctionne il faut mettre la référence Reference VBA = Microsoft Outlook 16.0 Object Library si celle ci n'est pas activée

Cordialement
@+ Lolote83
 

Pièces jointes

  • Copie de IVAN27 - TestMail.xlsm
    22.8 KB · Affichages: 33

ivan27

XLDnaute Occasionnel
Bonjour le forum, Lolote83,

Merci pour ta proposition.
Le code plante sur la ligne
Code:
For Each xClasseur In Range("Tableau1[Classeur]")
La méthode 'Range' de l'objet'_Global' a échoué.

Bien cordialement,

Ivan
 

ivan27

XLDnaute Occasionnel
Re bonjour le forum, Lolotte83,
On est presque bon!
Il est vrai que je ne l'ai pas précisé mais il n'y a pas forcément un fichier à transmettre pour chaque ligne du tableau.
En l'absence de fichier, le code plante sur la ligne .Attachments.......
Ivan
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
As tu pris la dernière version (post#10) car si la case du fichier est vide on ne fait pas le traitement
Je viens de faire un essai


Par contre, si le fichier à joindre n'existe pas, cela plantera car la cellule du fichier n'est pas vide.

@+ Lolote83
 
Dernière édition:

ivan27

XLDnaute Occasionnel
Re bonjour Lolote83,
En fait il faut raisonner différemment.
Les cellules de la colonne A ne sont jamais vides puisque il s'agit d'un annuaire.
Il faudrait parcourir toute la colonne A et pour chaque nom, rechercher dans le répertoire c:\Temp\STT s'il existe un fichier correspondant.
Si oui, on transmet le fichier par mail.
Si non, on passe à la cellule suivante.
C'est possible de faire comme ça ?
Ivan
 

ivan27

XLDnaute Occasionnel
Re bonjour,
C'est parfait avec le fichier test.
Je regarde en production et je te tiens au courant en cas de problème.
Merci beaucoup pour ton aide et la rapidité avec laquelle tu as procédé aux corrections demandées.
A bientôt
Ivan
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…