Découper un fichier word en plusieurs fichiers via une macro - VB/VBA/VBS - Programmation
Marsh Posté le 27-01-2009 à 10:00:17
Je suppose que ton "document.add" se base sur ton normal.dot... et du coup, il prend les paramètres par défaut de ce doc, et non pas les paramétrages du document sur lequel tu es...
Je pense qu'il faudrait que tu arrives en fait à créer un nouveau document en se basant sur les formats sur ton document actuel (ou copie de ton document + suppression de tout ce qu'il contient par exemple - attention à avoir des copies de sauvegarde hein quand même... et de pas copier les macros avec non plus)
Marsh Posté le 27-01-2009 à 09:49:04
Bonjour,
Je vous explique mon problème: On m'a confié plusieurs .doc assez de tailles importantes (plus de 50 pages) afin que je les restitue en autant de fichiers .doc qu'il existe de pages dans ces fichiers. En gros avec un fichier .doc de 50 pages, je dois me retrouver avec 50 .doc.
N'y connaissant rien en programmation Vba j'ai donc demandé à mon ami Mr Google de l'aide et je me suis gentiment retrouvé chez vous ou j'ai trouvé ce sujet déja traité dans ce message: http://forum.hardware.fr/hfr/Progr [...] 4620_1.htm
J'ai donc récupéré cette macro:
Option Explicit
Sub DecoupagePageParPage()
Dim NomDocDepart As String
Dim i As Long
Dim Dossier As String, DossierSauvegarde As String
Dim NumDoc As Long, NbPages As Long
NomDocDepart = ActiveDocument.Name
Dossier = ActiveDocument.Path
DossierSauvegarde = Dossier & Application.PathSeparator & "Charcuterie"
VerifDossier (DossierSauvegarde)
Application.ScreenUpdating = False
Application.Browser.Target = wdBrowsePage
NbPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
ChangeFileOpenDirectory DossierSauvegarde
For i = 1 To NbPages
ActiveDocument.Bookmarks("\page" ).Range.Copy
Documents.Add
Selection.Paste
NumDoc = NumDoc + 1
ActiveDocument.SaveAs FileName:=Left(NomDocDepart, Len(NomDocDepart) - 4) + _
"_" + CStr(NumDoc) + ".doc", FileFormat:=wdFormatDocument
ActiveDocument.Close
Application.Browser.Next
Next i
Application.ScreenUpdating = True
'ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub
Sub VerifDossier(ByVal DossierSauvegarde As String)
On Error GoTo erreur
ChDir DossierSauvegarde
Exit Sub
erreur:
If Err.Number = 76 Then
MkDir (DossierSauvegarde)
Resume Next
End If
End Sub
Le découpage marche très bien dans le sens ou je me retrouve bien avec 50 fichiers, mais mon problème est dans la mise en page de ses fichiers.
Chaque page de chaque fichier crée s'étale désormais sur 3 pages (avec une police différente et des sauts de ligne en plus), là ou dans le fichier de départ ils tenaient tous sur une page.
Ma question est donc : Y'a t-il un moyen de modifier cette macro pour qu'elle me restitue mes fichiers en gardant exactement la même mise en forme?
Cordialement,
Le newbie de la Prog
Merci ;-)