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) :
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
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é.
D'où le blocage.

Qu'en pensez-vous ?