VBA - automatisation courriers - problème signets

Bonjour,

Je suis nouveau sur le forum et je sollicite votre aide. Je débute en VBA et je cherche à automatiser une partie de la production de courriers administratifs de l'association pour laquelle je travaille. L'objectif est de faire le lien entre un fichier Excel, dans lequel j'ai les données dont j'ai besoin, et différents modèles Word où elles seront insérées.

Tout fonctionne correctement, jusqu'au moment d'insérer des données dans un fichier Word à l'emplacement de mes signets. J'ai essayé différents codes récupérés sur le net, mais aucun ne fonctionne (voir point 3 ci-dessous).

Je sèche... Est-ce que quelqu'un aurait une idée pour m'aider?

Merci d'avance de votre aide!

Sub Bouton_courrier_AI()

'Get Selected Client Id
selected_id = Worksheets("Macros").Range("D4").Value
Debug.Print selected_id

'Produce Document
Call Créer_Courrier_AI(selected_id)
End Sub

Sub Créer_Courrier_AI(id)

'PRELIMINAIRES
'Déclarer le timer
Dim dStart As Currency
dStart = Timer

'Désactive l'affichage : évite les scintillements d'écran
Application.ScreenUpdating = False

'1) Récupérer les données de la personne concernée

Dim ClientData As Range
Set ClientData = GetClientInfo(id)

client_prenom = ClientData.Cells(5).Value
Debug.Print client_prenom
client_nom = ClientData.Cells(4).Value
Debug.Print client_nom
client_AVS = ClientData.Cells(7).Value
Debug.Print client_AVS

'2) Créer le doc dans lequel on va insérer les données, à partir d'un modèle
'Ouvrir le modèle et créer un document
Set appWrd = CreateObject("Word.Application")
appWrd.Visible = True
Set DocWord = appWrd.Documents.Add(Template:="K:\10-SG\12-Projets\Macros\Modèles Word\RH\AI.dotx", NewTemplate:=False, DocumentType:=0)

'enregistrer mon document dans le dossier "output" en le renommant
DocWord.SaveAs Filename:="K:\10-SG\12-Projets\Macros\Output\" & Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd") & "_" & ClientData.Cells(4).Value & " " & ClientData.Cells(5).Value & "_Courrier_AI" & ".docx"
MonCourrier = DocWord

'3) Insérer les données aux emplacements des signets

'wordDoc.Bookmarks("AVS").Range.Text = ClientData.Cells(7).Value

'wordDoc.Bookmarks("Signet1").Range.Text = Sheets("Data Owners").Cells(i, 1)

wordApp.ActiveDocument.Goto What:=wdGoToBookmark, Name:="AVS"
wordDoc.Bookmarks("AVS").Range.Text = ClientData.Cells(7).Value

'wrdApp.Windows(MonCourrier).Activate
' wordDoc.Bookmarks("AVS").Range.Text = ClientData.Cells(7).Value

'ACTIVITES DE FIN DE MACRO

'Quitter Word
DocWord.Save
DocWord.Close
appWrd.Quit

'Réactiver l'affichage d'Excel
Application.ScreenUpdating = True

'Affiche la feuille "Macros"
Sheets("Macros").Activate

'MsbBox qui affiche le temps d'exécution de la macro
MsgBox "Félicitation, votre courrier a été écrit en : " & Timer - dStart & " secondes. Il est disponible dans le dossier Output."

End Sub

Function GetClientInfo(my_id) As Range

' Range initialization
Worksheets("Données").Select
Set ClientRange = Worksheets("Données").Range("A2:BC600")

'Loop
Dim myRange As Range
Set myRange = Worksheets("Données").Range("A1:BC1")

For Each Row In ClientRange.Rows
If (my_id = Row.Cells(4).Value) Then
Set myRange = Row

End If
Next Row

Set GetClientInfo = myRange

End Function

J'ai trouvé: ça fonctionne avec le code suivant: DocWord.Bookmarks("Rue").Range.Text = client_rue

Bonjour Mik et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum.

Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)

La prochaine fois, pensez à mettre le code donné entre balises grâce au bouton </>

Merci de votre participation

Cordialement

Rechercher des sujets similaires à "vba automatisation courriers probleme signets"