Macro VBA - Word (Copie d'un texte word d'une page à une autre)

Bonjour à tous,

Je suis actuellement en train de découvrir les macro VBA Word, et je voudrais pouvoir copier le texte d'un word pour le copier dans un autre document word créé à cet effet.
La macro s'effectue sous Excel (Le code est principalement sur excel, sauf cette partie)
Mes référence Office 16 sont bien activées.

'Je défini mes variables utilisées

Set MonWord = GetObject("C:\Users\User\Desktop\Macro\DocPresentationFinale.docx")
Set DocumentFinal = CreateObject("Word.Application")
DocumentFinal.Documents.add

DocumentFinal.Application.Visible = True
MonWord.Application.Visible = True

Call RemplirSignet("NomEnt", Tableau.Worksheets(1).Range("NOMUN").Offset(ComptDoc, 0), MonWord) ' La sub remplir signet permet d'éviter qu'il s'efface afin de pouvoir les réutiliser.

Tout roule jusque là, mais je bloque à partir de ce moment, l'instruction MonWord.Select sélectionne bien l'ensemble de mon texte (Mais je pense qu'il sélectionne plutôt l'ensemble de mon object), et impossible d'utiliser la méthode Copy ensuite.
J'ai essayer de déclarer des documents afin de les sélectionner, mais cela fut également un echec.

MonWord.Select
MonWord.Copy

Une solution serait la bienvenue !

Merci et bonne soirée.

Bonjour,

Si tu enregistres ton fichier source en tant que modèle, tu ne devrais pas avoir de problème.

Tu n'ouvrirais ainsi qu'une copie de ton fichier, et tu pourrais l'enregistrer comme tu veux, sans toucher à ton original et sans avoir à faire de copie ?

Bonjour,

Oui effectivement cela serait plus facile, mais juste avant ce code il y a une boucle qui :

-Vérifie le nombre de fichier apporté
- Pour chaque fichier écris un commentaire word

Ainsi la macro récupère le template, le remplis (Avec les signets) puis copie le tout dans un autre document word, ferme le template sans l'enregistrer et le ré-utilise.
Réalise un deuxième tours et copie le nouveau commentaire en dessous du précédant et ainsi de suite.

-----------------------------------------------------

Je peux effectuer une selection et une copie du texte de DocumentFinal, mais pas de MonWord...
Le GetObject le défini bien comme géré par l'application word ? Je pense que j'ai un problème d'object avec MonWord, mais je n'arrive pas à voir de solution

Bonsoir,

1- je ne vois pas l'intérêt de créer une 2ème instance de l'application Word

2- l'instruction Select est inutile

ci-dessous exemple de code :

    Set Monword = GetObject("C:\Users\User\Desktop\Macro\DocPresentationFinale.docx")
    Set Appword = Monword.Application: Appword.Visible = True
    Set DocumentFinal = Appword.documents.Add

    '...................................................

    Monword.Content.Copy
    DocumentFinal.Content.Paste

    DocumentFinal.SaveAs2 ("C:\Users\User\Desktop\Macro\DocPresentationFinale1.docx")

    Appword.Quit

NB : pensez à utiliser les balises </> pour insérer du code

Merci de ta réponse,

La ligne suivante permet de définir Appword comme une application word. Tandis que Monword n'a pas d'application défini,d'où les erreurs quand j'essai d'accéder au méthodes de word, c'est bien ça ?

Set Appword = Monword.Application

je pense que c'était la petite ligne qu'il me manquait !

je test tout ça demain! Encore merci

Bonjour,

Set Monword = GetObject("C:\Users\User\Desktop\Macro\DocPresentationFinale.docx")

Cette instruction crée une instance de l'application Word avec le document : "DocPresentationFinale.docx" ouvert.

Celle-ci ne crée pas l'instance mais permet de faire référence à celle qui a été créée par la précédente instruction

Set Appword = Monword.Application

Les instances d'application sont affichées dans le gestionnaire des tâches, celles non visibles dans les processus d’arrière-plan
(instance = stockage en mémoire d'emplacements personnalisés pour les éléments des bibliothèques Excel, Word, Outlook)

Merci pour cette explication !

Bonne soirée à vous

Bonsoir, je me permets de vous relancer sur ce sujet car lorsque j'effectue ce code cela copie bien d'une feuille à l'autre, mais si je veux boucler dessus alors cela écrase à chaque fois les informations précédentes.

 Monword.Content.Copy
    DocumentFinal.Content.Paste

Quel pourrait être le code afin d'avoir :

- 1)Le contenue de ma page 1 copier dans ma page 2
- 2) La fermeture de ma page 1
****-Code qui remplis de nouveau ma page 1****
3) Coller à la suite les nouvelles informations de ma page 1 à la suite de ma page2 sans écraser les informations déjà existante.

Et ainsi de suite.

Merci beaucoup de votre aide et bonne soirée.

Bonjour,

On ne sait pas trop ce que vous voulez faire. En tout cas, pour ne pas écraser ce qui a déjà été collé, vous pouvez utiliser ces instructions :

    Set plage_doc = DocumentFinal.Content
    plage_doc.Start = Len(plage_doc.Text)
    plage_doc.Paste

De nouveau merci de votre réponse, et bonne soirée.

Rechercher des sujets similaires à "macro vba word copie texte page"