IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Envoyer un mail automatique chaque début de semaine


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 74
    Points
    74
    Par défaut Envoyer un mail automatique chaque début de semaine
    Bonjour les amis
    votre aide est vraiment précieux
    je veux envoyer chaque début de semaine un tableau récapitulatif (TCD d'un fichier excel); je veux l'envoyer de maniere aurtomatique sur outlook
    Merci d'avance pour votre support

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bon, j'ai copié une bonne partie du code sur le site de Ron de Bruin :

    http://www.rondebruin.nl/win/s1/outlook/bmail2.htm

    Tu dois tout coller dans le module "ThisWorkbook". Tel qu'il est écrit, il s'exécute le lundi à l'ouverture du classeur. Tu dois modifier les variables "Desti", "Fichier", "Feuille", "TCD" dans la macro "Workbook_Open". Le classeur contenant le TCD doit être ouvert. Le TCD est collé dans le corps du message.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    Private Sub Workbook_Open()
        Dim Desti As String, Feuille As String, TCD As String
        Dim Fichier As String, Plage As Range
        If Application.Weekday(Date) = 2 Then 'le message est expédié tous les lundis
            Fichier = "fichier.xls" 'le fichier doit être ouvert
            Feuille = "Feuil1" 'nom de la feuille contenant le TCD
            TCD = "Tableau croisé dynamique1" 'nom du TCD
            With Workbooks(Fichier).Sheets(Feuille).PivotTables(TCD)
                Set Plage = .TableRange2
            End With
            Desti = "test@test.com" 'destinataire du message
            EnvoiTCD Plage, Desti
        End If
    End Sub
    Function EnvoiTCD(Plage As Range, Desti As String)
        Dim OutApp As Object, OutMail As Object
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
        End With
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
        On Error Resume Next
        With OutMail
            .To = Desti
            .CC = ""
            .BCC = ""
            .Subject = "Sujet"
            .HTMLBody = RangetoHTML(Plage)
            .Send   'or use .Display
        End With
        On Error GoTo 0
     
        With Application
            .EnableEvents = True
            .ScreenUpdating = True
        End With
     
        Set OutMail = Nothing
        Set OutApp = Nothing
    End Function
    Function RangetoHTML(rng As Range)
    ' Changed by Ron de Bruin 28-Oct-2006
    ' Working in Office 2000-2013
        Dim fso As Object
        Dim ts As Object
        Dim TempFile As String
        Dim TempWB As Workbook
     
        TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
     
        'Copy the range and create a new workbook to past the data in
        rng.Copy
        Set TempWB = Workbooks.Add(1)
        With TempWB.Sheets(1)
            .Cells(1).PasteSpecial Paste:=8
            .Cells(1).PasteSpecial xlPasteValues, , False, False
            .Cells(1).PasteSpecial xlPasteFormats, , False, False
            .Cells(1).Select
            Application.CutCopyMode = False
            On Error Resume Next
            .DrawingObjects.Visible = True
            .DrawingObjects.Delete
            On Error GoTo 0
        End With
     
        'Publish the sheet to a htm file
        With TempWB.PublishObjects.Add( _
             SourceType:=xlSourceRange, _
             Filename:=TempFile, _
             Sheet:=TempWB.Sheets(1).Name, _
             Source:=TempWB.Sheets(1).UsedRange.Address, _
             HtmlType:=xlHtmlStatic)
            .Publish (True)
        End With
     
        'Read all data from the htm file into RangetoHTML
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
        RangetoHTML = ts.readall
        ts.Close
        RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                              "align=left x:publishsource=")
     
        'Close TempWB
        TempWB.Close savechanges:=False
     
        'Delete the htm file we used in this function
        Kill TempFile
     
        Set ts = Nothing
        Set fso = Nothing
        Set TempWB = Nothing
    End Function
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

Discussions similaires

  1. [MySQL] Envoyer un mail automatique
    Par Judgelolo dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 23/07/2012, 12h12
  2. Envoie de mail automatique chaque jour
    Par DeWaRs dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/04/2012, 17h38
  3. Réponses: 2
    Dernier message: 19/10/2008, 12h06
  4. Envoyer un mail automatiquement à partir d'Access
    Par jordan44 dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/10/2008, 06h50
  5. Envoyer un mail automatiquement
    Par ticain dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/09/2006, 08h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo