Envoi de mail depuis excel plusieurs champs [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009
-
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009
-
Bonjour,

J'ai un envoi de mails assez important à réaliser, qui concerne précisément 180 personnes, avec intégrations d'informations différentes pour chacun dans un corps de texte identique.

En détail :

Le service informatique de ma boite propose aux utilisateurs un serveur de sauvegarde pour leurs documents professionnels.
Ce serveur arrive à saturation, donc je vais envoyer un mail individuel à chacun leur demandant de faire un peu de ménage.

J'ai un fichier Excel dans lequel j'ai "Nom / Prénom / Mail / Espace occupé" pour chacun. Je souhaite créer une macro qui permette d'envoyer simultanément un mail à chacun, avec le même objet et le message suivant :

---------------
"Bonjour,

Sur le serveur de sauvegarde, vous occupez actuellement [ici la taille d'espace disque correspondant à l'utilisateur auquel le mail est envoyé] Go d'espace disque.
Le serveur étant en surcharge, blablabla...
Merci d'avance de faire le nécessaire dans votre répertoire de sauvegarde sur le serveur, blablabla....
Merci pour votre collaboration.
blablabla…"
---------------

Voici le lien vers un fichier de test pour que vous puissiez voir comment cela se présente.
http://dl.free.fr/getfile.pl?file=/nUkVaBdq

De plus, il faudrait que ce message soit envoyé par l'adresse de messagerie du service. Ma messagerie Outlook est ouverte sous mon compte. Il faudrait pouvoir renseigner le champ "De..." par l'adresse mail du service info.

J'ai écris un code déjà qui fait tout ce que je veux. Deux points sur lesquels je bloque :
- Remplir le champ "De..." par l'adresse du service.
- Insérer la taille d'espace utilisé pour chacun.

  
Sub envoi_mail()
    '---  Envoi par mail
    Dim olapp As Outlook.Application
    Range("D3").Select
    Do While Not IsEmpty(ActiveCell)
      Dim msg As MailItem
      Set olapp = New Outlook.Application
      Set msg = olapp.CreateItem(olMailItem)
      msg.To = ActiveCell.Value
      msg.Subject = Range("A19").Value
      msg.Body = Range("A23").Value & Range("F3").Value & Range("A25").Value
      msg.Send
      ActiveCell.Offset(1, 0).Select
    Loop
End Sub



Vous comprendrez mieux avec le fichier.

Si vous avez des questions ou des points que vous voulez que j'éclaircisse, n'hésitez pas !

Merci d'avance pour votre aide :)

9 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 248
bonjour

- Remplir le champ "De..." par l'adresse du service.


Il faut utiliser la propriété SendUsingAccount qui définit le compte de messagerie à utiliser.

msg.SendUsingAccount = olapp.GetNamespace("MAPI").Accounts("UneAdresse")

L'adresse doit être valide dans outlook.


- Insérer la taille d'espace utilisé pour chacun.


msg.Body = Range("A23").Value & ActiveCell.Offset(0, 2).Value & Range("A25").Value
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009

Bonjour !

Merci pour cette réponse !

Alors pour le "SendUsingAccount", ça n'a pas fonctionné. J'ai cherché un peu plus loin et j'ai trouvé que cette propriété n'est disponible que sous Office 2007. Je suis en 2003...je ferai donc sans.
Je vais afficher donc afficher les messages pour remplir le champ manuellement avec un "msg.display"

Pour le second point, ca marche parfaitement ! Petite question cependant : dans mon fichier excel, le format de ma colonne est "nombre" avec 2 décimales. Mais lorsque j'exécute la macro, je retrouve dans le mail le nombre avec une bonne douzaine de chiffres après la virgule. J'ai essayé de changé le format sous excel mais ca n'a rien donné. Je ne sais pas si c'est sous excel ou dans le code qu'il faudrait préciser ?

Merci d'avance.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 248
bonjour

Avec :
msg.Body = Range("A23").Value & Format(ActiveCell.Offset(0, 2).Value,"0.00") & Range("A25").Value

cela devrait être mieux.
Je ne peux tester donc il faut peut-être mettre la virgule au lieu du point : tu regardes le format de ta cellule et tu mets le même.
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009

Nickel, ça marche super !

Dernière question avant de clore le sujet, quand mon mail s'ouvre avec toutes les infos de mon fichier Excel, la mise en forme du corps n'est pas conservée (gras, soulignements)... une petite idée ?

Merci !!
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 248
bonjour

Malheureusement, je crains bien qu'il n'y en ai pas car la procédure fonctionne en mode texte basique et ce n'ai pas fait pour faire du travail soigné.
Messages postés
17297
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
4 366
Salut,

Pour Outlook,
Outils/Option onglet format du courrier, Format du courrier sélectionner HTML

Pour Outlook Express,
Outils/Option onglet envois format d'envoi du courrier cocher HTML

Normalement le courrier garde la mise en forme

A+
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009

Salut,

J'ai Outlook 2003 oui, mais j'ai regardé dans les options et le courrier et par défaut en HTML.

D'autres idées ?
Merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 248
bonjour

Tu confirmes les doutes que j'avais :

- outlook en HTML c'est très bien à notre époque.
- le passage des données entre excel et outlook, à ma connaissance, se fait en mode texte.

Le passage du formatage est finalement très difficile, car la gestion du formatage excel ne se fait pas en avec les normes HTML mais avec les normes natives excel.

Peut-être en essayant de mettre ton message dans une feuille que tu sauves en HTML et que tu inclus ensuite dans ton message outlook, mais c'est pas simple quand tu as des dizaines de messages à émettre.
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009

Oui je vois. Il ne peut donc y avoir aucun lien entre la mise en forme excel et la mise en forme outlook.

C'est pas grave, je ne vais pas me tracasser plus pour ces mails.

Merci pour l'aide en tout cas :)