Bonjour le forum,
Je cherche de l'aide pour faire fonctionner une macro qui permet, à partir d'une base Excel, d'éditer des courriers Word, en complétant des signets.
J'ai récupéré une macro que j'avais déjà utilisée par le passé. Mais, j'ai des problèmes de variables non définies et le code ne s'exécute pas.
Voici ce code :
En fonction de la valeur de la cellule U2, un courrier différent est édité et les signets sont complétés.
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 Option Explicit Public Const CheminFichiersWord As String = "G:\ABC\DEF\GHI\JKL\MNO\" Public Const LigneDeTitre As Long = 3 Public Ligne As Long Public I As Long Public Reponse As Long Public ColDateEtablissement As Long Public ColType As Long Public ColLocalisation As Long Public ColAdresse As Long Public ColCodePostal As Long Public ColVille As Long Public ColNom As Long Public ColPrenom As Long Public ColIdentificationSansCle As Long Public ColCleIdentifiantAss As Long Public ColCleIdentifiantPs As Long Public ColTypeOpposition As Long Public ColEtape As Long Public ColReferenceTraitement As Long Public ColTraitementPar As Long Public ColTraitementNom As Long Public ColImpression As Long Public ShDonnees As Worksheet Public Continuer As Boolean Public wApp As Object Public oDoc As Object Public Completude As String Public MessagePresenceColonnes As String Sub LancerLEdition() Reponse = MsgBox("Vous allez imprimer le courrier. Voulez-vous continuer ?", vbOKCancel + vbQuestion) If Reponse = vbOK Then Set wApp = CreateObject("Word.Application") wApp.Visible = True With Sheets("Base") Range("U2").Select If ActiveCell = "JR" Then Set oDoc = wApp.Documents.Add(CheminFichiersWord & "Justif.doc") EditionDocument "Justif" End If Range("U2").Select If ActiveCell = "NO" Then Set oDoc = wApp.Documents.Add(CheminFichiersWord & "Refus.doc") EditionDocument "Refus" End If Range("U2").Select If ActiveCell = "OK" Then 'Set oDoc = wApp.Documents.Open(CheminFichiersWord & "Accord.doc") Set oDoc = wApp.Documents.Add(CheminFichiersWord & "Accord.doc") EditionDocument "Accord" End If End With oDoc.PrintOut oDoc.Close SaveChanges:=True wApp.Quit ' Fermeture de Word Set oDoc = Nothing Set wApp = Nothing End If End Sub Sub EditionDocument(NomDuDocument As String) 'Affectation des données Excel aux signets oDoc.Bookmarks("Prénom").Range.Text = Sheets("Base").Range("F" & Ligne) oDoc.Bookmarks("Nom").Range.Text = Sheets("Base").Range("E" & Ligne) oDoc.Bookmarks("Adresse").Range.Text = Sheets("Base").Range("G" & Ligne) oDoc.Bookmarks("Complément").Range.Text = ShDonnees.Range("H" & Ligne) oDoc.Bookmarks("CP").Range.Text = ShDonnees.Range("I" & Ligne) oDoc.Bookmarks("Ville").Range.Text = ShDonnees.Range("J" & Ligne) oDoc.Bookmarks("Traité_par").Range.Text = ShDonnees.Range("AB" & Ligne) oDoc.Bookmarks("Type_oppo").Range.Text = ShDonnees.Range("R" & Ligne) oDoc.Bookmarks("Prénom").Range.Text = ShDonnees.Range("L" & Ligne) oDoc.Bookmarks("Nom").Range.Text = ShDonnees.Range("K" & Ligne) oDoc.Bookmarks("Date_étab").Range.Text = ShDonnees.Range("A" & Ligne) oDoc.Bookmarks("Interv").Range.Text = ShDonnees.Range("V" & Ligne) oDoc.Bookmarks("Ref").Range.Text = ShDonnees.Range("B" & Ligne) oDoc.Bookmarks("Complément2").Range.Text = ShDonnees.Range("I" & Ligne) End Sub
Pour l'instant, je bloque sur l'instruction :
oDoc.PrintOut
J'ai une erreur 91 : "variable objet ou variable de bloc With non définie".
Je n'avais pas cette erreur tout à l'heure et (je ne sais plus à quoi j'ai touché !), elle est apparue.
En revanche, j'avais un problème dans la macro Sub EditionDocument(NomDuDocument As String), apparemment oDoc n'était pas non plus défini.
Quelqu'un qui passerait par là aurait-il une idée ?
Merci d'avance.
Cordialement.
Partager