Bonjour,
Je souhaite créer des affichettes de prix pour mon épouse (format A5, soit 2 affichettes par A4) en utilisant les données contenues dans un tableau Excel.
Pour ce faire, je suis parti de la macro que j'avais initiée il y a quelques mois pour mon boulot, et pour laquelle vous m'aviez apportée une aide importante.
Or, au moment de dérouler la ligne 46 ci-dessous (docWord.Bookmarks("Intitulé_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("B" & i).Value ' Intitulé), l'erreur suivante intervient :
Voici la macro en question.Erreur d'exécution '91' : Variable objet ou variable de bloc With non définie.
Pourriez-vous me dire si qui cloche ? J'ai lu sur le net que cela correspondrait à une mauvaise gestion du Null, mais j'avoue que je ne vois pas bien ce que cela signifie dans mon cas.
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 Sub GénérerAffiches() Dim DernLigne As Long Dim Chemin As String Dim truc As DataObject Dim i As Integer, Chrono As Integer Dim appWrd As Word.Application Dim docWord As Word.Document Set appWrd = CreateObject("Word.Application") appWrd.Visible = False Chemin = ThisWorkbook.Path Chrono = 1 'On Error Resume Next '-------------------------------------------------------------------------------------- '----- TRI DES AFFICHES PAR TYPE ------------------------------------------------------ '-------------------------------------------------------------------------------------- DernLigne = Sheets("Listing").Range("A100").End(xlUp).Row ActiveWorkbook.Worksheets("Listing").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Listing").AutoFilter.Sort.SortFields.Add2 Key:= _ Range("A1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortTextAsNumbers With ActiveWorkbook.Worksheets("Listing").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For i = 2 To DernLigne If Sheets("Listing").Range("A" & i).Value = "A5 Vertical" Then TemplateRapport = Chemin & "\Modèle A5 Vertical.docx" Set docWord = appWrd.Documents.Open(Chemin & "\" & TemplateRapport, ReadOnly:=False) docWord.Bookmarks("Intitulé_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("B" & i).Value ' Intitulé docWord.Bookmarks("Ligne1_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("C" & i).Value ' Ligne 1 docWord.Bookmarks("Ligne2_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("D" & i).Value ' Ligne 2 docWord.Bookmarks("PU_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("E" & i).Value ' Prix unitaire docWord.Bookmarks("U_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("F" & i).Value ' Unité docWord.Bookmarks("Référence_1").Range.Text = ActiveWorkbook.Sheets("Listing").Range("G" & i).Value ' Référence produit docWord.Bookmarks("Euro_1").Range.Text = Int(ActiveWorkbook.Sheets("Listing").Range("H" & i).Value) ' Euro prix promo docWord.Bookmarks("Cent_1").Range.Text = 100 * (ActiveWorkbook.Sheets("Listing").Range("H" & i).Value - Int(ActiveWorkbook.Sheets("Listing").Range("H" & i).Value)) ' Cents prix promo docWord.Bookmarks("Intitulé_2").Range.Text = ActiveWorkbook.Sheets("Listing").Range("B" & i + 1).Value ' Intitulé docWord.Bookmarks("Ligne1_2").Range.Text = ActiveWorkbook.Sheets("Listing").Range("C" & i + 1).Value ' Ligne 1 docWord.Bookmarks("Ligne2_2").Range.Text = ActiveWorkbook.Sheets("Listing").Range("D" & i + 1).Value ' Ligne 2 docWord.Bookmarks("PU_2").Range.Text = ActiveWorkbook.Sheets("Listing").Range("E" & i + 1).Value ' Prix unitaire docWord.Bookmarks("U_2").Range.Text = ActiveWorkbook.Sheets("Listing").Range("F" & i + 1).Value ' Unité docWord.Bookmarks("Référence_2").Range.Text = ActiveWorkbook.Sheets("Listing").Range("G" & i + 1).Value ' Référence produit docWord.Bookmarks("Euro_2").Range.Text = Int(ActiveWorkbook.Sheets("Listing").Range("H" & i + 1).Value) ' Euro prix promo docWord.Bookmarks("Cent_2").Range.Text = 100 * (ActiveWorkbook.Sheets("Listing").Range("H" & i + 1).Value - Int(ActiveWorkbook.Sheets("Listing").Range("H" & i + 1).Value)) ' Cents prix promo '----------------------------------------------------------------------------------------------------------------------------------------------- '------------------ ENREGISTREMENT ------------------------------------------------------------------------------------------------------------- '----------------------------------------------------------------------------------------------------------------------------------------------- appWrd.ActiveDocument.SaveAs FileFormat:=17, Filename:=Chemin & "\Affiche A5 - " & Format(Date, "AAAA-MM-JJ") & " _ " & Format(Chrono, "00") appWrd.ActiveDocument.SaveAs Filename:=Chemin & "\Affiche A5 - " & Format(Date, "AAAA-MM-JJ") & " _ " & Format(Chrono, "00") appWrd.ActiveDocument.Close Set truc = New DataObject truc.SetText "" truc.PutInClipboard Set truc = Nothing End If i = i + 1 Chrono = Chrono + 1 Next MsgBox ("Les affiches ont été générées.") End Sub
D'avance, merci à ceux qui me liront, voire qui me répondront !
Partager