Bonjour,
Oui c'est ca ligne 42..
Bonjour,
Oui c'est ca ligne 42..
bonjour,
je ne vois pas trop ce qui ne fonctionne pas... si cela fonctionne quand les 2 fichiers sont renseignés, il faudrait regarder la partie supérieure du code, lorsque que file3 est vide et vérifier que le code fait la même chose, déclarations des variables y compris... d'ailleurs, il faudrait les déplacer en dehors des IF... ELSE et les mettre au tout début du code (oPDF, q, job,objOutLook, Ret etc.)
Et sinon, que se passe t-il quand file2 et file3 sont vides ?
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
J'ai modifié le code en faisant un If Nz(Me.pdf3) = 0 then Call Fusion2 Else Call Fusion3
Et là idem Fusion3 fonctionne trés bien et fusion2 coince sur la ligne q.MergeAllJobs et bien sur j'ai enlevé tout ce qui fait réf à file3 dans le code Fusion2.
Je ne comprends pas..
Re Bonjour,
pdf2 ne sera pas vide.
si le code est le même dans les 2 Sub et que çà plante dans l'un, ne connaissant pas le composant PdfCreator (que je n'ai pas sur ma machine), je ne pourrais pas t'aider plus sauf si je l'installe et teste ton code ...
quelle version de PdfCreator as-tu téléchargé ?
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
visiblement, l'ordre des instructions est conforme à celui que j'ai vu dans la doc de PdfCreator, à une seule différence près (et je ne sais pas si cela a de l'importance): le ReleaseCom ne semble pas positionné à la fin dans la partie Else, je parle évidemment du code avant la dissociation en 2 sub distincts qui n'a pas été posté.
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
En effet et en plus j'ai du le mettre en inactif sur les 2 autres endroits ou il était positionné car sinon cela créé un bug.
Le plus étonnant c'est que ca fonctionne pour 3 fichiers et pas pour deux alors que c'est exactement le même code.
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 Private Sub Fusion2() Dim file1 As String Dim file2 As Variant Dim File3 As Variant Dim outPath$ outPath = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\RapportFinal" & Me.NOAffaire & ".pdf" file1 = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\Rapport" & Me.NOAffaire & ".pdf" file2 = Me.pdf2 MsgBox "Merci d'attendre la fin du process" Dim oPDF As PdfCreatorObj Set oPDF = New PdfCreatorObj oPDF.AddFileToQueue file1 oPDF.AddFileToQueue file2 Debug.Print "oPDF isinstancerunning: " & oPDF.IsInstanceRunning ' close Excel and open if true. 'On Error GoTo EndSub ' this is commented out for debuging purposes Dim q As PDFCreator_COM.JobQueue Set q = New PDFCreator_COM.JobQueue 'q.ReleaseCom q.Initialize q.WaitForJobs 2, 10 Debug.Print "q.Count: " & q.Count ' here it prints either 1 or 2. Should always be 2. Dim Ret As Long If q.Count < 3 And Ret < 6 Then q.Clear q.ReleaseCom Ret = Ret + 1 'count the number of times this action returned without proceeding 'GoTo Top ElseIf Ret >= 6 Then MsgBox "The merge PDF return a error." outPath = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "ERROR_MERGE.pdf" End If q.MergeAllJobs Dim job As PDFCreator_COM.printJob While q.Count > 0 Set job = q.NextJob job.SetProfileByGuid ("DefaultGuid") job.ConvertTo (outPath) Debug.Print job.IsFinished Debug.Print job.IsSuccessful Debug.Print "q.Count: " & q.Count Wend 'EndSub: 'q.ReleaseCom 'mis en bas MsgBox "Le rapport final est prêt dans le dossier LaboRapport de l'affaire, le mail va être préparé dans outlook" 'Envoi du rapport pdf par mail Dim objOutLook As Object Dim objOutlookMsg As Object Set objOutLook = New Outlook.Application Set objOutlookMsg = objOutLook.CreateItem(0) objOutlookMsg.To = Me.Mail 'destinataire objOutlookMsg.CC = DLookup("[Copie]", "EnvoiMail", "[NomMail] = 'Rapport'") 'cc 'objOutlookMsg.BCC = TxtBCC 'cc caché objOutlookMsg.Subject = Me.Nomaffaire & "//" & Me.NOAffaire 'sujet objOutlookMsg.Body = DLookup("[TexteMail]", "EnvoiMail", "[NomMail] = 'Rapport'") 'message objOutlookMsg.Attachments.Add CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\RapportFinal" & Me.NOAffaire & ".pdf" 'CheminPJ objOutlookMsg.display EndSub: q.ReleaseCom oPDF.Quit Set oPDF = Nothing MsgBox "Le mail est prêt" End Sub
Re,
Q.Release sur ligne 23 et 53 que j'ai désactivé pour le mettre en bas.
Cela a également créé un bug sur GO TO Top en ligne 34 que j'ai désactivé aussi.
Ce code est l'identique de celui des 3 pdf donc je ne comprends pas.;
Re,
La version est V4.3.0.6;
Ce matin même le code 3 pdf ne fonctionnait pas "pdfcreator en cours d'exécution", j'ai remis Q.Release.com et ca a refonctionnait, j'ai renouvelé l'action et à nouveau cela a bloqué sur Q.Release.com
Ci-dessous le journal :
2024-03-12 09:26:46.0203 [Error] pdfforge.PDFCreator.Editions.EditionBase.CustomBindingResolver.CurrentDomain_ResolveAssembly: The assembly file does not exist: C:\Program Files\PDFCreator\itext.licensekey.dll
2024-03-12 09:26:46.0775 [Error] pdfforge.PDFCreator.Editions.EditionBase.CustomBindingResolver.CurrentDomain_ResolveAssembly: The assembly file does not exist: C:\Program Files\PDFCreator\itext.licensekey.dll
2024-03-12 09:43:15.6265 [Error] pdfforge.PDFCreator.UI.COM.Queue.Initialize: System.InvalidOperationException: Access forbidden. An instance of PDFCreator is currently running.
à pdfforge.PDFCreator.Core.ComImplementation.QueueAdapter.Initialize()
à pdfforge.PDFCreator.UI.COM.Queue.Initialize() System.InvalidOperationException: Access forbidden. An instance of PDFCreator is currently running.
à pdfforge.PDFCreator.Core.ComImplementation.QueueAdapter.Initialize()
à pdfforge.PDFCreator.UI.COM.Queue.Initialize()
2024-03-12 09:44:26.4534 [Error] pdfforge.PDFCreator.UI.COM.Queue.Initialize: System.InvalidOperationException: Access forbidden. An instance of PDFCreator is currently running.
à pdfforge.PDFCreator.Core.ComImplementation.QueueAdapter.Initialize()
à pdfforge.PDFCreator.UI.COM.Queue.Initialize() System.InvalidOperationException: Access forbidden. An instance of PDFCreator is currently running.
à pdfforge.PDFCreator.Core.ComImplementation.QueueAdapter.Initialize()
à pdfforge.PDFCreator.UI.COM.Queue.Initialize()
2024-03-12 09:47:36.3289 [Error] pdfforge.PDFCreator.UI.COM.Queue.Initialize: System.InvalidOperationException: Access forbidden. An instance of PDFCreator is currently running.
à pdfforge.PDFCreator.Core.ComImplementation.QueueAdapter.Initialize()
à pdfforge.PDFCreator.UI.COM.Queue.Initialize() System.InvalidOperationException: Access forbidden. An instance of PDFCreator is currently running.
à pdfforge.PDFCreator.Core.ComImplementation.QueueAdapter.Initialize()
à pdfforge.PDFCreator.UI.COM.Queue.Initialize()
bonjour,
pour ce que j'ai compris, le Releasecom doit s'exécuter qu'une seule fois dans chaque sub. Par contre, si cela plante, comme il n'y a pas de gestion d'erreur l'exécution du Releasecom n'est pas fait.Ce matin même le code 3 pdf ne fonctionnait pas "pdfcreator en cours d'exécution", j'ai remis Q.Release.com et ca a refonctionnait, j'ai renouvelé l'action et à nouveau cela a bloqué sur Q.Release.com
C'est peut-être de là que vient le problème ...
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
J'ai enfin trouvé ouf.. le souci était si simple et se trouvait là : If q.Count < 2 And Ret < 6 Then, j'avais laissé <3 tout simplement.;
Merci encore à vous pour votre patience et votre aide.
Bonne journée et sûrement à bientôt étant donné mon niveau..
Bonjour à tous,
Je rouvre cette discussion car je ne sais pas pour quelle raison mais le fichier se double dans le même pdf, c'est à dire que j'ai un pdf final avec 2 fois le fichier fusionné à l'intérieur.
J'ai bien regardé le code et je ne comprends pas pourquoi cela se dédouble.. j'ai essayé en enlevant le Else Call Fusion3 au cas ou cela viendrait de là mais idem le fichier pdf contient 2 fois les fichiers
Merci à vous si vous avez une solution ou suggestion..
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 Private Sub Fusion1_Click() If (IsNull([Pdf3]) Or IsEmpty([Pdf3]) Or [Pdf3] = "") Then Call Fusion2 Else Call Fusion3 End If End Sub Private Sub Fusion3() Dim file1 As String Dim file2 As Variant Dim file3 As Variant Dim outPath$ outPath = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\RapportFinal" & Me.NOAffaire & ".pdf" file1 = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\Rapport" & Me.NOAffaire & ".pdf" file2 = Me.pdf2 file3 = Me.Pdf3 MsgBox "Merci d'attendre la fin du process, un message vous préviendra, si fenetre de débogage cliquer sur Fin" DoCmd.Hourglass True Dim oPDF As PdfCreatorObj Set oPDF = New PdfCreatorObj oPDF.AddFileToQueue file1 oPDF.AddFileToQueue file2 oPDF.AddFileToQueue file3 DoCmd.Hourglass False Debug.Print "oPDF isinstancerunning: " & oPDF.IsInstanceRunning ' close and open if true. On Error GoTo EndSub ' this is commented out for debuging purposes Dim q As PDFCreator_COM.JobQueue Set q = New PDFCreator_COM.JobQueue q.Initialize q.WaitForJobs 3, 16 Debug.Print "q.Count: " & q.Count ' here it prints either 1 or 2. Should always be 2. Dim Ret As Long If q.Count < 3 And Ret < 6 Then q.Clear q.ReleaseCom Ret = Ret + 1 'count the number of times this action returned without proceeding 'GoTo Top ElseIf Ret >= 6 Then MsgBox "The merge PDF return a error." outPath = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "ERROR_MERGE.pdf" End If q.MergeAllJobs Dim job As PDFCreator_COM.printJob While q.Count > 0 Set job = q.NextJob job.SetProfileByGuid ("DefaultGuid") job.ConvertTo (outPath) Debug.Print job.IsFinished Debug.Print job.IsSuccessful Debug.Print "q.Count3: " & q.Count Wend EndSub: q.Clear Set oPDF = Nothing Me.pdf2 = "" Me.Pdf3 = "" MsgBox "Le rapport final est prêt dans le dossier de l'affaire, le mail va être préparé dans outlook" 'Envoi du rapport pdf par mail Dim objOutLook As Object Dim objOutlookMsg As Object Dim masign As String Dim var As String Dim t As String Set objOutLook = New Outlook.Application Set objOutlookMsg = objOutLook.CreateItem(0) t = DLookup("[TexteMail]", "EnvoiMail", "[NomMail] = 'TextHAP'") 'Champs joints selon résultat var = IIf([AmianteConc] Like "*Positif*" Or [AmianteConc] Like "*Négatif*", [AmianteConc] & "<br>", "") var = var & IIf([HAPQTConc] Like "*Positif*" Or [HAPQTConc] Like "*Négatif*", [HAPQTConc] & "<br>", "") var = var & IIf([HAPQLConc] Like "*Positif*" Or [HAPQLConc] Like "*Négatif*", [HAPQLConc] & "<br>" & t & "<br>", "") objOutlookMsg.display masign = objOutlookMsg.HTMLBody With objOutlookMsg .To = Me.Mail 'destinataire .CC = "contact@batexpert.fr" '.BCC = TxtBCC 'cc caché .Subject = Me.Nomaffaire & "//" & Me.NOAffaire 'sujet .HTMLBody = "<p><font face=Calibri size=3,5>" & "Bonjour," & "<br><br>" & _ "Je vous prie de trouver ci-joint le rapport concernant l'affaire citée en objet." & "<br>" & _ "Je vous en souhaite bonne réception, et reste à votre disposition pour tout complément." & "<br>" & _ var & "<br>" & "</font></p>" & _ masign .display .Attachments.Add CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\RapportFinal" & Me.NOAffaire & ".pdf" 'CheminPJ End With MsgBox "Le mail est prêt" End Sub Private Sub Fusion2() Dim file1 As String Dim file2 As Variant Dim outPath$ outPath = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\RapportFinal" & Me.NOAffaire & ".pdf" file1 = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\Rapport" & Me.NOAffaire & ".pdf" file2 = Me.pdf2 MsgBox "Merci d'attendre la fin du process, un message vous préviendra, si fenetre de débogage cliquer sur Fin" DoCmd.Hourglass True Dim oPDF As PdfCreatorObj Set oPDF = New PdfCreatorObj oPDF.AddFileToQueue file1 oPDF.AddFileToQueue file2 DoCmd.Hourglass False Debug.Print "oPDF isinstancerunning: " & oPDF.IsInstanceRunning ' close and open if true. On Error GoTo EndSub ' this is commented out for debuging purposes Dim q As PDFCreator_COM.JobQueue Set q = New PDFCreator_COM.JobQueue q.Initialize q.WaitForJobs 2, 12 Debug.Print "q.Count: " & q.Count ' here it prints either 1 or 2. Should always be 2. Dim Ret As Long If q.Count < 3 And Ret < 6 Then q.Clear q.ReleaseCom Ret = Ret + 1 'count the number of times this action returned without proceeding 'GoTo Top ElseIf Ret >= 6 Then MsgBox "The merge PDF return a error." outPath = CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "ERROR_MERGE.pdf" End If q.MergeAllJobs Dim job As PDFCreator_COM.printJob While q.Count > 0 Set job = q.NextJob job.SetProfileByGuid ("DefaultGuid") job.ConvertTo (outPath) Debug.Print job.IsFinished Debug.Print job.IsSuccessful Debug.Print "q.Count2: " & q.Count Wend EndSub: q.Clear Set oPDF = Nothing Me.pdf2 = "" Me.Pdf3 = "" MsgBox "Le rapport final est prêt dans le dossier de l'affaire, le mail va être préparé dans outlook" 'Envoi du rapport pdf par mail Dim objOutLook As Object Dim objOutlookMsg As Object Dim masign As String Dim var As String Dim p As String p = DLookup("[TexteMail]", "EnvoiMail", "[NomMail] = 'TextHAP'") Set objOutLook = New Outlook.Application Set objOutlookMsg = objOutLook.CreateItem(0) 'Champs joints selon résultat var = IIf([AmianteConc] Like "*Positif*" Or [AmianteConc] Like "*Négatif*", [AmianteConc] & "<br>", "") var = var & IIf([HAPQTConc] Like "*Positif*" Or [HAPQTConc] Like "*Négatif*", [HAPQTConc] & "<br>", "") var = var & IIf([HAPQLConc] Like "*Positif*" Or [HAPQLConc] Like "*Négatif*", [HAPQLConc] & "<br>" & p, "") objOutlookMsg.display masign = objOutlookMsg.HTMLBody With objOutlookMsg .To = Me.Mail 'destinataire .CC = "contact@batexpert.fr" '.BCC = TxtBCC 'cc caché .Subject = Me.Nomaffaire & "//" & Me.NOAffaire 'sujet .HTMLBody = "<p><font face=Calibri size=3,5>" & "Bonjour," & "<br><br>" & _ "Je vous prie de trouver ci-joint le rapport concernant l'affaire citée en objet." & "<br>" & _ "Je vous en souhaite bonne réception, et reste à votre disposition pour tout complément." & "<br>" & _ var & "<br>" & "</font></p>" & _ masign .display .Attachments.Add CurrentProject.Path & "\" & Me.Annee & "\" & Me.NOAffaire & "\RapportFinal" & Me.NOAffaire & ".pdf" 'CheminPJ End With MsgBox "Le mail est prêt" End Sub
Bonjour à tous,
Bon aujourd'hui ca fonctionne parfaitement c'est à rien y comprendre..;
bonjour,
tant mieux mais juste une petite remarque: tu dis précedemment
or, dans ton dernier code je vois : If q.Count < 3 And Ret < 6 Then en lignes 40 et 134 ...J'ai enfin trouvé ouf.. le souci était si simple et se trouvait là : If q.Count < 2 And Ret < 6 Then, j'avais laissé <3 tout simplement.;
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager