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 :

Excel vba email redimensionner image


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    autre
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : autre
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Par défaut Excel vba email redimensionner image
    Bonjour,

    J'ai le code ci-dessous qui me permet de mettre en forme un email sous Outlook à partir d'Excel.
    Il contient des plages de cellules et un graphique sous forme d'image.

    Il fonctionne, cependant, je souhaite redimensionner l'image du graphique dans le corps du mail pour en réduire la taille.
    Je n'ai pas trouvé l'astuce sur le forum, pouvez-vous, svp, m'aider ?

    Merci d'avance.

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
     
    Sub Mail_avec_image()
     
    Dim tableau_a_copier1 As Range
    Dim tableau1 As String
    Dim liste_destinataires As String
    Dim liste_cc As String
    Dim début As String
    Dim outlookApp As Object
    Dim NewMail As Object
    Dim Fname1 As String
    Dim Fname11 As String
     
    With Application
            .ScreenUpdating = False
            .EnableEvents = False
    End With
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '           Définir horodatage                            '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    DateDuJour = Format(Date, "dd mmmm yyyy")
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '       Copier le tableau pour insérer dans email         '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Set tableau_a_copier1 = ActiveSheet.Range("a1:r4")
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '       Copier les Graph                                  '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Fname1 = Environ$("temp") & "\graph1.gif"
     ActiveWorkbook.Worksheets("indicateur").ChartObjects("Graphique 22").Chart.Export _
        FileName:=Fname1, FilterName:="GIF"
     
     
    '''''''''''''''''''''''''''''''''''''
    '        Liste de diffusion         '
    '''''''''''''''''''''''''''''''''''''
    nb_contacts = Worksheets("Tables").Cells(Rows.Count, "AB").End(xlUp).Row
    nb_contacts_copie = Worksheets("Tables").Cells(Rows.Count, "AE").End(xlUp).Row
     
    For i = 2 To nb_contacts
        liste_destinataires = liste_destinataires & Worksheets("Tables").Range("AB" & i) & ";"
    Next i
     
    For i = 2 To nb_contacts_copie
        liste_cc = liste_cc & Worksheets("Tables").Range("AE" & i) & ";"
    Next i
     
     
    ''''''''''''''''''''''''''''''''
    '        Corps du mail         '
    ''''''''''''''''''''''''''''''''
    début = "<BODY style=font-size:10pt;font-family:Arial>Bonjour,<p><p>Vous trouverez ci-dessous les Indicateurs.<p>"
     
    tableau1 = "<b><u><font size=+1><blockquote>" & "</blockquote></font></b></u>" & RangetoHTML(tableau_a_copier1)
     
    Fname11 = "<IMG src=" & Fname1 & ">"
     
     
    '''''''''''''''''''''''''''''''''''
    '        Création du mail         '
    '''''''''''''''''''''''''''''''''''
    Set outlookApp = CreateObject("Outlook.Application")                                'ouverture d'Outlook
    Set NewMail = outlookApp.CreateItem(0)                                              'ouverture d'un nouveau mail
    On Error Resume Next
        With NewMail
            .Display                                                                    'déclare la signature du mail
            .To = liste_destinataires                                                   'écrit la liste de destinataires
            .CC = liste_cc                                                              'écrit la liste des personnes en copie
            .Subject = "Indicateurs | " & DateDuJour                                    'écrit l'objet du mail
            .HTMLBody = début & tableau1 & Fname11 & .HTMLBody                          'écrit le corps du mail
            .Display                                                                    'écrit la signature
        End With
    On Error GoTo 0
     
    'Supprimer le fichier temporaire
    Kill Fname1
     
    Set outlookApp = Nothing
    Set NewMail = Nothing
     
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
     
    End Sub
     
    '---NE PAS TOUCHER--- Permet de copier/coller une plage de données en tableau sur un mail
     
    Function RangetoHTML(rng As Range)
     
        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
            'mise en forme colonnes
            Columns("A:I").Select
            Range("A1").Activate
            Cells.EntireColumn.AutoFit
            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

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fname11 = "<IMG style=""width:200px;height:150px;""src=" & Fname1 & ">"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Candidat au Club
    Homme Profil pro
    autre
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : autre
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Par défaut
    Merci Patricktoulon

    Si je souhaite coller dans le corps du Mail 2 graphiques côte à côte avec un espace entre deux, comment puis-je faire?
    Pour le moment je n'arrive qu'à les mettre l'un en dessous de l'autre.

    Merci d'avance.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et bien en fait ca depend du CSS cela
    fait une recherche du coté de position absolute ,top,left
    ta du boulot si tu n'a aucunne connaissance du CSS (style pour HTML)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [XL-2013] VBA - Importer une image redimensionnée à un endroit précis sous excel
    Par Jarod69 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 07/06/2017, 21h41
  2. Réponses: 50
    Dernier message: 12/06/2014, 14h48
  3. Graphiques Excel et VBA, Comment redimensionner?
    Par dav_e77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2007, 17h47
  4. [Excel-VBA]Redimensionnement de tableau
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/08/2006, 17h16
  5. VBA : copier une image d'une feuille excel à une autre
    Par Equus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2005, 14h01

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