Bonjour,
J'ai besoin d'automatiser ma procédure mais je n'y arrive pas !!
Mon objectif est de changer la mise en page de plusieurs fichiers word via un fichier pré-formaté.
Je refais aujourd'hui la mise en page fichier par fichier via un code (voir ci-dessous). Mon but est de l'automatiser sur tous les fichiers existant dans le dossier.
Voici le code :
Sub mise_en_forme ()
Dim MonDoc As Document
Dim OFName As OPENFILENAME
OFName.lStructSize = Len(OFName)
OFName.lpstrFilter = "Fichiers WORD (*.doc)" + Chr$(0) + "*.doc"
OFName.lpstrFile = Space$(254)
OFName.nMaxFile = 255
OFName.lpstrFileTitle = Space$(254)
OFName.nMaxFileTitle = 255
OFName.lpstrInitialDir = C:Documents and SettingsCail14Mes documentsDiversMise en page entete" 'dossier où les fichiers à modifier sont présents
While MsgBox("Voulez-vous faire une mise en page ?" & vbCrLf & " " & vbCrLf & " Si oui, choisir le fichier à mettre en forme" & vbCrLf & " Si non, le fichier se fermera", vbYesNo, "Confirmation demande de mise en page") <> vbNo
If GetOpenFileName(OFName) Then
Set MonDoc = Documents.OpenC:Documents and SettingsCail14Mes documentsDiversMise en page enteteentete.doc") ' la ou il y a le fichier avec l'entête pré-formatée
MonDoc.Range(0, 0).InsertFile Trim(OFName.lpstrFile)
Application.Dialogs(wdDialogFileSaveAs).Show
MonDoc.Close
Else
MsgBox "Fin de mise en page !"
End If
Wend
Application.Quit
End sub
Option Explicit
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Merci d'avance pour votre aide