3xceln4ute
XLDnaute Occasionnel
Bonjour,
Je désire automatiser la création de lettre en remplaçant les balises dans le modèle Word par les données correspondantes dans le tableau Excel.
La macro devra s'appliquer à chaque ligne cochée.
J'ai avec la macro ci-dessous, mais malheureusement, le test est infructueux. Je vois le modèle Word s'ouvrir furtivement, mais rien ne se passe.
Auriez-vous une idée sur ce qui ne tourne pas rond ?
En passant, je vous souhaite, à toutes et à tous, une bonne et heureuse année.
Cordialement.
Je désire automatiser la création de lettre en remplaçant les balises dans le modèle Word par les données correspondantes dans le tableau Excel.
La macro devra s'appliquer à chaque ligne cochée.
J'ai avec la macro ci-dessous, mais malheureusement, le test est infructueux. Je vois le modèle Word s'ouvrir furtivement, mais rien ne se passe.
VB:
Sub LettresMaldie0()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Suivi Bnq maladie 0") ' Nom de la feuille
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True ' Pour voir le processus
wdApp.Activate
Dim wdDoc As Object
Dim i As Long
Dim dateText As String
dateText = ws.Range("B7").Value ' Utilisation de .Value
For i = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If ws.Cells(i, 1).Value = True Then ' Cases à cocher
On Error Resume Next ' Ajoutez cette ligne pour gérer les erreurs
Set wdDoc = wdApp.Documents.Open("C:\Users\ub\Downloads\Gestion disciplinaire 2024\Test Bnq maladie 0\Modèle_Banque de maladie 0.docx", ReadOnly:=False)
If wdDoc Is Nothing Then
MsgBox "Impossible d'ouvrir le document Word. Chemin : C:\Users\ub\Downloads\Gestion disciplinaire 2024\Test Bnq maladie 0\Modèle_Banque de maladie 0.docx"
Exit Sub ' Quitte la macro si le document ne peut pas être ouvert
End If
On Error GoTo 0 ' Reset le gestionnaire d'erreur
' Recherche et remplacement des balises
ReplaceWordContent wdDoc, "[NOM]", ws.Cells(i, 2).Value
ReplaceWordContent wdDoc, "[MATRICULE]", ws.Cells(i, 3).Value
ReplaceWordContent wdDoc, "[DATE]", dateText
' Enregistrement et fermeture
Dim savePath As String
savePath = "C:\Users\ub\Downloads\Gestion disciplinaire 2024\Test Bnq maladie 0" & ws.Cells(i, 2).Value & ".docx"
wdDoc.SaveAs2 savePath
wdDoc.Close False
' Décocher la case et écrire la date et l'heure de génération
ws.Cells(i, 1).Value = False
ws.Cells(i, 7).Value = "Généré le " & Date & " à " & Time
End If
Next i
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
' Fonction pour remplacer le contenu dans Word
Private Sub ReplaceWordContent(doc As Object, findText As String, replaceText As String)
With doc.Content.Find
.Text = findText
.Replacement.Text = replaceText
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
End Sub
Auriez-vous une idée sur ce qui ne tourne pas rond ?
En passant, je vous souhaite, à toutes et à tous, une bonne et heureuse année.
Cordialement.