1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
Sub CopierEtMettreAJourLesFichiersWord()
Dim Feuille_Source As Worksheet
Dim AireSource As Range
Dim J As Long, PremiereLigne As Long, DerniereLigne As Long
'Dim WordApp As Word.Application, WordDoc As Word.Document ' En early binding, cocher la référence Microsoft Word
Dim WordApp As Object, WordDoc As Object ' En late binding, sans cocher la référence.
Dim Repertoire As String, NomDoc As String
Dim HeureDebut, HeureFin, TempsTotal
On Error GoTo Fin
Application.ScreenUpdating = False
HeureDebut = Timer
Repertoire = ActiveWorkbook.Path & "\" ' A adapter
Set Feuille_Source = Worksheets("Données")
With Feuille_Source
PremiereLigne = 2
DerniereLigne = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
Set AireSource = .Range(.Cells(PremiereLigne, "A"), .Cells(DerniereLigne, "A"))
End With
Set WordApp = CreateObject("word.Application")
With WordApp
.Visible = True
For J = 1 To AireSource.Count
NomDoc = Repertoire & AireSource(J) & ".doc" ' Extension à adapter éventuellement
If ExistenceFichier(NomDoc) = True Then
Set WordDoc = WordApp.Documents.Open(NomDoc)
With WordDoc.Range
.MoveStart unit:=6 'wdStory
.Select
End With
RemplacementDansLeRange WordApp.Selection, AireSource(J).Value, AireSource(J).Offset(0, 1).Value
WordDoc.Sections(1).Headers(1).Range.Select ' Headers(1) : 1 à adapter selon le type d'entête.
RemplacementDansLeRange WordApp.Selection, AireSource(J).Value, AireSource(J).Offset(0, 1).Value
WordDoc.SaveAs Filename:=Repertoire & AireSource(J).Offset(0, 1).Value
WordApp.ActiveDocument.Close
Set WordDoc = Nothing
End If
Next J
End With
Application.ScreenUpdating = True
HeureFin = Timer
TempsTotal = HeureFin - HeureDebut
MsgBox "Temps total du traitement : " & Round(TempsTotal, 0) & " seconde(s)", vbInformation, "Copie et mise à jour des fichiers Word"
GoTo Fin
Fin:
Application.ScreenUpdating = True
WordApp.Quit
Set WordApp = Nothing: Set WordDoc = Nothing
Set Feuille_Source = Nothing
End Sub
Sub RemplacementDansLeRange(ByVal SelectionEnCours As Object, ByVal ValeurATrouver As String, ByVal ValeurDeRemplacement As String)
With SelectionEnCours
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
With .Find
.Text = ValeurATrouver
.Replacement.Text = ValeurDeRemplacement
.Forward = True
.Wrap = 1 ' wdFindContinue
End With
.Find.Execute Replace:=2 'wdReplaceAll
End With
End Sub
Function ExistenceFichier(ByVal NomDuFichier As String) As Boolean
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
ExistenceFichier = Fso.FileExists(NomDuFichier)
Set Fso = Nothing
End Function |
Partager