Bonjour,
Je viens vers vous afin d'obtenir de l'aide, car je suis novice en VBA et je suis amené à faire un stage dans une entreprise qui n'emploie pas d'informaticien. Je vous décris mon problème, merci par avance de votre lecture.
J'ai importé une mise en page Word d'un document dans le but d'automatiser son remplissage grâce à une macro Excel qui va chercher des informations dans divers fichiers Excel, mais après cela j'aurais besoin de copier-coller des e-mails et de vérifier qu'aucun problème de mise en page n'a été causé par l'importation automatique des données.
Pour cela, j'ai essayé d'exporter cette feuille sur Word tout en gardant la mise en page. Après quelques essais de code trouvés sur internet je suis arrivé au résultat suivant :
Bien que j'ai trouvé d'autres méthodes pour copier/coller la feuille active, je n'ai pas réussi à copier de la première cellule à la dernière active (obtenue avec la combinaison ctrl+fin) tout en gardant une mise en forme correcte sous Word. Le but étant que si jamais le document est étendu après le remplissage automatique, cela prenne en compte les lignes ajoutées.
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 ExcelToWord() ' Création des objets Word Dim WdApp As Word.Application Dim WdDoc As Word.Document 'ouvre la session Word Set WdApp = CreateObject("word.application") 'ouvre le doc (remplacer le chemin par un fichier word créé, mais vide) Set WdDoc = WdApp.Documents.Open("Z:\04-COMMUN\04-STAGE\2015\INFO\test.docx") WdApp.Visible = True 'copie de la feuille entière (document allant de la cellule A1 à AR246, mais je pense que ça peut être amené à être agrandi...) Range("A1", "AR246").Copy 'collage de la feuille sur word (Je n'ai pas réussi à trouver un autre moyen de coller sans que cela ne marche...) WdDoc.Range.Paste 'Enregistre et ferme le doc word WdDoc.Close True 'Laisse au system le temps d'enregistrer le fichier DoEvents 'ferme la session WdApp.Quit 'Je pense que ça supprime les deux objets Set WdApp = Nothing Set WdDoc = Nothing End Sub
L'idéal serait de conserver l'aperçu avant impression que j'obtiens sous Excel après avoir copié la feuille active sous Word, mais sur ce dernier point je n'ai rien trouvé.
Enfin, j'ai essayé d'utiliser le "pastespecial" avec des propriétés comme "transpose", mais je n'y arrive pas. Si jamais ce que je demande n'est pas possible, connaissez-vous un moyen de copier/coller proprement des mails sous Excel ?
Dans tous les cas, je vous remercie par avance et vous souhaite une très bonne après-midi,
StormH
PS : La mise en page sous Word est permis grâce au remplissage de très peu de cellule avec du texte ainsi que du copier/coller d'image reprenant le rendu que j'ai sur Word.
Partager