Tatiak

Excel, Guitare, New- Beetle, ... et netbook ...

29 septembre 2007

Envoi automatique de mail

Il arrive d'avoir besoin d'envoyer régulièrement une plage de cellules par mail. Pour automatiser cette tache, nul besoin de logiciel de messagerie, un envoi direct par SMTP est possible. L'exemple proposé ici n'est, pour cette fois, pas sous forme de fichier exemple, mais de code car il est nécessaire de modifier quelques informations (les identifiants de votre connection) pour être pleinement fonctionnel.
Note : pour utiliser ces instructions, activer au préalable les références :

  • Microsoft ADO Ext ...
  • Microsoft CDO for windows 200 library

Voici le code, qui envoit la plage A1:H10 (sous forme d'image GIF) à votre correspondant :

Sub Envoi_Image()
    Call Export_Image_de_Plage
    Call Envoi_Mail
End Sub

Sub Export_Image_de_Plage()
Dim ndf As String
Dim Source As Range, Gr As Object
    ndf = ActiveWorkbook.Path & "\ImageDePlage.gif"
    Set Source = Range("Feuil1!A2:H10")
    Source.CopyPicture xlScreen, xlPicture
    Set Gr = Sheets(1).ChartObjects.Add(0, 0, Source.Width, _
      Source.Height)
    Gr.Chart.Paste
    Gr.Chart.Export ndf, "GIF"
    Gr.Delete
    Set Gr = Nothing
    Set Source = Nothing
End Sub

Sub Envoi_Mail()
Dim iMsg As New CDO.Message
Dim iConf As New CDO.Configuration
Dim Flds As Object
    Set Flds = iConf.Fields
    With Flds
        .Item(cdoSendUsingMethod) = cdoSendUsingPort
        .Item(cdoSMTPServer) = "Serveur SMTP" ' A spécifier
        .Item(cdoSMTPConnectionTimeout) = 10
        .Item(cdoSMTPAuthenticate) = cdoBasic
        .Item(cdoSendUserName) = "Identifiant de connection" ' A spécifier
        .Item(cdoSendPassword) = "Mot de passe de connection" ' A spécifier
        .Item(cdoURLProxyServer) = "server:80"
        .Item(cdoURLProxyBypass) = "<local>"
        .Item(cdoURLGetLatestVersion) = True
        .Update
    End With
    With iMsg
        Set .Configuration = iConf
        .To = "destinataire@domaine.com"  ' Adresse mail
        .From = "expéditeur@domaine.com"  ' votre Adresse mail
        .Subject = "Envoi automatisé"
        .TextBody = "Envoi automatisé de : ImageDePlage.gif"
        .AddAttachment ActiveWorkbook.Path & "\ImageDePlage.gif"
        .Send
    End With
End Sub

Posté par tatiak à 10:08 - Excel - Commentaires [2] - Rétroliens [0] - Permalien [#]

Commentaires

Bravo

Salut ami Tatiak,

Je te savais spécialiste du traitement des images sous XL, tu rajoutes, avec ce code, une corde à ton arc.

Bravo

Posté par JCGL, 27 octobre 2007 à 12:12

Salut JC!

Bonjour JC!
Ben oui, il arrive d'avoir besoin d'envoyer des images par messagerie.
Merci de ton commentaire!
Amitiés
tatiak

Posté par tatiak, 27 octobre 2007 à 12:24

Poster un commentaire







Rétroliens

URL pour faire un rétrolien vers ce message :
http://www.canalblog.com/cf/fe/tb/?bid=244825&pid=6367243

Liens vers des weblogs qui référencent ce message :