XL 2016 RESOLU Imprimer un fichier excel sur trois imprimantes réseau

Linalor

XLDnaute Nouveau
Bonjour,

J'ai un fichier excel ci-joint.
Je suis débutant en VBA.
Ce tableau sert à gérer les repas dans mon centre de soin. Dans "Gestion résident" et "Plateau personnel" nous modifions les données, et en cliquant sur les boutons d'imprimante, cela imprime le document "impression cuisine"
Avant, j'avais utilisé une formule, quand on cliquait sur l'imprimante ça ouvrait la box de selection de l'imprimante, on envoyait la feuille "IMPRESSION CUISINE" sur celle de la cuisine et c'était bon.
Je souhaiterais pouvoir modifié la formule pour que :
- les pages 1 à 5 s'impriment à la cuisine
- Les pages 6 à 9 s'impriment dans mon bureau
- La page 10 s'imprime sur une autre imprimante

J'ai donc mis cette formule sur mon Bouton :

Sub Bouton6_Cliquer()
Application.ActivePrinter = "PR-BC-03 sur Ne00:"
ActiveWorkbook.RefreshAll
Sheets("Impression CUISINE").PrintOut From:=1, To:=5
Application.ActivePrinter = "\\srv-174-etab\PR-174-07 sur Ne09:"
ActiveWorkbook.RefreshAll
Sheets("Impression CUISINE").PrintOut From:=6, To:=9
Application.ActivePrinter = "\\SRV-174-ETAB.ad.groupe.net\PR-174-02 sur Ne10:"
ActiveWorkbook.RefreshAll
Sheets("Impression CUISINE").PrintOut From:=10, To:=10
End Sub

Cette formule marche depuis mon PC, mais ça ne marche pas quand on le fait depuis un autre ordinateur.

Apres avoir fouillé sur internet, j'ai vu que cela venait du fait que les imprimantes sont en réseau et que le Ne0 changeait (de Ne0 à Ne10 ...)
Sur ce forum, PascalXLD proposait cette formule :

For aa = 0 To 9
Nom = 'EPSON Stylus C82 Series sur Ne0' & aa & ':'
On Error Resume Next
Application.ActivePrinter = Nom
If ActivePrinter = Nom Then Exit For
Next

Mais ça ne marche pas pour moi (je pense parce que le Ne va jusqu'à 10...

Et je ne sais pas l'adapter à mon souhait de l'envoyer sur 3 imprimantes différentes.

Si vous pouviez m'aider !!

Merci mille fois !!!
 

Pièces jointes

  • Commande quotidienne test.xlsm
    373 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Linalor, et bienvenu(e) sur XLD.
En PJ un essai avec une fonction qui recherche le nom d'une imprimante installée à partir d'un morceau du nom.
( Librement inspiré de Origine )
Avec :
VB:
Function SearchPrinters(Chaine$)
'travaille sur le poste client
strComputer = "."
'appel WMI
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set imprimantesinstallées = objWMIService.ExecQuery _
    ("Select * from Win32_Printer")
'restitution
For Each imprimante In imprimantesinstallées
    defaut = ""
    If imprimante.Default Then
    defaut = "imprimante par défaut"
    End If
    If imprimante.Name Like "*" & Chaine & "*" Then
        SearchPrinters = imprimante.Name
        Exit Function
    End If
Next
SearchPrinters = "Imprimante non trouvée." ' Si pas trouvé
End Function
Si cela marche, il suffit dans votre code d'ajouter :
Code:
Application.ActivePrinter =SearchPrinters("EPSON Stylus C82 Series")
 

Pièces jointes

  • 03 formule péremption.xlsm
    16.5 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Sorry, j'avais "zappé" votre PJ.
En PJ rectifié.:)
J'ai intégré la fonction, et remplacé vos lignes par :
VB:
Application.ActivePrinter = SearchPrinters("PR-BC-03 sur Ne")
Avec comme chaine un morceau du nom.
PS : Comme la fonction est longue à exécuter, il vaut mieux l'utiliser à bon escient que sur l'imprimante qui n'est pas reconnue par tous les PC.
 

Pièces jointes

  • Commande quotidienne test (2).xlsm
    369 KB · Affichages: 5

Discussions similaires