1/ Quand on crée un nouveau document vierge on se retrouve avec des styles différents du document initial et donc les copie de page n'ont pas le même rendu. J'ai résolu ce premier point en sauvegardant le document source comme un nouveau document puis en le vidant
2/ Quand on copie une sélection de pages, on se retrouve avec un saut de page en trop, sauf pour le dernier document.
Voici quelques bouts de code permettant d'y arriver :
Code : Tout sélectionner
wd est un objet OLE "Word.Application"
range est un objet Automation dynamique
// Ouvrir Word en mode invisible
wd>>Visible = OLEFaux
// ouvrir un document et se positionner
wd>>Documents>>Open(sFichier)
wd>>Browser>>Target(1)
// Enregistrer le document maître (pour conserver styles)
wd>>Application>>ChangeFileOpenDirectory(ComplèteRep(SAI_Rep_Sortie))
wd>>ActiveDocument>>SaveAs2(sNom,16)
// Effacer tout le contenu
wd>>Selection>>WholeStory
wd>>Selection>>Delete(1,1)
// Sélectionner le texte de telle page à telle page
wd>>Selection>>GoTo(1,1,nPageDebut)
range = wd>>Selection>>Range()
wd>>Selection>>GoTo(1,1,nPageFin)
range>>End = wd>>Selection>>Bookmarks("\Page")>>Range>>End
range>>Select
// Copier la sélection
wd>>Selection>>Copy()
// Repasser sur un autre document
wd>>Documents(sNom)>>Activate
// Coller le presse papier
wd>>Selection>>Paste()
// Supprimer la dernière page d'un document
wd>>Selection>>GoTo(1,1,SAI_NBrePage + 1)
range = wd>>Selection>>Range
wd>>Selection>>GoTo(1,1,SAI_NBrePage + 1)
range>>End = wd>>Selection>>Bookmarks("\Page")>>Range>>End
range>>Delete
wd>>Selection>>TypeBackspace
wd>>Selection>>TypeBackspace
// Sauvegarder un document (16 = format DocX)
wd>>Application>>ChangeFileOpenDirectory(ComplèteRep(SAI_Rep_Sortie))
wd>>ActiveDocument>>SaveAs2(sNom,16)
// Fermer le document créé
wd>>ActiveWindow>>Close(Vrai)
// important car l'objet range a été créé dynamiquement
// il faut libérer la mémoire manuellement
libérer range
// fermer et quitter
wd>>ActiveDocument>>close(OLEFaux)
wd>>Quit()