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

VBA Outlook Discussion :

Mise à jour graphique Excel dans Email Outlook


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut Mise à jour graphique Excel dans Email Outlook
    Bonjour,

    Je dois envoyer régulièrement un mail avec des graphiques Excel ainsi qu’un tableau Excel au sein du corps du message.
    Le mail est toujours le même avec uniquement évolution des graphiques et du tableau.

    Mon idée est donc de créer un modèle de mail Outlook (*.oft) avec les graphiques et le tableau et qu’ils se mettent automatiquement à jour lors de l’ouverture du modèle ou lorsque j’appuie un bouton pour lancer une macro ou autre (le fichier Excel sera mis à jour avant et sera toujours le même bien évidemment afin de garder la liaison). Ainsi ensuite, j’envoie le mail rapidement.
    Pour le moment, je peux uniquement mettre à jour manuellement (en sélectionnant le graphique et en cliquant sur Actualisation des données) chaque graphique et je n’ai pas trouvé de solution pour mettre à jour le tableau.

    Auriez une piste afin de mettre ce système en place (mise à jour de graphiques et du tableau en une seule fois) ?
    Si possible, ensuite, aplatir/convertir les graphiques en images afin d’éviter toutes modifications ultérieures (ou verrouillage des graphiques dans outlook).

    Par avance, merci pour votre aide !

    PS : Suite office 2016

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    En principe, c'est réalisable sans macro, comme tu le décris, il faut juste coller avec l'option "Conserver la mise en forme source et lier les donneés".

    et quand tu ouvres tu fais CTRL+A et F9

    PS: une fois envoyé (en html) le graph devient une image

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Hello,

    Super, merci pour votre réponse !

    J’utilise bien l’option "Conserver la mise en forme source et lier les donneés" mais c’est vrai que je ne l’utilisais pas pour le tableau.

    En utilisant cette option pour le tableau, à l’ouverture du modèle de mail, j’ai le message suivant :
    « Ce document contient des liens pouvant faire référence à d’autres fichiers. Voulez-vous mettre à jour ce document avec les données des fichiers liés ? »

    Lorsque je clique sur « Oui », ça permet de mettre à jour le tableau mais les graphiques ne se mettent pas à jour. Il y a-t-il une possibilité de mettre à jour également les graphiques lorsque indique que l’on clique sur « Oui » ?

    Sinon après la méthode F9 fonctionne correctement mais cela permettrai d'être sûr que l'on oublie pas de faire le F9 comme nous avons déjà cliqué sur OUI !! Afin de ne pas envoyer un mail faussé.
    C'est pour cela que j'avais pensé à l’exécution d'une macro par exemple. Peux-être est-il possible de supprimer le pop-up de mise à jour à l'ouverture du mail et de réaliser une macro exécutant <Ctrl>+A puis <F9> avec un petit bouton dans la barre d'outils d'accès rapide ? Qu'en pensez-vous ?


    Par contre, c’est super le fait que les images soient automatiquement convertit en image ! (je n’avais pas encore fait le test).

    Merci beaucoup pour votre aide !

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    bonjour,
    On peut aussi faire une macro, qui va ouvrir le fichier excel , copier le tableau et le graph et les coller dans un Mail.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour,
    En effet, cette solution serait vraiment l’idéal au vu de mes différentes problématiques que je rencontre actuellement.
    Par contre, j’espérai pouvoir utiliser l’enregistrement de macro mais je me suis rendu compte qu’il n’était pas possible de l’utiliser dans Outlook.

    Savez-vous comment je pourrai réaliser cela en macro dans Outlook ?

    J’ai commencé un bout de macro mais j’ai des difficultés à réussir à la faire fonctionner… Je ne sais même pas si ce que j’ai écrit est cohérent.

    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
    Sub Macro2()
    '
    ' Macro2 Macro
    '
    Dim Outlook As Outlook.Application
    Dim Msg As MailItem
    '
    'Ouvrir le fichier Excel
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\TESTS\Tests.xlsx")
     
    xlBook.worksheets("Feuil2").Range("A7:E9").Select
    xlBook.worksheets("Feuil2").Selection.Copy
    xlBook.worksheets("Feuil2").ActiveWindow.SmallScroll Down:=12
    xlBook.worksheets("Feuil2").ActiveSheet.ChartObjects("Graphique 1").Activate
    xlBook.worksheets("Feuil2").Application.CutCopyMode = False
    xlBook.worksheets("Feuil2").ActiveChart.ChartArea.Copy
    xlBook.worksheets("Feuil2").ActiveWindow.SmallScroll Down:=30
    xlBook.worksheets("Feuil2").ActiveSheet.Shapes.Range(Array("Group 41")).Select
    xlBook.worksheets("Feuil2").Selection.Copy
     
    'Ouvrir Outlook
    Set Outlook = New Outlook.Application
    Set Msg = Log_Msg.CreateItem(olMailItem)
     
    End Sub
    Merci !

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour Oliv- et merci pour ton aide.

    Malgré tes sources je bloque.
    J'ai à chaque fois des erreurs du type "Propriété ou méthode non gérée par cet objet" comme sur le "Selection.Copy" ou une erreur du type "Type défini par l'utilisateur non défini" lorsque j'essaye d'initialiser une variable pour faire comme dans les exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim r As Range
    Set r = Range("b10:G14")
    r.Copy
    J'ai l'impression que certaines commandes ne peuvent pas être interprété dans Outlook comparé à Excel ou Word. Qu'en penses-tu ?
    Donc je suis bloqué et je ne vois pas comment faire pour le moment.

    J'ai un peu avancé mais donc sans pouvoir tester pour le moment
    J'ai modifié la parti outlook car la macro sera excécutée lorsque le modèle de mail (*.oft) sera ouvert. Je ne veux pas créer un nouveau mail mais simpelment modifier le mail ouvert.
    Par contre je ne vois pas comment copier le tableau et les graphiques à la placesdes autres. Je continue à chercher.

    Voici le code, je ne sais si c'est cohérent...

    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
    Sub Macro2()
     
    'Ouvrir le fichier Excel
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\TESTS\Tests.xlsx")
     
    'copie des donnees 
    xlBook.worksheets("Feuil2").Range("A7:E9").Select
    xlBook.worksheets("Feuil2").Selection.Copy
    xlBook.worksheets("Feuil2").ActiveWindow.SmallScroll Down:=12
    'Dim Graphique1 As Range
    xlBook.worksheets("Feuil2").ActiveSheet.ChartObjects("Graphique 1").Activate
    xlBook.worksheets("Feuil2").Application.CutCopyMode = False
    xlBook.worksheets("Feuil2").ActiveChart.ChartArea.Copy
    xlBook.worksheets("Feuil2").ActiveWindow.SmallScroll Down:=30
    xlBook.worksheets("Feuil2").ActiveSheet.Shapes.Range(Array("Group 41")).Select
    xlBook.worksheets("Feuil2").Selection.Copy
     
    'Parti Outlook --> dans le mail ouvert
    Dim CurrentMessage As Object
    If TypeName(Application.ActiveWindow) = "Inspector" Then
        Set CurrentMessage = Application.ActiveWindow.CurrentItem
    End If
     
    Dim wordDoc As Object
    Set wordDoc = CurrentMessage.GetInspector().WordEditor
     
    'Copie des donnees dans le mail
    wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
    wordDoc.ActiveSheet.ChartObjects.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
    wordDoc.ActiveSheet.Shapes.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
     
    End Sub
    Merci pour ton aide.

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,

    Lances tu ta macro à partir de Excel ou de Outlook ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Je lance la macro depuis Outlook.

    L'idée serait d'avoir un bouton dans la barre d'accès rapide et lorsque j'ouvre le mail, cliquer sur le bouton pour mettre à jour le mail.

    Merci

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Le code ce serait plutot comme cela :

    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
    Sub Macro2()
     
    'Ouvrir le fichier Excel
        Set xlApp = CreateObject("Excel.Application")
        'pour rendre excel visible
        xlApp.Visible = True
     
     
        Set xlBook = xlApp.Workbooks.Open("C:\TESTS\Tests.xlsx")
     
     
        'Parti Outlook --> dans le mail ouvert
        Dim CurrentMessage As Object
        If TypeName(Application.ActiveWindow) = "Inspector" Then
            Set CurrentMessage = Application.ActiveWindow.CurrentItem
        End If
     
        Dim wordDoc As Object
        Set wordDoc = CurrentMessage.GetInspector().WordEditor
     
        'pour se mettre au début du mail
        Set objSel = wordDoc.Windows(1).Selection
        objSel.Move wdStory, -1
     
        'copie des donnees
        xlBook.Worksheets("Feuil2").Range("A7:E9").Copy
     
        'colle
        objSel.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
     
        'ajoute un saut de ligne
        objSel.Move wdParagraph, 1
     
     
     
        'copie du graph
        With xlBook.Worksheets("Feuil2").ChartObjects("Graphique 2")
            .Chart.ChartArea.Copy
        End With
        ' colle dans le mail
        objSel.Paste
     
     
        xlBook.Close False
        If xlapp.Workbooks.Count = 0 Then xlapp.Quit
     
    End Sub
    wordDoc et objsel sont en fait des Objets WORD c'est le code des macros Word qu'il faut donner pour changer de ligne ajouter du texte etc

    le copier coller se fait comme manuellement en 2 étapes on copie puis on colle, toi tu copiais plusieurs fois pour ensuite coller...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour Oliv',

    En effet, pour l'histoire des copier/coller, je voulais stocker les valeurs dans une variable mais je n'arrivai pas à initialiser la variable (en Range).

    Merci beaucoup pour ton aide, je vais voir pour travailler dessus et l'adapter à mon besoin. L'idéal serait de pouvoir intégrer le tableau et les graphiques à un endroit précis du mail sous certaines lignes.
    Je vais creuser cette partie !

    Merci
    Bonne journée

    PS : J'ai des problèmes avec les lignes "objSel.Move wdStory, -1" et "objSel.Move wdParagraph, 1" (Erreur d'exécution 4120). Je vais creuser.

  12. #12
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    ET OUI ! en fait quand tu pilotes une autre application en LATE BINDING (= sans ajouter de référence) tu dois déclarer les constantes

    essaye en ajoutant au début de la macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Const wdStory = 6
    Const wdParagraph = 4
    ou ajoute la références 'Microsoft Word 1x.0 object library" dans le menu Outils/ références de VBE
    tu peux aussi ajouter celle d'excel

    pour déplacer le curseur dans le mail tu peux lire
    http://rdorat.free.fr/Enseignement/VBA/VBA/ObjWord.html

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Haa très bien merci pour l'info !

    Je pense que mon idée t'intégrer le tableau et les graphiques à un endroit précis va être compliqué. Je ne sais pas comment dire insérer après tels ou tels lignes.
    L'idéal serait de pouvoir faire une recherche en VBA afin d'indiquer de copier le tableau après ce mot précis à la place de ce placer au début du mail. Est-ce possible ?

    Sinon, sais-tu par hasard, s'il est possible d'insérer plusieurs .Body afin d'insérer le tableau et les graphiques entre les lignes ?

    l'idée serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CurrentMessage.Body = "Madame, Monsieur "
    'copie des donnees
        xlBook.Worksheets("Worksheet2").Range("A7:E9").Copy
     
        'To paste as picture
        'objSel.PasteAndFormat Type:=wdChartPicture
        'objSel.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile,
        objSel.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
            Placement:=wdInLine, DisplayAsIcon:=False
     
    'Second Body
    CurrentMessage.Body = "Veuillez trouver ci-dessous..... "
    Actuellement mon second .Body supprime évidemment le premier.
    Merci

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Pour l'idée de la recherche de mot, j'ai trouvé cette expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Selection As Object
        With Selection.Find
            .ClearFormatting
            .MatchWholeWord = True
            .MatchCase = False
            .Execute FindText:="moi"
        End With
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim rngTemp As Object
    Set rngTemp = ActiveDocument.Content.Find
    With rngTemp
            .Text = "moi"
            .Forward = True
            .Execute
            If .Found = True Then .Parent.Bold = True
        End With
    J'aimerai ainsi pouvoir me placer une ligne après le mot recherché. Je continu mes recherches. Pour le momùent j'ai l'erreur objet requis à chaque tentative

  15. #15
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    soit on modifie le .body (texte brut) ou le .htmlbody (html) cela dépend du format du mail, ou alors on entre en mode WORD et on utilise les fonctions de Word pour modifier le contenu du Corps du Mail.


    Si tu utilises UN MODELE tu peux très bien mettre un marqueur (=un texte spécifique) comme #graph # tableau et rechercher/remplacer par le tableau et le graph

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Merci pour ta réponse.

    C'est exactement ce que je recherche à faire mais j'ai des difficultés à mettre en place la fonction "With Selection.Find" citée auparavant.
    Est-ce bien ce type de fonction que je dois utiliser dans Outlook ?

    Merci

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    J'ai avancé mais je suis malheureusement bloqué.
    Sous Word cela semble pourvoir fonctionner mais sous Outlook j'ai à chaque fois des erreurs du type "erreur 424 - objet requis" ou des erreurs concernant la ligne With CurrentMessage.Find ci-dessous. L'erreur est "Erreur d'exécution : Propriété ou méthode non gérée par cet objet".

    Je pensai utiliser le code ci-dessous mais j'ai des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With CurrentMessage.Find
        .Text = "test"
        .Forward = True
        .Execute
        If .Found = True Then
            '.Parent.Bold = True
            'colle le tableau en tant qu'image
            objSel.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
            Placement:=wdInLine, DisplayAsIcon:=False
        End If
    End With
    Avez-vous une piste pour m'aider ?
    Merci

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 100
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    J'ai continué d'avancer sur le sujet.
    J'ai corrigé mes erreurs que j'avais en ajoutant des références à mon projet. Cela me permet de ne plus avoir mes erreurs objet requis, problème de propriétés,...

    Néanmoins, après différents tests, avec les codes indiqués ci-dessus, je n'avais plus d'erreurs mais le texte n'était pas remplacé.

    Maintenant, cela fonctionne avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentMessage.HTMLBody = Replace(CurrentMessage.HTMLBody, "test1", "test2")
    Par contre je n'arrive pas a remplacé "test1" par le tableau par exemple.

    Voici le code actuel pour coller le tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xlBook.Worksheets("Feuil2").Range("A7:E9").Copy
    objSel.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
            Placement:=wdInLine, DisplayAsIcon:=False
    J'aimerai pouvoir mettre la commande "objSel.PasteSpecial..." pour coller le tableau en variable afin de l'utiliser ensuite dans la première commande citée (test2 serait une variable).
    Pour l'instant je bloque.

    Oliv-, avez-vous une astuce pour ça ?
    Je ne trouve rien sur ce sujet.

    Merci

  19. #19
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,

    On ne peut mixer les 2 méthodes ainsi !

    Par exemple le HTMLBODY peut être utilisé pour remplacer du texte par un autre texte.

    Le HTMLBody réclame du HTML, alors tu peux remplacer un texte simple comme "toto" par une balise HTML qui va pointer sur une image sur internet par exemple
    <a href="http://www.speedtest.net/my-result/5663608910"><img src="http://www.speedtest.net/result/5663608910.png" /></a>

    Par contre si tu veux inclure l'image à ton envoi elle devra l'être en PJ et modifiée, pour qu'elle est le statut de incorporée un corps du mail ( Embedded), c'est plus compliqué et souvent la pj reste visible (Je parle là du GRAPHIQUE)

    Pour le Tableau il peut tout à fait être ajouté en HTML, mais c'est pas un copié collé, c'est une reconstruction du tableau cellule par cellule.
    voir ici :http://www.developpez.net/forums/d15...l-outlook-vba/

    Si tu veux faire du copié collé la méthode c'est celle que je t'ai donnée précédemment en utilisant Wordeditor (et donc des macro Word).

    je vais tester ton code de find et reviendrai vers toi

  20. #20
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    voici , il faut que tu ais les mots ICILETABLEAU et ICILEGRAPH aux endroits voulus

    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
    Sub AjoutGarphEtTableauDansEmail()
     
    'Ouvrir le fichier Excel
        Set xlapp = CreateObject("Excel.Application")
        'pour rendre excel visible
        xlapp.Visible = True
        Set xlBook = xlApp.Workbooks.Open("C:\TESTS\Tests.xlsx")
        '
     
        'Parti Outlook --> dans le mail ouvert
        Dim CurrentMessage As Object
        If TypeName(Application.ActiveWindow) = "Inspector" Then
            Set CurrentMessage = Application.ActiveWindow.CurrentItem
        End If
     
        Dim wordDoc As Object
        Set wordDoc = CurrentMessage.GetInspector().WordEditor
     
        'pour se mettre au début du mail
        Set objSel = wordDoc.Windows(1).Selection
        objSel.Move wdStory, -1
     
     
     
     
        With objSel.Find
            .ClearFormatting
            .Text = "ICILETABLEAU"
            .Forward = True
            .MatchWholeWord = True
            .MatchCase = False
            .Execute
            If .Found = True Then
                '.Parent.Bold = True
                'copie des donnees
                xlBook.Worksheets("Feuil2").Range("A7:E9").Copy
     
                'colle le tableau en tant qu'image
                objSel.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
                                    Placement:=wdInLine, DisplayAsIcon:=False
            End If
        End With
     
     
     
        'ajoute un saut de ligne
        objSel.Move wdParagraph, 1
     
     
        With objSel.Find
            objSel.Move wdStory, -1
            .ClearFormatting
            .Text = "ICILEGRAPH"
            .Forward = True
            .MatchWholeWord = True
            .MatchCase = False
            .Execute
            If .Found = True Then
                '.Parent.Bold = True
                'copie des donnees
                'copie du graph
                With xlBook.Worksheets("Feuil2").ChartObjects("Graphique 2")
                    .Chart.ChartArea.Copy
                End With
                ' colle dans le mail
                objSel.Paste
            End If
        End With
     
     
        'ajoute un saut de ligne
        'objSel.Move wdParagraph, 1
     
     
    'fermeture excel
        xlBook.Close False
        If xlapp.Workbooks.Count = 0 Then xlapp.Quit
     
    End Sub

Discussions similaires

  1. [XL-2010] Mise à jour des formules dans une feuille Excel
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 04/09/2013, 10h04
  2. Mise à jour fichier Excel dans word
    Par fred-h dans le forum Word
    Réponses: 2
    Dernier message: 04/11/2010, 14h33
  3. Mise à jour graphique excel
    Par peubar dans le forum Excel
    Réponses: 5
    Dernier message: 02/03/2010, 13h15
  4. [Débutant] Mise à jour graphique dans une autre figure que la principale
    Par Luis Vieira da Silva dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/06/2009, 12h04
  5. Mise à jour du texte dans mon scrolltaux.fla
    Par icewolf dans le forum Flash
    Réponses: 2
    Dernier message: 28/12/2005, 09h07

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