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 :

Exportation de graphique de Excel vers Word [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Exportation de graphique de Excel vers Word
    Bonsoir,

    J'essaye d'exporter des graph que j'ai sur excel vers un rapports en word, pour cela j'essaye de creer une macro sur mon fichier excel oú j'ai mes graph, voila mon code que j´ai repris sur internet:

    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
    Sub Exportera_Diagram_Word()
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    Dim ctChart As ChartObject
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim BMRange As Word.Range
    Dim oShape As Word.InlineShape
     
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets("Dispo")
     
    With wsSheet
    Set ctChart = .ChartObjects("Graph 2")
    End With
     
    Application.ScreenUpdating = False
     
    ctChart.Chart.Export _
    Filename:=ThisWorkbook.Path & "\Graph2.jpg", FilterName:="jpg"
     
    Set wdApp = CreateObject("Word.Application")
     
    Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "\RM__PE_X_XXXXX - MMMM AAAA.docx")
     
    'With ActiveDocument.InlineShapes(1)
    '.Select
    '.Delete
    'End With
     
    Set BMRange = ActiveDocument.Bookmarks("Graph2").Range
     
    With BMRange
    .Select
    .InlineShapes.AddPicture Filename:= _
    ThisWorkbook.Path & "\Graph2.jpg", _
    LinkToFile:=False, _
    SaveWithDocument:=True
    End With
     
    With wdApp.ActiveDocument
    .Save
     
    End With
     
    wdApp.Quit
     
    Set wdDoc = Nothing
    Set wdApp = Nothing
    wdoc.Close
    wdApp.Quit
     
     
    With Application
    .CutCopyMode = False
    .ScreenUpdating = True
    End With
     
    Kill ThisWorkbook.Path & "\Graph2.jpg"
     
    MsgBox "ReportChart created and copied succesfully to Dennis.doc", vbInformation
     
    End Sub

    J´ai 2 erreurs qui m’apparaisse:

    La première dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveDocument.InlineShapes(1)
    que j'ai dut mettre en commentaire pour que ça passe.

    La 2º c'est une erreur OLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "\RM__PE_X_XXXXX - MMMM AAAA.docx")
    Cette erreur m’apparais seulement si je lance la macro plus que une fois de suite. Ça marche au premier fois mais après ça donne erreur.

    Quelqu’un peut donner un coup de pouce svp?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut
    en ce qui concerne ta 2ème erreur : essaye de fermer ce que tu as ouvert avant de le rouvrir
    Tu peux le faire pour un seul document (de ton choix), mais égalerment (de mémoire) pour tous les documents Word ouverts (d'un seul coup), par Documents.close

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Proposition
    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
    Sub Exportera_Diagram_Word()
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim BMRange As Word.Range
    Dim oShape As Word.InlineShape
     
    Application.ScreenUpdating = False
    ThisWorkbook.Worksheets("Dispo").ChartObjects("Graph 2").Chart.Export Filename:=ThisWorkbook.Path & "\Graph2.jpg", FilterName:="jpg"
    Set wdApp = CreateObject("Word.Application")
    Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "\RM__PE_X_XXXXX - MMMM AAAA.docx")
    On Error Resume Next
    wdDoc.Range.InlineShapes(1).Delete
    On Error GoTo 0
    wdDoc.Bookmarks("Graph2").Range.InlineShapes.AddPicture Filename:=ThisWorkbook.Path & "\Graph2.jpg", LinkToFile:=False, SaveWithDocument:=True
    wdDoc.Save
    wdDoc.Close
    wdApp.Quit
    Set wdDoc = Nothing
    Set wdApp = Nothing
    Kill ThisWorkbook.Path & "\Graph2.jpg"
    MsgBox "ReportChart created and copied succesfully to Dennis.doc", vbInformation
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Salut et merci beaucoup pour votre aide, j'ai copiez votre code ainsi que Documents.close , pour le premier problème ça c'est bien passer.

    De reste c'est tous pareille

    J'arrive a faire mon documents la 1ºfois, je l'ouvre, je élimine mon image graph2 et referme en sauvegardant. je lance la macro une 2º fois et hop un message qui me dit que mon docx et en train d’être utiliser et que il est bloqué pour édition par moi!j'ai 3 option: ouverture en lecture, fait une copie local.

    Si par exemple avant de faire la 2º de la macro je ferme le processus winword alors lá ça marche!

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    fais une temporisation (avec une boucle avec Doevents, après :

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    J'arrive a faire mon documents la 1ºfois, je l'ouvre, je élimine mon image graph2 et referme en sauvegardant.
    Cette ligne permet de supprimer l'éventuel graphique existant avant d'insérer le nouveau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error Resume Next
    wdDoc.Range.InlineShapes(1).Delete
    On Error GoTo 0
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Avec le premier code que vous m'avez envoyer, j'ai réussi a le mettre a fonctionner, le seul hic c'est que il élimine a chaque fois mon bookmark, est il possible utiliser le code tel comme il est vu que il ne me donne plus d erreur et de changer seulement la partie oú il elimine le bookmark?

    Juste une petite question qui peut paraître bête: pouver vous m'expliquer InlineShapes?c'est quoi?

    Le reste du code je le lit bien sans problème, mais j'ai jamais utiliser InlineShapes...

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Le F1 n'aide pas?
    L'objet InlineShape est membre de la collection InlineShapes. La collection InlineShapes contient toutes les formes insérées dans un document, une plage ou une sélection.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    ok merci, si j'ai compris en faite c mon graph2, si par exemple j'ai un 2º graph a transporter vers word ça sera un InlineShapes(2)?

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Oui
    InlineShapes est la collection des InlineShape de ton document (toutes les formes insérées dans un document, dans ton cas des images)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Ça va beaucoup m'aider ça vu que je veux insérer plusieurs graph dans mon *.docx

    Juste pour vous explique un peut le pourquoi de tous ça: Je fait des rapport word tous les mois et j utilise excel pour faire les graph de mes donnés (les donnés je les reçoit tous les mois). Je fais ça pour plusieurs site éolien alors je fais un rapport pour chaque site.

    Se que je pense faire c'est un rapport word.docx par défaut (sans image) avec mes bookmark est a chaque foi que je lance ma macro sur excel pour copier les graph il me fait une copie du fichier word.docx avec le nom du site et garde intacte mon word.docx initial. Tous ça dans le même répertoire

    Le nom du rapport je vais allez le chercher sur mon fichier excel comme ça pas de problème.

    Je vais utilizer le code qui elimine les bookmarks

    Un grand merci mercatog et babaothe! j'ai réussi a passé mon problème grâce a vous deux. Maintenant je peut continuer avec mon programme vba

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Export d'un tableau Excel vers Word
    Par Flo88 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/01/2009, 15h39
  2. Graphique excel vers word
    Par peetersq dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/04/2008, 10h41
  3. export tableau excel vers word
    Par camzo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/10/2007, 18h53
  4. [VBA-Word] Exportation Excel vers Word
    Par le_sonic dans le forum VBA Word
    Réponses: 6
    Dernier message: 20/12/2006, 17h18
  5. [VBA-E]Copie graphique de excel vers word
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2006, 10h49

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