OVH Cloud OVH Cloud

rediriger debug.print sur une imprimante

4 réponses
Avatar
AndréSch
Bonjour à tous nos experts VBA....

Peut-on rediriger debug.print sur une imprimante ? Comment

Et si c'est possible, comment savoir si elle est allumée ?

merci d'avance à vous tous

André

4 réponses

Avatar
michdenis
Bonjour andré,

Je ne sais pas ce que tu veux faire exactement, mais je te propose ceci :

Dirige le contenu vers un fichier de ton choix... et à la fin des opérations, tu n'auras qu'à imprimer ton fichier texte !

'--------------------
Sub VersFichierTexte()

Dim Fichier As String, Nb As Long
Dim Var As String
Fichier = "c:denis.txt" 'à déterminer
Nb = FreeFile

'Ouvre un fichier texte
Open Fichier For Output As Nb

'Affecte à la variable "Var" la valeur que tu désires imprimer
'dans ta procédure
Var = "Toto;" & vbCrLf
'Écris dans le fichier texte, le contenu de la variable
Print #Nb, Var

'Ceci est pour fermer le fichier texte à la fin de tes opérations
Close

End Sub
'--------------------


Salutations!



"AndréSch" a écrit dans le message de news: %
Bonjour à tous nos experts VBA....

Peut-on rediriger debug.print sur une imprimante ? Comment

Et si c'est possible, comment savoir si elle est allumée ?

merci d'avance à vous tous

André
Avatar
AndréSch
Merci Michel, je vois que tu es déjà sur la brèche...
j'y pensais un peu
mais
pour imprimer le fichier (en vba bien sur..) ?

merci d'avance

André
"michdenis" a écrit dans le message de news:

Bonjour andré,

Je ne sais pas ce que tu veux faire exactement, mais je te propose ceci :

Dirige le contenu vers un fichier de ton choix... et à la fin des
opérations, tu n'auras qu'à imprimer ton fichier texte !

'--------------------
Sub VersFichierTexte()

Dim Fichier As String, Nb As Long
Dim Var As String
Fichier = "c:denis.txt" 'à déterminer
Nb = FreeFile

'Ouvre un fichier texte
Open Fichier For Output As Nb

'Affecte à la variable "Var" la valeur que tu désires imprimer
'dans ta procédure
Var = "Toto;" & vbCrLf
'Écris dans le fichier texte, le contenu de la variable
Print #Nb, Var

'Ceci est pour fermer le fichier texte à la fin de tes opérations
Close

End Sub
'--------------------


Salutations!



"AndréSch" a écrit dans le message de news:
%
Bonjour à tous nos experts VBA....

Peut-on rediriger debug.print sur une imprimante ? Comment

Et si c'est possible, comment savoir si elle est allumée ?

merci d'avance à vous tous

André





Avatar
AndréSch
Oh, ça doit aller comme ça... ça me suffit , merci
"michdenis" a écrit dans le message de news:

Bonjour andré,

Je ne sais pas ce que tu veux faire exactement, mais je te propose ceci :

Dirige le contenu vers un fichier de ton choix... et à la fin des
opérations, tu n'auras qu'à imprimer ton fichier texte !

'--------------------
Sub VersFichierTexte()

Dim Fichier As String, Nb As Long
Dim Var As String
Fichier = "c:denis.txt" 'à déterminer
Nb = FreeFile

'Ouvre un fichier texte
Open Fichier For Output As Nb

'Affecte à la variable "Var" la valeur que tu désires imprimer
'dans ta procédure
Var = "Toto;" & vbCrLf
'Écris dans le fichier texte, le contenu de la variable
Print #Nb, Var

'Ceci est pour fermer le fichier texte à la fin de tes opérations
Close

End Sub
'--------------------


Salutations!



"AndréSch" a écrit dans le message de news:
%
Bonjour à tous nos experts VBA....

Peut-on rediriger debug.print sur une imprimante ? Comment

Et si c'est possible, comment savoir si elle est allumée ?

merci d'avance à vous tous

André





Avatar
Michel Pierron
Bonjour AndréSch;
Perso, je trouve plus confortable d'utiliser une feuille du classeur pour
déboguer, mais bon...

Pour le fun:
Option Explicit
Private Declare Function SetFocus& Lib "user32" (ByVal hwnd&)
Private Declare Function GetActiveWindow& Lib "user32" ()
Private Declare Function FindWindowExA& Lib "user32" _
(ByVal hWnd1&, ByVal hWnd2&, ByVal lpsz1$, ByVal lpsz2$)
Private Declare Function EnumChildWindows& Lib "user32" _
(ByVal hWndParent&, ByVal lpEnumFunc&, ByVal lParam&)
Private Declare Function GetWindowTextA& Lib "user32" _
(ByVal hwnd&, ByVal lpString$, ByVal cch&)
Private Declare Function GetWindowTextLengthA& Lib "user32" (ByVal hwnd&)

Private Function EnumChildProc&(ByVal hwnd&, ByVal lParam&)
Dim sSave As String
sSave = Space$(GetWindowTextLengthA(hwnd) + 1)
GetWindowTextA hwnd, sSave, Len(sSave)
sSave = Left$(sSave, Len(sSave) - 1)
If Len(sSave) Then
'Debug.Print sSave ' Ligne pour le test
If sSave = "Exécution" Then
SetFocus hwnd
EnumChildProc = 0
End If
End If
EnumChildProc = 1
End Function

Sub PrintDebug()
With Application
.ScreenUpdating = False
.VBE.MainWindow.Visible = True
Set .VBE.ActiveVBProject = ThisWorkbook.VBProject
End With
EnumChildWindows GetActiveWindow, AddressOf EnumChildProc, ByVal 0&
Application.VBE.CommandBars.FindControl(ID:%54).Execute
SendKeys "^{HOME}+^{END}"
SendKeys "^{INSERT}"
DoEvents
AppActivate Application.Caption
Application.Workbooks.Add
ActiveSheet.Paste
Range("A1").Select
If Cells(1, 1) <> "" Then
Application.ScreenUpdating = True
3: On Error GoTo 1
ActiveSheet.PrintOut Copies:=1
End If
2: ActiveWorkbook.Close False
Exit Sub
1: Err.Clear: On Error GoTo 0
If MsgBox("Vérifiez que l'imprimante est" & vbLf _
& "bien connectée et sous tension !", 53 _
, "Erreur impression") = 2 Then GoTo 2 Else GoTo 3
End Sub

MP

"AndréSch" a écrit dans le message de news:
#
Bonjour à tous nos experts VBA....

Peut-on rediriger debug.print sur une imprimante ? Comment

Et si c'est possible, comment savoir si elle est allumée ?

merci d'avance à vous tous

André