Problème variable non définie macro Excel réalisation courrier
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 :
Code:
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 |
En fonction de la valeur de la cellule U2, un courrier différent est édité et les signets sont complétés.
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.