Pour bien comprendre, voyez à ce sujet l'article qui explique la différence entre la mise en page et la mise en forme.
Sachant qu'une mise en page est contenue dans un saut de section et qu'il peut y avoir plusieurs sauts de section, et donc plusieurs mises en pages, dans un même document, il n'est pas aussi simple de récupérer une mise en page qu'une mise en forme.
Il y a cependant plusieurs approches.
La première solution est de créer un nouveau document à partir du modèle, et de copier-coller le document à modifier à l'intérieur de ce nouveau document. C'est la solution la plus fiable pour obtenir la mise en page du modèle.
S'il s'agit de récupérer le format papier, les marges, l'emplacement des en-têtes/pieds de page, on peut utiliser la macro suivante qui va récupérer la mise en page du modèle attaché. Cette macro créée un nouveau document sur la base du document attaché au document en cours, récupère les attributs de base de la mise en page du modèle attaché et les applique au document qui vous intéresse. Elle ferme ensuite ce nouveau document qui ne sert plus à rien. J'ai préféré créé un nouveau document plutôt que d'ouvrir le modèle, c'est moins risqué.
Attention de n'utiliser cette macro que si le modèle en question n'a qu'une seule section, sinon vous aurez droit à des erreurs.
S'il s'agit d'un exercice souvent utilisé, cette macro sera plus rapide que le copier-coller dans un nouveau document.
Sub mep()
'macro écrite par m@rina
Dim modele As String
Dim mondoc As Document
Set mondoc = ActiveDocument
modele = ActiveDocument.AttachedTemplate.FullName
Documents.Add Template:=modele
With mondoc.PageSetup
.Orientation = ActiveDocument.PageSetup.Orientation
.TopMargin = ActiveDocument.PageSetup.TopMargin
.BottomMargin = ActiveDocument.PageSetup.BottomMargin
.LeftMargin = ActiveDocument.PageSetup.LeftMargin
.RightMargin = ActiveDocument.PageSetup.RightMargin
.Gutter = ActiveDocument.PageSetup.Gutter
.HeaderDistance = ActiveDocument.PageSetup.HeaderDistance
.FooterDistance = ActiveDocument.PageSetup.FooterDistance
.PageWidth = ActiveDocument.PageSetup.PageWidth
.PageHeight = ActiveDocument.PageSetup.PageHeight
.DifferentFirstPageHeaderFooter = ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter
End With
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End Sub
S'il s'agit de récupérer la mise en page d'un modèle quelconque, donc non attaché au document en question, voici la macro :
Sub mep()
'macro écrite par m@rina
Application.ScreenUpdating = False
Dim fd As FileDialog
Dim modele As String
Dim mondoc As Document
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "Sélectionner le modèle dont vous souhaitez récupérer la mise en page"
fd.AllowMultiSelect = False
fd.Filters.Add "Documents", "*.dotx; *.dotm", 1
If fd.Show <> -1 Then Exit Sub
modele = fd.SelectedItems.Item(1)
If MsgBox("le modèle est le suivant " & modele & " - Continuer ?", vbYesNo) = vbNo Then Exit Sub
Set mondoc = ActiveDocument
Documents.Add Template:=modele
With mondoc.PageSetup
.Orientation = ActiveDocument.PageSetup.Orientation
.TopMargin = ActiveDocument.PageSetup.TopMargin
.BottomMargin = ActiveDocument.PageSetup.BottomMargin
.LeftMargin = ActiveDocument.PageSetup.LeftMargin
.RightMargin = ActiveDocument.PageSetup.RightMargin
.Gutter = ActiveDocument.PageSetup.Gutter
.HeaderDistance = ActiveDocument.PageSetup.HeaderDistance
.FooterDistance = ActiveDocument.PageSetup.FooterDistance
.PageWidth = ActiveDocument.PageSetup.PageWidth
.PageHeight = ActiveDocument.PageSetup.PageHeight
.DifferentFirstPageHeaderFooter = ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter
End With
Set mondoc = Nothing
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
Application.ScreenRefresh
ScreenUpdating = True
End Sub
Puisque la mise en page est intégrée à la section, on peut aussi simplement copier et coller un saut de section. Si le modèle ne contient qu'une seule section, on peut insérer un saut de section (qu'on supprimera ensuite) afin de pouvoir le copier et le coller dans le document qui vous intéresse. Cela va générer une nouvelle page. Si vous supprimez le saut de section, vous risquez de perdre la mise en page. Si vous perdez la mise en page, essayez plutôt la méthode suivante :
- Cliquez dans la seconde section.
- Affichez la boîte de dialogue Mise en page (double clic sur la règle verticale).
- Cliquez sur OK.
- Cliquez dans la première section.
- Appuyez sur Ctrl+y.
Cette solution fonctionne très bien avec un petit document, mais beaucoup moins bien avec un document long et plus élaboré.
Concernant les en-têtes et pieds de page, la meilleure solution pour les appliquer est d'en faire des blocs de construction afin de les utiliser où bon vous semble. Voyez cet article.