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 Word Discussion :

Copie stricte d'une page d'un document à un autre


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Copie stricte d'une page d'un document à un autre
    Bonjour à tous.

    Je souhaite copier une page entière d'un document word externe à la suite de de mon document actif.

    Concrètement, je veux que dans mon document actif, la page copiée soit identique à celle du fichier source, c'est-à-dire les mêmes en-têtes et pieds de pages ainsi que les divers paramètres de mise en page.

    J'arrive à copier le contenu de ma page source en faisant ceci:
    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
     
    Selection.EndKey wdStory
    Selection.InsertBreak (wdSectionBreakNextPage)
     
    Dim objWorddocConditions As Word.Application
    Dim docConditions As Word.Document
     
    Set objWorddocConditions = CreateObject("Word.Application")
    Set docConditions = objWorddocConditions.Documents.Open("C:\source.doc")
     
    objWorddocConditions.Visible = False
    objWorddocConditions.Selection.WholeStory
    Options.PasteFormatBetweenDocuments = wdKeepSourceFormatting
    Options.AutoFormatPreserveStyles = True
    Options.AutoFormatApplyBulletedLists = True
    objWorddocConditions.Selection.Copy
     
    Selection.PasteAndFormat wdPasteDefault
    Le problème, c'est que je retrouve le pied de page du document actif sur la nouvelle page. J'ai également d'autres soucis de mise en forme: j'ai une disposition du texte en trois colonnes qui n'est pas reprise, dans les listes les puces se transforment en numérotation, certains sauts de section continue se transforment en sauts de section avec un passage à la page suivante...

    Bref, y a-t-il un moyen d'ajouter à la suite de mon document une page strictement identique à celle du fichier source??

    Merci beaucoup.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Malheureusement, les pages ne sont pas des objets en Word.

    Elles dépendent de la mise en page, de l'imprimante, ...
    Et garantir une copie stricte n'est pas possible.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Alors ça c'est bien dommage!

    Et d'après toi quel serait la meilleure méthode pour arriver à mes fins?

    Même si pour l'instant je connais peu les divers objets Word, je pensais faire quelque chose du style:

    1. Dans de le document actif, bloquer la répétition des en-têtes/pieds-de-page pour les prochaines pages
    2. Dans de le document actif, appliquer les en-têtes/pieds-de-page du document sources aux prochaines pages.
    3. Copier le contenu du document source vers le document actif en prenant soin de garder la mise en forme du source.


    Concernant, les entêtes et pieds de page, pour l'instant, je ne sais pas comment faire. Et pour le contenu, comme je l'ai dit précédemment, le code que j'ai employé ne me donne pas satisfaction: la mise en forme des listes n'est pas conservée, pas plus que la disposition du texte en colonnes. Pourtant j'ai bien un saut de section à la fin du document actif, sensé "isoler" les styles et mises en pages des prochaines pages.
    Ou alors se peut-il que se soit une sorte de mise en forme automatique qui formate le texte lors du collage?

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour y parvenir, ajouter un signet au début de la page en cours et à la fin de cette même page.
    Mais pour la fin de la page, il faut aller à la page suivante et revenir d'un caractère.

    Ensuite, déterminer dans quelle section du document on se trouve et copier le contenu de l'entête et du pied de page.

    une discussion aborde déjà ce principe : http://www.developpez.net/forums/d52...egistrer-sous/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    D'accord. Merci beaucoup. J'ai été jeté un coup d'œil à ton lien.

    A la fin de la discussion, tu parlais de reprendre les infos de mise en page grâce à ActiveDocument.PageSetup

    J'ai donc essayé de faire une recopie des infos du document source vers le document de destination, pour chaque section ajoutée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For cpt = 1 To NbSectionsSourceDocument Step 1
       ActiveDocument.Sections(cpt + NbSectionsActiveDocument).PageSetup = objWorddocConditions.ActiveDocument.Sections(cpt).PageSetup
    Next
    Malheureusement, la macro plante à chaque fois sur cette instruction. Quand je dis planter, c'est carrément Word qui se ferme avec une erreur. Est-il au moins possible de faire une copie de PageSetup?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Dans la discussion, c'est l'idée de base qu'il faut exploiter, le but était de ne sauvegarder qu'une seule page.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bon j'ai quasiment réussi à faire cette recopie de page.

    La mise en page est bien reprise ainsi que les en-têtes/pieds-de-page. Les problèmes de style que j'avais lors de la copie étaient dû à des conflits de style.

    Mais il reste un souci.
    Ma d'origine est composée ainsi: une section comportant deux lignes de titres, puis une autre section comprenant des paragraphes qui sont disposés sur 3 colonnes. La séparation est faite par saut de section continu.

    Or une fois la recopie effectuée, ce brave saut de section(continue) se transforme en saut de section(page suivante)! Du coup sur mon document final, j'ai mes 2 lignes de titres, et sur la page suivante mon texte sur 3 colonnes!

    Si tu as idée je suis preneur parce que là, après des heures d'acharnement sans résultat, je crois que je suis sur le point de me défenestrer.

    Au pire de cas, je vais essayer de supprimer le saut de section du document source, et de stocker mes paragraphes dans un tableau plutôt que de passer par des colonnes...

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ce que tu souhaites est complexe, il faut tout prendre en compte.
    Les sauts de section pour le réutiliser.
    Pour les entêtes et pieds de page, il faut déterminer de quels types ils sont.
    Il en existe quatre sortes, Première page, "Normaux, Page gauche ou page droite et ce en fonction des choix de l'utilisateur.

    Pareil pour les sauts de section, il en existe plus d'une sorte.
    Et pour chaque particularité, il faut faire une gestion particulière.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Enfin!!

    Comme je l'ai dit prcédemment, j'ai viré la mise en page en trois colonnes ainsi que le saut de section du document source, et je l'ai remplacé par un tableau.

    Et là, ça fonctionne beaucoup mieux.

    Tu as raison, c'est peut-être trop complexe de vouloir à tout prix gérer correctement les headers/footers et les sections.

    En tout cas merci encore pour ton soutien.

    Ciao.

Discussions similaires

  1. Effacer une page dans un document word 2007
    Par petit rabot dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/11/2011, 12h26
  2. Comment envoyer un id à une page avec parent.document.getElementById ?
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/08/2009, 10h28
  3. Créer une page bibliothèque de document par le code
    Par lightbulb dans le forum SharePoint
    Réponses: 3
    Dernier message: 11/02/2009, 14h58
  4. [FPDF] Supprimer une page d'un document PDF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 23/03/2008, 20h22
  5. [C#] Transformer une Page HTML en document Word
    Par bolo dans le forum ASP.NET
    Réponses: 13
    Dernier message: 07/11/2005, 17h28

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