Archive for février, 2013

VBA EXCEL & OUTLOOK : Ecrire un mail automatiquement

Ou comment écrire un message (ou email, ou mél, ou mail…) automatiquement, en utilisant le modèle objet de Outlook. Quel est l’utilité ? Disons que pour un envoi massif de mails, cela peut être utile. Un publipostage en quelque sorte… On peut également balayer le carnet d’adresse pour faire du mailing. Alors autant le dire tout de suite, il est évident que ce genre de fonctionnalité peut s’apparenter à du spam, à utiliser à bon escient !

Nous pouvons préparer une feuille (voir ci-dessous) nommée « outlook » et préparer des mails. On peut ainsi « calculer » des mails à envoyer sous Excel, puis les envoyer automatiquement avec cette méthode.


Les emails générés et envoyés ressemblent à :



Voici le code (il faut au préalable activer la référence Outlook dans le menu de l’éditeur VBA « outils – références » : Microsoft Outlook xx.0 object library). Le mail sera envoyé avec le compte de messagerie par défaut.

Sub CREATION_MAIL()
Dim MonOutlook As New Outlook.Application
Dim MyMail As MailItem
Set MyMail = MonOutlook.CreateItem(olMailItem)
Dim chaine As String
Sheets("outlook").Select
ligne = 2
Do While Cells(ligne, 1).Value <> vbEmpty
 adresse_mail = Cells(ligne, 2)
 If Cells(ligne - 1, 2).Value <> adresse_mail Then
'création d'un nouveau mail car on est sur une nouvelle adresse mail
 Set MyMail = MonOutlook.CreateItem(olMailItem)
 MyMail.To = adresse_mail
 MyMail.CC = adresse_mail 'ici on peut mettre les adresse en copie
 MyMail.Subject = "sujet du message envoyé par outlook en vba"
 chaine = ""
 End If
 chaine = chaine & Cells(ligne, 1).Value & Chr(10) 'saut de ligne
 If Cells(ligne + 1, 2).Value <> adresse_mail Then
'envoi du mail car à la ligne suivante nous avons un autre destinataire
 MyMail.Body = chaine
'pour attacher un fichier
 'MyMail.Attachments.Add ("C:\monfichier.xlks")
 MyMail.Send
 End If
 ligne = ligne + 1
Loop
Set MonOutlook = Nothing
End Sub
Top

Mise à jour Excel automatique à partir d’internet

Vous avez des calculs bien compliqués avec des conversions de monnaies ? Vous avez bien sur placé le taux de change dans un onglet distinct, et vous ressaisissez tous les jours la nouvelle valeur ? Vous avez bien sur placé le taux de change dans un onglet distinct, et vous ressaisissez tous les jours la nouvelle valeur ?

Il est heureusement possible de faire mieux, plus automatisé, afin de récupérer des données automatiquement sur le net. On peut ainsi avoir des feuilles Excel toujours d’actualités, pas besoin de ressaisir des valeurs, nous avons alors une mise à jour automatique d’Excel à partir du Web. Il s’agit en quelque sort de « Service Web » sans aucune implémentation technique. Mais attention, autant un service web est un « contrat », il est garanti, ne change pas de format, autant la méthode exposée ci-dessous n’est pas forcément garantie sur une longue durée (pour la bonne et simple raison qu’une page peut être supprimée du web, sa mise en page modifiée). La méthode de lecture des données externes à partir du web proposée par Excel a toutefois un énorme avantage, elle est particulièrement simple à mettre en œuvre :

Nous allons étudier cette méthode sur des calculs de conversions de monnaies. Tout d’abord, ouvrons notre Browser web et cherchons une page qui nous renvoie les taux de change. Pour que notre traitement fonctionne, il faudra que le taux de change cherché (dans l’exemple, le banal EUR/DOLLAR US) soit toujours au même endroit dans la page. Le jour où l’éditeur de la page change sa présentation, il faudra modifier nos traitements ! Bref, sur Yahoo (et bien d’autres) nous trouvons un exemple satisfaisant :

On copie l’url dans la barre d’adresse. Allons maintenant sous Excel 2007 et plaçons-nous sur l’onglet « données – données externes – A partir du site Web » (chemin équivalent sur Excel 2003) :

Et on colle l’url enregistrée dans la barre d’adresse du petit browser intégré à Excel (attention, ce mini-browser intégré dans Excel est antique, vraisemblablement une version IE6, certains sites ne s’afficheront donc pas correctement).

Sur la petite case verte ci-dessus, on a coché le « cadre » HTML que l’on va importer dans notre feuille Excel. On clique justement sur « Importer » et on retrouve en B49 notre taux de change.

Nous pouvons alors dans une autre feuille créer un tableau qui va effectuer des calculs à partir du taux de change issu d’internet. Pour plus de sécurité nous utilisons une fonction RECHERCHEV() pour ramener la 2ème colonne de la ligne qui contient EUR/USD (si jamais lors de la prochaine mise à jour Yahoo ajoute des lignes ou en supprime, cela marchera encore…).

Enfin, si le lendemain nous voulons mettre à jour notre tableau, nous retournons sur l’onglet « taux change yahoo ». Il faut alors effectuer un clic-droit sur les données web importées (sur le taux de change par exemple), et on choisit « actualiser ». Tout notre tableau est alors mis à jour automatiquement.

Top
Page 1 of 1

Contactez-nous contact@expert-data.fr

EXPERT data, solutions pour TPE/PME et grands comptes