Sub CompleterWordDepuisExcel()
' Choix nom du dossier d'enregistrement '
DossierNom = Application.InputBox("Word", "Word", "Nom du dossier WORD ?", Type:=2)
DossierSauvegard = "C:\" & DossierNom & "\"
' Test si le DossierSauvegard est bien existant
' * Dans le cas ou il n'existe pas le créer.
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FolderExists(DossierSauvegard) Then
MsgBox "le repertoire existe donc rien a faire"
Else
MsgBox "le repertoire n'existe pas donc on le créer"
fs.CreateFolder DossierSauvegard
End If
Set fs = Nothing
' Test Ouverture Application Word, si pas déjà Ouvert.
On Error Resume Next
Dim WordApp As Word.Application
Set WordApp = GetObject(, "Word.Application")
If Err <> 0 Then
Err.Clear
Set WordApp = CreateObject("Word.Application")
End If
WordApp.Visible = True 'affiche le document Word
' Documents Word Modéle
Dim WordDoc As Word.Document
Set WordDoc = WordApp.Documents("C:\Dossier\BL vierge version 12.docm")
On Error GoTo 0
' Si le Documents Word Modéle est fermé l'Ouvrir.
If WordDoc Is Nothing Then
MsgBox "Le document est fermé / Ouvrir le document"
Set WordDoc = WordApp.Documents.Open("C:\Dossier\BL vierge version 12.docm")
End If
' Remplir le Document Modéle.
' Comment insérer du texte dans un signet.
' Remplit le signet SignetOrigine avec le texte "LeMot" sans détruire SignetOrigine
' Exemple ci-dessous (Choisir les bonnes Référence excel pour LeMot
Dim signet(1 To 10) As Word.Bookmark, LeMot(1 To 8) As String, i As Integer
Dim F As Worksheet
Set F = Worksheets("ven.-1-oct")
For i = 4 To F.Cells(65536, 2).End(xlUp).Row - 1
If F.Cells(i, 1) = "Editer" Then
' Word
Set signet(1) = WordDoc.Bookmarks("Texte1") '[Nom] : nom du signet
Set signet(2) = WordDoc.Bookmarks("Texte2") '[Prénom] : nom du signet
Set signet(3) = WordDoc.Bookmarks("Texte3") '[Adresse] : nom du signet
Set signet(4) = WordDoc.Bookmarks("Texte4") '[Ville] : nom du signet
Set signet(5) = WordDoc.Bookmarks("Texte5") '[CP] : nom du signet
Set signet(6) = WordDoc.Bookmarks("Texte6") '[Tel] : nom du signet
Set signet(7) = WordDoc.Bookmarks("Texte15") '[Qte Citerne] : nom du signet
Set signet(8) = WordDoc.Bookmarks("CaseACocher1") '[Modèle Citerne 600L] : nom du signet
Set signet(9) = WordDoc.Bookmarks("CaseACocher2") '[Modèle Citerne 650L] : nom du signet
Set signet(10) = WordDoc.Bookmarks("CaseACocher3") '[Modèle Citerne 750L] : nom du signet
' Excel
LeMot(1) = F.Range(Cells(i, 3), Cells(i, 3)).Value
LeMot(2) = F.Range(Cells(i, 4), Cells(i, 4)).Value
LeMot(3) = F.Range(Cells(i, 5), Cells(i, 5)).Value
LeMot(4) = F.Range(Cells(i, 6), Cells(i, 6)).Value
LeMot(5) = F.Range(Cells(i, 7), Cells(i, 7)).Value
LeMot(6) = F.Range(Cells(i, 8), Cells(i, 8)).Value
LeMot(7) = F.Range(Cells(i, 2), Cells(i, 2)).Value
LeMot(8) = F.Range(Cells(i, 14), Cells(i, 14)).Value
' Remplir le document Word modele.
Dim Place As Long, SignetOrigine As String
For j = LBound(LeMot) To UBound(LeMot)
' Quantité Citerne
If j = 7 Then
WordDoc.FormFields("Texte15").Result = LeMot(j)
' Modele citerne case a cocher
ElseIf j = 8 Then
Select Case LeMot(j)
Case "600"
WordDoc.FormFields("CaseACocher1").CheckBox.Value = True
Case "650"
WordDoc.FormFields("CaseACocher2").CheckBox.Value = True
Case "750"
WordDoc.FormFields("CaseACocher3").CheckBox.Value = True
End Select
Else
' Depart du signet
Place = signet(j).Range.Start
' Nom du signet d'Origine
SignetOrigine = signet(j).Name
' Substitue par le Mot (qui remplace le signet)
signet(j).Range.Text = LeMot(j)
' Options \ Options Avancées \ Affichér les signets [...]
' Ne pas perdre le Signet d'origine [...] et sa mise en forme entre crochet
WordDoc.Bookmarks.Add Name:=SignetOrigine, Range:=WordDoc.Range(Place, Place + Len(LeMot(j)))
End If
Next j
' Enregistrer le document sous (Exemple : LeMot(1) & "-" & LeMot(2))
Dim fichier As String
fichier = "DocumentWordFichier " & LeMot(1) & "-" & LeMot(2) & ".doc"
WordDoc.SaveAs2 DossierSauvegard & fichier
' Suppression des CheckBox et Formtext
WordDoc.FormFields("Texte15").Result = ""
WordDoc.FormFields("CaseACocher1").CheckBox.Value = False
WordDoc.FormFields("CaseACocher2").CheckBox.Value = False
WordDoc.FormFields("CaseACocher3").CheckBox.Value = False
' Les Signets sont recaculer pas besoin de suppression
[Nota]
End If
Next i
' Fermer les derniers documents Word
WordDoc.Close
End Sub