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 :

Automatiser un transfert d'image de Excel à Word


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Par défaut Automatiser un transfert d'image de Excel à Word
    Bonjour à tous,
    Vous m'avez déjà appris énormément que ce soit en programmation Word ou Excel malgré mon ignorance et je suis surpris de votre réactivité, je vous remercie infiniment de votre dévotion envers la programmation !

    Je cherche à automatiser l'export de tableaux Excel (pouvant être de tailles différentes) de différents onglets : un tableau par onglet, vers un fichier word vierge.

    Je recherche principalement à exporter la totalité des tableaux sur un document word vierge nommé "Fiches_sondages_word.docx" pour pouvoir faire un CTRL + A puis couper pour coller sur le fichier destinataire final. Je pense qu'il y a une méthode plus simple sans passer par un "fichier vierge temporaire" mais je pense que c'est le plus simple à faire sachant que le fichier destinataire final a de fortes probabilités de changer de nom...

    Pourquoi ?
    Parce qu'il est probable qu'il y ait une 60taines d'onglets comportant un tableau précis.. Et que la sélection du tableau, copier en tant qu'image, sélection de la fenêtre word, coller et redimensionner, mettre un saut de page, retourner sur l'excel, changer d'onglet, sélectionner le tableau ..... etc etc... peut être très chronophage et surtout assez simple à automatiser.

    Pour cela, j'ai piqué certains morceaux de codes que j'avais déjà programmer mais sur d'autres documents du style word pour du Excel et mes compétences en boucle sont clairement limitées...

    Informations :
    Mon fichier Excel se nomme "Investigations.xls" et les onglets "Fiches_sondages_S1" pour la 1ère, "Fiches_investigation_S2" pour la 2ème ... etc etc... jusqu'à un nombre variable d'onglets
    Mon fichier temporaire est vierge et se nomme "Fiches_sondages_word.docx"
    Mon fichier destinataire final lui, sera complété à la main par mon CTRL +A / CTRL + C(ou X) puis CTRL + V de mon fichier temporaire à mon fichier destinataire final


    Objectifs :
    1) Automatiser la sélection du tableau, même si les dimensions changent, avec un Copier en tant qu'image : DONE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Fin As Long
    Fin = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
    Range("B2:J" & Fin).CopyPicture Appearance:=xlScreen, Format:=xlPicture
    (Merci Menhir car ça marche à la perfection)

    2) Pouvoir exécuter la macro avec uniquement le classeur Excel d'ouvert, que le fichier word temporaire s'ouvre tout seul dès l'exécution de la macro : En cours, j'essaie d'adapter un programme qui marche sur Word mais j'arrive pas à l'appliquer à Excel et j'ai ça pour le moment :

    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
    Sub Macro()
    Set Wordapp = CreateObject("word.Application")
    Wordapp.Visible = True
    Wordapp.Documents.Open FileName:="/Users/aurelienmeriot/Desktop/Fiches_sondages_word.docx"
    Wordapp.Activate
     
     
    Documents("Investigations").Activate 'Démarrage du C/C de Excel vers Word
    Worksheets("Fiche-sondage_S1").Activate
    Dim Fin As Long
    Fin = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row 'Sélection du tableau et Copier en tant qu'image
    Range("B2:J" & Fin).CopyPicture Appearance:=xlScreen, Format:=xlPicture
     
    Documents("Fiches_sondages_word").Activate 'Changement de fenêtre pour coller (Excel à Word)
     
    Selection.Paste
    Selection.InsertBreak Type:=wdPageBreak 'Ajout d'un saut de page
     
    Documents("Investigations").Activate 'Changement de fênetre (Word à Excel)
    Worksheets("Fiche-sondage_S2").Activate 'Changement d'onglet
     
    Etc...Etc... (boucle)
     
    End Sub
    3) Mettre les image en forme sur le Word mais cette étape est le cadet de mes soucis

    Mais une fois de plus, rien ne marche et pour optimiser tout ça il faudrait mettre sous forme de boucle ou de conditions pour pouvoir s'arrêter lorsque le dernier onglet est dépasser ^^'

    Je suis très bien conscient que je suis loin d'avoir la réflexion de progra, et que vous avez 10 000 solutions tellement plus simple que la mienne, c'est pour cela que je me tourne vers votre expertise.

    Je vous remercie d'avance de votre participation à mon projet.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas testé, mais ces lignes me semblent correctes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro()
       Set Wordapp = CreateObject("word.Application")
       Wordapp.Visible = True
       Wordapp.Documents.Open FileName:="/Users/aurelienmeriot/Desktop/Fiches_sondages_word.docx"
       Wordapp.Activate
    Mais ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Documents("Investigations").Activate 'Démarrage du C/C de Excel vers Word
    Excel n'a pas d'objet Document, et il n'est pas capable de deviner que c'est ton document Word. Donc, tu dois l'avertir et lui dire que c'est l'instance de Word lancée par ta macro, et pas une autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wordapp.Documents("Investigations").Activate 'Démarrage du C/C de Excel vers Word
    Mais, avec le temps, tu vas te rendre compte que l'on peut presque toujours se passer de select et activate.

    Par exemple, en Excel, on peut très bien avoir ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").range("A1").value = Sheets("Feuil3").range("j365").value
    sans actvate, sans select et souvent sans copier-coller.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Par défaut
    Mais ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Documents("Investigations").Activate 'Démarrage du C/C de Excel vers Word
    Excel n'a pas d'objet Document, et il n'est pas capable de deviner que c'est ton document Word. Donc, tu dois l'avertir et lui dire que c'est l'instance de Word lancée par ta macro, et pas une autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wordapp.Documents("Investigations").Activate 'Démarrage du C/C de Excel vers Word
    Mais, avec le temps, tu vas te rendre compte que l'on peut presque toujours se passer de select et activate.

    Par exemple, en Excel, on peut très bien avoir ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").range("A1").value = Sheets("Feuil3").range("j365").value
    Merci pour ces précisions, ça m'éclaire beaucoup !

    Est-ce qu'il est possible de réaliser un C/C de Excel vers Word via un tableau ou encore un signet présent sur le word ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Fiche-sondage_S2").Activate
    Fin = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
    Range("B2:J" & Fin).CopyPicture Appearance:=xlPrinter = appword.Documents("Fiches_sondages_word").bookmarks("Fiche sondage")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Fiche-sondage_S2").Activate
    Fin = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
    Range("B2:J" & Fin).CopyPicture Appearance:=xlPrinter (appword.Documents("Fiches_sondages_word").bookmarks("Fiche sondage"))
    Encore merci !

Discussions similaires

  1. Transfert d'images d'une ImageList (Excel) vers un document Word
    Par damienator dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/04/2012, 10h31
  2. [Excel Word] transfert d'image de word vers excel
    Par yald1 dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2010, 16h06
  3. Transfert de données de excel à word
    Par faamugol dans le forum VBA Word
    Réponses: 5
    Dernier message: 31/10/2008, 22h51
  4. [VBA-E] Transfert D'images Entre Deux Fichiers Excel
    Par Kevin_18 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/04/2007, 14h43
  5. [VB] excel->word positionner une image
    Par estampille dans le forum VBA Word
    Réponses: 2
    Dernier message: 19/01/2006, 17h34

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