Gerer l'impression Couleur par VBA sur Excel

J

june

Guest
Bonjour à tous,

Je me suis décidé à m'inscrire car je suis face à un problème 'que avant y c'étais pas posé alors y a pas de solution dispo'. c'est tout dire.

Donc voila, j'ai un fichier avec plusieurs onglets contenant plusieurs tableaux en couleurs. Lorsque les utlisateurs veulent imprimés ce classeur ils cliquent sur 1 command button dans un userform... le code que j'essaye de développer consiste à reconnaitre si l'imprimante active est noir & blanc ou couleur et a activer l'option impression Noir&Blanc d'Excel pour eviter des impressions en noir des dit tableaux colorés (je sais pas si j'ais été tres clair...)

donc voici le meli melo que j'ai tenté de mette pour qu'excel agisse comme je l'espère... et .... et bien sûr ça fonctionne pas :(

apres avoir écumé à droite et à gauche, vous restez mon seul espoir

ci dessous le code incriminé :angry: :



Sub listeImprimantes_et_Statut()

Dim objWMIService As Object, colInstalledPrinters As Object, objPrinter As Object, colItems As Object
Dim objItem As Object
Dim nomPC As String, Resultat As String
nomPC = '.'
Set objWMIService = GetObject('winmgmts:' & _
'{impersonationLevel=impersonate}!\\\\' & nomPC & '\\root\\cimv2')
Set colInstalledPrinters = objWMIService.execQuery('Select * from Win32_Printer')
'For Each objPrinter In colInstalledPrinters

Set colItems = objWMIService.execQuery('Select * from Win32_PrinterConfiguration', , 48)


If objItem.Color.colItems = 1 Then
'''''''''''''''''''''''''''''
'Couleur = 'Couleur'
ActiveWorkbook.PrintOut Copies:=1, Collate:=True
With ActiveWorkbook
.BlackAndWhite = True
End With

Else
'Couleur = 'N&B'
ActiveWorkbook.PrintOut Copies:=1, Collate:=True
With ActiveWorkbook
.BlackAndWhite = False
End With
End If

End Sub

ceux qui bourlingue pas mal sur ce forum reconnaitront un milk shake de 2 macro présentées sur le fil 'gestion des impression'.
n'étant pas un dieu excellien je m'en remets à vous tous

merci pour vos idées
 

MichelXld

XLDnaute Barbatruc
bonjour June

si tu souhaites imprimer en noir & blanc , tu peux essayer tout simplement ( exemple pour la Feuil1 )


Sub impressionNoirEtBlanc()
With Worksheets('Feuil1')
.PageSetup.BlackAndWhite = True 'parametrage N&B
.PrintOut 'imprimer
.PageSetup.BlackAndWhite = False 'réinitialisation en couleur
End With
End Sub


bonne soiree
MichelXld
 

june

XLDnaute Nouveau
merci pour ta réponse MichelXLD,

oui ton code fonctionne mais il imprimera uniquement en N&B que l'imprimante soit N&B ou Couleur.

Alors que l'astuce (qui fonctionne pas) que je tentais de développer consistait, via la macro, à faire reconnaitre l'imprimante par défaut puis reconnaitre si celle-ci est couleur ou non et ensuite à imprimer en N&B si l'imprimante est N&B et en couleur si elle est en couleur.

je pense que mon code n'est pas loin d'y arriver car à priori il plante sur ce qu'il doit faire une fois qu'il a determiné les deux variables (imprimante par défaut, N&b ou Couleur).

donc si l'un d'entre vous voit pourquoi mon code de ... :sick: .. ne fonctionne pas !
 

MichelXld

XLDnaute Barbatruc
rebonsoir June

j'espere que ces 2 exemples pourront t'aider
( testé avec WinXP)


si tu connais le nom de l'imprimante

Code:
Sub verifier_parametre_Couleur_NB_Imprimante_V01()
Dim objWMIService As Object, colItems As Object
Dim objItem As Object
Dim strComputer As String

strComputer = '.'
Set objWMIService = GetObject('winmgmts:\\\\' & strComputer & '\\root\\cimv2')
Set colItems = objWMIService.ExecQuery('Select * from Win32_PrinterConfiguration ' & _
'where Name = 'hp deskjet 940c series'')

For Each objItem In colItems
    Select Case objItem.Color
    Case 1: MsgBox objItem.Name & ' : noir et blanc'
    Case 2: MsgBox objItem.Name & ' : couleur'
    End Select
Next

End Sub


en bouclant sur toutes les imprimantes du poste ( en local)

Code:
Sub verifier_parametre_Couleur_NB_Imprimante_V02()
Dim objWMIService As Object, colItems As Object
Dim objItem As Object
Dim strComputer As String

On Error Resume Next
strComputer = '.'
Set objWMIService = GetObject('winmgmts:\\\\' & strComputer & '\\root\\cimv2')
Set colItems = objWMIService.ExecQuery('Select * from Win32_PrinterConfiguration', , 48)

For Each objItem In colItems
    Select Case objItem.Color
    Case 1: MsgBox objItem.Name & ' : noir et blanc'
    Case 2: MsgBox objItem.Name & ' : couleur'
    End Select
Next
End Sub


si tu as prealablement besoin de connaitre le nom de l'imprimante active

MsgBox Application.ActivePrinter


bonne soiree
MichelXld
 

XceSs

XLDnaute Nouveau
Re : Re:Gerer l'impression Couleur par VBA sur Excel

Bonsoir, avez-vous trouvé une solution pour modifier l'état d'impression noiretblanc ou couleur avec cette méthode

Code:
Sub verifier_parametre_Couleur_NB_Imprimante_V01()
Dim objWMIService As Object, colItems As Object
Dim objItem As Object
Dim strComputer As String

strComputer = '.'
Set objWMIService = GetObject('winmgmts:\\\\' & strComputer & '\\root\\cimv2')
Set colItems = objWMIService.ExecQuery('Select * from Win32_PrinterConfiguration ' & _
'where Name = 'hp deskjet 940c series'')

For Each objItem In colItems
    Select Case objItem.Color
    Case 1: MsgBox objItem.Name & ' : noir et blanc'
    Case 2: MsgBox objItem.Name & ' : couleur'
    End Select
Next

End Sub

june tu as trouvé une solution ?

Merci de votre aide
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo