Choix imprimante en VB - VB/VBA/VBS - Programmation
Marsh Posté le 06-03-2006 à 17:20:56
Si tu expliquais les problèmes que tu rencontres au lieu de simplement dire que ça ne marche pas.
Marsh Posté le 06-03-2006 à 17:35:08
En fait, je ne comprends pas la procédure suivante : 
 
 
*************** 
Cette méthode consiste à affecter à l'objet Printer le nom d'une des imprimantes installées. Copiez ce code source dans un module standard. 
 
| Code : 
 | 
 
 
 
La fonction SelectionneImprimante sélectionne l'imprimante dont le nom est passé en paramètre. Maintenant placez un bouton de commande et une ComboBox sur une form et placez le code ci-dessous dans le module de la form. 
 
| Code : 
 | 
 
 
La ComboBox contient la liste des imprimantes installées. Au chargement de la form, l'imprimante par défaut est sélectionnée dans la combo. 
 
 
******************** 
 
Je suis débutant en Visual Basic, et je ne sais pas si le code ci-dessus est applicable à VB 6.3 (version Excel) 
 
Si ce code est compatible, je n'arrive pas a le faire fonctionner!  Comment faire? 
Marsh Posté le 06-03-2006 à 22:35:32
Bonsoir,  
 
L'objet Printer n'est pas reconnu en VBA Excel. Application.ActivePrinter renvoie l'imprimante active (par défaut). 
Pour obtenir la liste des imprimantes installées, je crois qu'il n'y pas d'autre solution que de passer par l'API et une solution existe sur ce site: 
   http://frederic.sigonneau.free.fr/ [...] nibles.txt 
 
Bon courage 
Epéna 
Marsh Posté le 07-03-2006 à 08:55:36
J'ai trouvé ce code sinon mais il est envoyé dans une Msgbox 
Je n'arrive pas a le renvoyer dans une ComboBox, est-ce possible ? 
 
>> Modifier l'imprimante par défaut de windows  
 
|    | 
Marsh Posté le 08-03-2006 à 07:26:07
Bonjour, 
Le code suivant va lister les imprimantes installées sur une ComboBox1 : 
 
Private Declare Function EnumPrintersA Lib "Winspool.drv" _ 
  (ByVal flags As Long, ByVal name As String, ByVal Level As Long, _ 
  pPrinterEnum As Long, ByVal cdBuf As Long, _ 
  pcbNeeded As Long, pcReturned As Long) As Long 
 
Private Declare Function lstrlenA Lib "Kernel32" _ 
  (ByVal lpString As Any) As Long 
 
Private Declare Function lstrcpyA Lib "Kernel32" _ 
  (ByVal lpString1 As String, ByVal lpString2 As Long) As Long 
 
Private Sub UserForm_Initialize() 
  Dim PrinterEnum() As Long, Impr() As String 
  Dim Needed As Long, Returned As Long, I As Integer 
 
  EnumPrintersA 2, vbNullString, 5, 0, 0, Needed, 0 
  ReDim PrinterEnum(Needed / 4) 
  EnumPrintersA 2, vbNullString, 5, PrinterEnum(0), _ 
    Needed, Needed, Returned 
  ReDim Impr(1 To Returned) 
  For I = 1 To Returned 
    Impr(I) = Space$(lstrlenA(PrinterEnum(I * 5 - 5))) 
    lstrcpyA Impr(I), PrinterEnum(I * 5 - 5) 
  Next I 
ComboBox1.List = Impr 
End Sub 
 
Bon courage 
 
Epéna
Marsh Posté le 09-03-2006 à 23:55:43
c'est du Vba et non du Vb......1000 excuses
Marsh Posté le 06-03-2006 à 09:21:19
Bonjour,
Je cherche a installer une UserForm avec une combobox listant les imprimantes disponnibles.
J'ai trouvé le code suivant mais je n'arrive pas a le mettre en application.
http://vb.developpez.com/faq/?page=Systeme#selectimp
Ce code est il fait pour Visual Basic 6.3 d'Excel 2003?
Si oui, quelle est la procédure?
Merci !