Bonjour à tous,
voici mon problème.
Une combobox dans un formulaire contient la liste de toutes les imprimantes disponibles.
Lorsque l'on change une première fois d'imprimante active, aucun problème cela fonctionne, mais si on se ravise en en prenant une autre, j'obtiens une erreur d'exécution 1004 :
la méthode ActivePrinter de l'objet _Application a échoué.
La routine ci-dessous est la partie incriminée (voire incriminante) :
Je pense, pour ma part, que si, par exemple, on démarre avec un Ne02, le premier changement donne Ne00, le deuxième Ne01 mais le 3ème redonne Ne00 qui a déjà été attribué.
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 Sub cb_NomImprim_Click() ' ' *************************************** ' * Macro changeant d'imprimante active * ' *************************************** ' ' Rend active l'imprimante sélectionnée. ' Dim NouvImpr As String Dim I As Byte strOrdi = "." NouvImpr = cb_NomImprim.Value If NouvImpr = AncNomImp Then Exit Sub For I = 0 To 9 NouvImpr = cb_NomImprim.Value & " sur Ne0" & I & ":" ' Sans le passage aux majuscules la routine bloque, le Neo doit devenir parfois NEO en interne If UCase(Right(ActivePrinter, 5)) <> UCase("Ne0" & I & ":") Then Application.ActivePrinter = NouvImpr Exit For End If Next NouvImpr = cb_NomImprim.Value Set objWMIService = GetObject("winmgmts:\\" & strOrdi & "\root\cimv2") Set objImprimantes = objWMIService.ExecQuery("Select * from Win32_printerConfiguration") With F_Param_Imprim(NouvImpr) Form_Impression.Caption = "Imprimer avec " & .ImpNa TypeCoul.Caption = .ImpCo Etat.Caption = .ImpEt LblDef.Caption = .ImpDe End With AncNomImp = NouvImpr End Sub
D'où le blocage.
Qu'en pensez-vous ?
Partager