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
Partager