Ouverture d'un tiroir caisse en vba

David590

XLDnaute Occasionnel
Bonjour à tous,

J'ai une imprimante tickets Epson TM-70 connecté au pc en usb sur laquelle j'aimerai brancher un tiroir caisse (branché généralement en RJ12).

Quelqu'un connait-il les codes pour ouvrir le tiroir en vba avec un bouton?

J'ai trouvé pas mal de chose sur le net mais rien en vba, il y a un vieux post pour le même genre de question mais qui est resté sans réponse

https://www.excel-downloads.com/threads/aide-sur-bouton-ouverture-tiroir-caisse.117952/

Je n'ai pas encore le tiroir et je peux donc acheter celui qu'il faut

Merci d'avance

David
 

David590

XLDnaute Occasionnel
Re : Ouverture d'un tiroir caisse en vba

Bonsoir,

Je reviens sur mon problème que je n'ai toujours pas réussi à résoudre pour ouvrir mon tiroir caisse

J'ai trouvé ceci sur le net où il parle de ce code qui donne l’impulsion à l'imprimante

http://www.developpez.net/forums/.../

Apparemment ce sont les codes à envoyer, mais je ne suis pas sur qe ce soit pour vba et la mienne est connecter en usb

Pouvez vous m'aidez à transcrire ce code en vba?
 
Dernière édition:

Habitude

XLDnaute Accro
Re : Ouverture d'un tiroir caisse en vba

As-tu essayer les API ?

Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _
ByVal pDefault As Long) As Long


Tout les API ont des exemples sur Microsoft.com
 

David590

XLDnaute Occasionnel
Re : Ouverture d'un tiroir caisse en vba

J'ai bien mis ce que tu m'as écrit dans un module et ensuite je l’appel avec un bouton...
mais qu'entend tu par 3 paramètres

J'ai écrit quelque chose dans ce genre, qu'es ce qui ne va pas?

Code:
Private Sub CommandButton1_Click()

OpenPrinter

ESC p m t1 t2
[Name] Generate pulse
[Format] ASCII ESC p m t1 t2
Hex 1B 70 m t1 t2
Decimal 27 112 m t1 t2
[Range] m = 0, 1, 48, 49
0 = t1 = 255
0 = t2 = 255

End Sub
 

Habitude

XLDnaute Accro
Re : Ouverture d'un tiroir caisse en vba

Open printer a besoin de 3 paramètres

OpenPrinter pPrinterName, phPrinter, pDefault

la fonction retourne 0 si l'imprimante n'a pas été trouvé

Ce lien n'existe plus


Comme je n'ai jamais eu besoin d'ouvrir un tiroir d'imprimante, il est difficile pour moi de t'en dire plus
 

David590

XLDnaute Occasionnel
Re : Ouverture d'un tiroir caisse en vba

Je suis un peu perdu la, je dois ecrire ma chaine de code à la suite de ca:
Code:
BOOL OpenPrinter(
  __in   LPTSTR pPrinterName,
  __out  LPHANDLE phPrinter,
  __in   LPPRINTER_DEFAULTS pDefault
);

d'après ce que j'ai pu lire, je dois écrire le code en Ascii sur le port de l'imprimante

Personne ne sait m'aider? Ca me parait très compliqué tout ça :(
 

David590

XLDnaute Occasionnel
Re : Ouverture d'un tiroir caisse en vba

Bonsoir habitude,

Merci d'avoir essayé de me faire un fichier, je l'ai tester mais après avoir selectionné mon imprimante, j'essai d'ouvrir le tiroir mais une erreur se produit, mais ce n'est pas grave car entre temps j'ai réussi à trouver ce qu'il me fallait

J'ai réussi avec ceci:
Code:
Private Sub CommandButton1_Click()
 Open "LPT1:" For Output As #1
        Print #1, Chr$(&H1B); "p"; Chr$(0); Chr$(3); Chr$(2);
