Salut je suis débutant en VBA, je souhaite faire un prog vba qui me permete de générer automatiquement des lettres personalisées suivant un modèle word...

Pour cela j'ai un excel dans lequel j'ai mis un tableau avec en titre de colonnes les mots à rechercher et a remplacer comme &nom, &prénom, &adresse, puis dans chaque lignes les mots personalisé comme Durand, pierre, 47 rue de la paix

j'ai donc écrit cette macro mais elle plante sur
"ActiveWindow.View.ShowFieldCodes = True" et dit
"qualificateur incorrect" en surlignant view


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Sub Bouton1_QuandClic()
'
' Bouton1_QuandClic Macro
' Macro enregistrée le 18/05/2006 par Jérôme JEAN-MARAULT
'
' Touche de raccourci du clavier: Ctrl+n
'
'
'Déclaration des vartiables
Dim col, lig As Integer
Dim Nomfichier As String
Dim Path As String
Dim texte1, texte2 As String
Dim MonDocument
Dim MonRepertoire
Dim NbDocuments As Integer
 
Path = ActiveWorkbook.Path + "\"
MonRepertoire = Path + "\Résultat\"
'Attention sous NT, il faut rajouter ces lignes qui comptent les fichiers sinon on ouvre et transforme en boucle :
MonDocument = Dir(MonRepertoire & "*.doc")
While MonDocument <> ""
  NbDocuments = NbDocuments + 1
  MonDocument = Dir
Wend
  'génération des fichiers copies de modèle
  For lig = 1 To ActiveSheet.Range("B5") Step 1    ' Boucle des lignes.
     FileCopy Path + "\Modele.doc", Path + "\Résultat\R_" + CStr(lig) + ".doc"
  Next lig
  'remplacement des mots
  For col = 1 To ActiveSheet.Range("B5") Step 1    ' Boucle des lignes.
     i = 1
     MonDocument = Dir(MonRepertoire & "*.doc")
     While MonDocument <> "" And i <= NbDocuments  'boucle des documents
       i = i + 1
       Documents.Open (MonRepertoire & "" & MonDocument)
       ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
       For lig = 1 To ActiveSheet.Range("A5") Step 1    ' Boucle des colonnes.
         texte1 = ActiveSheet.Cells(20, col)
         texte2 = ActiveSheet.Cells(lig + 20, col)
         Selection.Find.ClearFormatting
         Selection.Find.Replacement.ClearFormatting
         Set myRange = ActiveDocument.Content
         With myRange.Find
           .ClearFormatting
           .Replacement.ClearFormatting
           .Text = texte1
           .Replacement.Text = texte2
           .Execute Replace:=wdReplaceAll ' peut être la raison
         End With
         Selection.Fields.Update
       Next lig
       Documents(1).Close wdSaveChanges
       MonDocument = Dir
       MonDocument = Dir
     Wend
  Next col
End Sub