Close #1
End Sub

En fait il me suffit d’écrire le code sur le port LPT1, mais tu me diras que je suis connecté en usb, c'est donc en utilisant une petite application (DOSPrint) que je peut redirigé le LPT1 vers le port USB

Sinon, connaîtrais tu un moyen pour écrire sur le port USB comme je le fait avec LPT1 pour me passer de l'application?

Bonne soirée

Merci @+ :)
 

Habitude

XLDnaute Accro
Re : Ouverture d'un tiroir caisse en vba

Re

Peut-etre que l'erreur générer vient du fait que le code d'ouverture que j'envoie n'est pas le bon.

Dans mon code j'ai un write line avec la ligne de code a envoyé a l'imprimante

Tu as essayer ta ligne de code dans mon code?

comme ceci
Code:
Function OuvrirTiroirCaisse()
Dim strFileAndPath As String, STDprinter As String
strFileAndPath = "c:\codeToPrinter.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(strFileAndPath, True)
a.Close
Open strFileAndPath For Output As #1
Print #1, Chr$(&H1B); "p"; Chr$(0); Chr$(3); Chr$(2); 
Close #1

STDprinter = Application.ActivePrinter
Application.ActivePrinter = RetourNomImprimate(STDprinter)
lngReturn = apiShellExecute(hWndAccessApp, "print", strFileAndPath, vbNullString, vbNullString, 0)

Application.ActivePrinter = STDprinter
End Function

Ou encore ceci

Code:
Function OuvrirTiroirCaisse()
Dim strFileAndPath As String, STDprinter As String
strFileAndPath = "c:\codeToPrinter.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(strFileAndPath, True)
a.WriteLine Chr$(&H1B) & "p" & Chr$(0) & Chr$(3) & Chr$(2) 
a.Close


STDprinter = Application.ActivePrinter
Application.ActivePrinter = RetourNomImprimate(STDprinter)
lngReturn = apiShellExecute(hWndAccessApp, "print", strFileAndPath, vbNullString, vbNullString, 0)

Application.ActivePrinter = STDprinter
End Function
 

Habitude

XLDnaute Accro
Re : Ouverture d'un tiroir caisse en vba

Bonsoir habitude,

Merci d'avoir essayé de me faire un fichier, je l'ai tester mais après avoir selectionné mon imprimante, j'essai d'ouvrir le tiroir mais une erreur se produit, mais ce n'est pas grave car entre temps j'ai réussi à trouver ce qu'il me fallait

J'ai réussi avec ceci:
Code:
Private Sub CommandButton1_Click()
 Open "LPT1:" For Output As #1
        Print #1, Chr$(&H1B); "p"; Chr$(0); Chr$(3); Chr$(2);
Close #1
End Sub

En fait il me suffit d’écrire le code sur le port LPT1, mais tu me diras que je suis connecté en usb, c'est donc en utilisant une petite application (DOSPrint) que je peut redirigé le LPT1 vers le port USB

Sinon, connaîtrais tu un moyen pour écrire sur le port USB comme je le fait avec LPT1 pour me passer de l'application?

Bonne soirée

Merci @+ :)

Autre solution pour Remplacer LPT1 car VB ne reconnait pas Open "USB001"

Tu crée un partage réseau de ton imprimante
du genre \\PC1\EpsonTM70
Et tu appel ce partage

Code:
Private Sub CommandButton1_Click()
 Open "\\PC1\EpsonTM70" For Output As #1
        Print #1, Chr$(&H1B); "p"; Chr$(0); Chr$(3); Chr$(2);
Close #1
End Sub
 

David590

XLDnaute Occasionnel
Re : Ouverture d'un tiroir caisse en vba

Bonsoir habitude,

Ce dernier est parfait, sur tes conseils j'ai crée un réseau de partage et j'ai mis ce code
Plus besoin de l'appli et très facile à mettre en place

Super

Merci beaucoup

@+ :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom