OVH Cloud OVH Cloud

RichTextBox impression coupée

11 réponses
Avatar
Youky
Salut à tous,
mon PB est que je n'arrive pas à imprimer entierement mon controle
RichTextBox.
Impossible de dépasser les 3/4 d'une page à l'impression même si mon texte
fait 2 ou 3 pages.
Je crois avoir tout essayé, si quelqu'un peut me guider.
Dois-je utiliser Word au moment de l'impression.....la mise en page...Pfff
et comment?
Sans votre aide mon programme restera au placard.
Merçi d'avance pour la plus petite aide soit'elle.
Mais comment fait Word
Bruno

10 réponses

1 2
Avatar
LE TROLL
Bonsoir, a priori ça s'imprime comme les autres fichiers:


Printer.Print NomDuFichier.rtf
Printer.EndDoc
----------

"Youky" a écrit dans le message de news:
41e986d9$0$7133$
Salut à tous,
mon PB est que je n'arrive pas à imprimer entierement mon controle
RichTextBox.
Impossible de dépasser les 3/4 d'une page à l'impression même si mon texte
fait 2 ou 3 pages.
Je crois avoir tout essayé, si quelqu'un peut me guider.
Dois-je utiliser Word au moment de l'impression.....la mise en page...Pfff
et comment?
Sans votre aide mon programme restera au placard.
Merçi d'avance pour la plus petite aide soit'elle.
Mais comment fait Word
Bruno




Avatar
François Picalausa
Hello,

Quelle méthode emploies-tu pour imprimer ce texte?
Peut-on voir le bout de code en question?

Le code suivant imprime complètement le texte :
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelPrint

--
François Picalausa

"Youky" a écrit dans le message de news:
41e986d9$0$7133$
Salut à tous,
mon PB est que je n'arrive pas à imprimer entierement mon controle
RichTextBox.
Impossible de dépasser les 3/4 d'une page à l'impression même si mon
texte fait 2 ou 3 pages.
Je crois avoir tout essayé, si quelqu'un peut me guider.
Dois-je utiliser Word au moment de l'impression.....la mise en
page...Pfff et comment?
Sans votre aide mon programme restera au placard.
Merçi d'avance pour la plus petite aide soit'elle.
Mais comment fait Word
Bruno


Avatar
FoxTrot
Bonjour/soir à tous, Youky a dit :

Eventuellement, pourrais-tu poster le code que tu utilises ?

--
FoxTrot
Avatar
Youky
Merçi à vous
j'ai testé vos réponses, cela ne fonctionne toujours pas.
voiçi mon code, à savoir mon controle RichTextBox est nommé txt et est dans
une feuille MDI.

Private Sub Mimprimer_Click()
Printer.Print ""
ActiveForm.txt.SelPrint (Printer.hDC)
Printer.EndDoc

Exit Sub

'autre solution
On Error GoTo fin
dlg.Flags = cdlPDReturnDC + cdlPDNoPageNums
If ActiveForm.txt.SelLength = 0 Then
dlg.Flags = dlg.Flags + cdlPDAllPages
Else
dlg.Flags = dlg.Flags + cdlPDSelection
End If
dlg.ShowPrinter
Printer.Print ""
ActiveForm.txt.SelPrint (Printer.hDC)
Printer.EndDoc
fin:
End Sub

"Youky" a écrit dans le message news:
41e986d9$0$7133$
Salut à tous,
mon PB est que je n'arrive pas à imprimer entierement mon controle
RichTextBox.
Impossible de dépasser les 3/4 d'une page à l'impression même si mon texte
fait 2 ou 3 pages.
Je crois avoir tout essayé, si quelqu'un peut me guider.
Dois-je utiliser Word au moment de l'impression.....la mise en page...Pfff
et comment?
Sans votre aide mon programme restera au placard.
Merçi d'avance pour la plus petite aide soit'elle.
Mais comment fait Word
Bruno




Avatar
ng
Salut,

As-tu bien mis les
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
avant le selprint comme te l'a dit Francois ?
Car chez moi ceci fonctionne très bien.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Youky wrote:
Merçi à vous
j'ai testé vos réponses, cela ne fonctionne toujours pas.
voiçi mon code, à savoir mon controle RichTextBox est nommé txt et
est dans une feuille MDI.

Private Sub Mimprimer_Click()
Printer.Print ""
ActiveForm.txt.SelPrint (Printer.hDC)
Printer.EndDoc

Exit Sub

'autre solution
On Error GoTo fin
dlg.Flags = cdlPDReturnDC + cdlPDNoPageNums
If ActiveForm.txt.SelLength = 0 Then
dlg.Flags = dlg.Flags + cdlPDAllPages
Else
dlg.Flags = dlg.Flags + cdlPDSelection
End If
dlg.ShowPrinter
Printer.Print ""
ActiveForm.txt.SelPrint (Printer.hDC)
Printer.EndDoc
fin:
End Sub

"Youky" a écrit dans le message news:
41e986d9$0$7133$
Salut à tous,
mon PB est que je n'arrive pas à imprimer entierement mon controle
RichTextBox.
Impossible de dépasser les 3/4 d'une page à l'impression même si mon
texte fait 2 ou 3 pages.
Je crois avoir tout essayé, si quelqu'un peut me guider.
Dois-je utiliser Word au moment de l'impression.....la mise en
page...Pfff et comment?
Sans votre aide mon programme restera au placard.
Merçi d'avance pour la plus petite aide soit'elle.
Mais comment fait Word
Bruno




Avatar
Youky
Salut bien Nicolas,
Je viens de refaire l'essai et toujours pareil
j'ai refais un fichier word et enregistré en RTF en écrivant de 1 à 50 en
taille font de 12
je le charge dans ma feuille MDI et j'imprime seulement jusqu'a 40 alors que
je vois que tout est bien selectionné à 50
mon code:
Printer.Print ""
ActiveForm.txt.SelStart = 0
ActiveForm.txt.SelLength = Len(ActiveForm.txt.Text)
ActiveForm.txt.SelPrint (Printer.hDC)
Printer.EndDoc

je vais retester sans être en MDI

"ng" a écrit dans le message news:
OzWSwU7#
Salut,

As-tu bien mis les
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
avant le selprint comme te l'a dit Francois ?
Car chez moi ceci fonctionne très bien.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Youky wrote:
> Merçi à vous
> j'ai testé vos réponses, cela ne fonctionne toujours pas.
> voiçi mon code, à savoir mon controle RichTextBox est nommé txt et
> est dans une feuille MDI.
>
> Private Sub Mimprimer_Click()
> Printer.Print ""
> ActiveForm.txt.SelPrint (Printer.hDC)
> Printer.EndDoc
>
> Exit Sub
>
> 'autre solution
> On Error GoTo fin
> dlg.Flags = cdlPDReturnDC + cdlPDNoPageNums
> If ActiveForm.txt.SelLength = 0 Then
> dlg.Flags = dlg.Flags + cdlPDAllPages
> Else
> dlg.Flags = dlg.Flags + cdlPDSelection
> End If
> dlg.ShowPrinter
> Printer.Print ""
> ActiveForm.txt.SelPrint (Printer.hDC)
> Printer.EndDoc
> fin:
> End Sub
>
> "Youky" a écrit dans le message news:
> 41e986d9$0$7133$
>> Salut à tous,
>> mon PB est que je n'arrive pas à imprimer entierement mon controle
>> RichTextBox.
>> Impossible de dépasser les 3/4 d'une page à l'impression même si mon
>> texte fait 2 ou 3 pages.
>> Je crois avoir tout essayé, si quelqu'un peut me guider.
>> Dois-je utiliser Word au moment de l'impression.....la mise en
>> page...Pfff et comment?
>> Sans votre aide mon programme restera au placard.
>> Merçi d'avance pour la plus petite aide soit'elle.
>> Mais comment fait Word
>> Bruno




Avatar
François Picalausa
Hello,

Je ne sais pas si ça peut arranger quelquechose, mais
Printer.Print ""
Printer.EndDoc
ne sont pas requis (et provoquent même une erreur sur une imprimante
virtuelle ici...)

Contrairement à ce que j'avais indiqué dans mon exemple, il faut aussi
corriger
RichTextBox1.SelLength = Len(RichTextBox1.Text)
Par
RichTextBox1.SelLength = 0
Car, je pense, la longueur du texte peut être inférieure a la longueur du
contenu.
Avec une sélection vide, le richtextbox considère qu'il faut imprimer tout
le contenu.

--
François Picalausa

"Youky" a écrit dans le message de news:
41ea47a9$0$6428$
Salut bien Nicolas,
Je viens de refaire l'essai et toujours pareil
j'ai refais un fichier word et enregistré en RTF en écrivant de 1 à
50 en taille font de 12
je le charge dans ma feuille MDI et j'imprime seulement jusqu'a 40
alors que je vois que tout est bien selectionné à 50
mon code:
Printer.Print ""
ActiveForm.txt.SelStart = 0
ActiveForm.txt.SelLength = Len(ActiveForm.txt.Text)
ActiveForm.txt.SelPrint (Printer.hDC)
Printer.EndDoc

je vais retester sans être en MDI


Avatar
Youky
L'impression s'arrête à la ligne 40, Pkoi ?
pour vous guider voici qlq lignes
j'ai fais un RichTextbox nommé txt et est fait 2 boutons
le 1er écrit de 1 à 50 et le second imprime
à savoir j'ai mis les propriété font de mon txt Time new Roman taille 12
de plus testé sur 3 PC donc c'est pas un PB de PC
voici mon adresse Email si vous souhaitez m'envoyer un fichier pour me
prouver que cela marche.


Private Sub Command1_Click()
For k = 1 To 50
txt.Text = txt.Text & k & Chr(10)
Next
End Sub

Private Sub Command2_Click()
Printer.Print ""
txt.SelStart = 0
txt.SelLength = 0 'Len(ActiveForm.txt.Text)
txt.SelPrint (Printer.hDC)
Printer.EndDoc
End Sub

"François Picalausa" a écrit dans le message news:
uOKFTg8#
Hello,

Je ne sais pas si ça peut arranger quelquechose, mais
Printer.Print ""
Printer.EndDoc
ne sont pas requis (et provoquent même une erreur sur une imprimante
virtuelle ici...)

Contrairement à ce que j'avais indiqué dans mon exemple, il faut aussi
corriger
RichTextBox1.SelLength = Len(RichTextBox1.Text)
Par
RichTextBox1.SelLength = 0
Car, je pense, la longueur du texte peut être inférieure a la longueur du
contenu.
Avec une sélection vide, le richtextbox considère qu'il faut imprimer tout
le contenu.

--
François Picalausa

"Youky" a écrit dans le message de news:
41ea47a9$0$6428$
> Salut bien Nicolas,
> Je viens de refaire l'essai et toujours pareil
> j'ai refais un fichier word et enregistré en RTF en écrivant de 1 à
> 50 en taille font de 12
> je le charge dans ma feuille MDI et j'imprime seulement jusqu'a 40
> alors que je vois que tout est bien selectionné à 50
> mon code:
> Printer.Print ""
> ActiveForm.txt.SelStart = 0
> ActiveForm.txt.SelLength = Len(ActiveForm.txt.Text)
> ActiveForm.txt.SelPrint (Printer.hDC)
> Printer.EndDoc
>
> je vais retester sans être en MDI




Avatar
François Picalausa
Hello,

Pour l'impression, j'ai utilisé deux imprimantes virtuelles différentes:
- PDF Creator
http://sourceforge.net/projects/pdfcreator/
- Microsoft Office Document Image Writer
(fournit avec Microsoft Office 2003)

Voici mon code complet:
'Une form avec
' - un command button (Command1), pour l'impression
' - Un richtextbox RichTextBox1
'Toutes les propriétés par défaut, si ce n'est le caption de Command1 =
"Imprimer"
Option Explicit

Private Sub Command1_Click()
Debug.Print Printer.DeviceName
RichTextBox1.SelLength = 0
RichTextBox1.SelPrint Printer.hDC
End Sub

Private Sub Form_Load()
Dim i As Long

'On va imprimer quelques 300 lignes dans le RTB
'4 pages
RichTextBox1.Text = ""

For i = 1 To 300
AddLine "Ligne " & i
Next i
End Sub

Private Sub AddLine(Text As String)

'Affreux bidouillage pour déterminer (dépasser) la longueur
RichTextBox1.SelStart = LenB(RichTextBox1.TextRTF)

'Ajout de la ligne
RichTextBox1.SelText = Text & vbCrLf
End Sub

Vu que ce code fonctionne ici, la seule chose qui pourrait, à mon sens,
poser problème sont les lignes :
Printer.Print ""
Printer.EndDoc

Cette dernière ligne génère une erreur avec Microsoft Office Document Image
Writer (non testé avec PDF Creator)... donc pourrait avec un autre pilote
d'imprimante poser problème, je suppose... mais ce n'est qu'une supposition!
Quand a savoir pourquoi la ligne 40, je n'en sais trop rien....

Il y a bien une autre différence dans ton code: l'utilisation de chr(10) au
lieu du 13 et 10 (vbLf au lieu de vbCrLf), mais le problème ne semble pas
venir de là car dans mon code, quand j'utise vbLf, je ne constate pas de
problèmes...

--
François Picalausa

"Youky" a écrit dans le message de news:
41ea7320$0$6416$
L'impression s'arrête à la ligne 40, Pkoi ?
pour vous guider voici qlq lignes
j'ai fais un RichTextbox nommé txt et est fait 2 boutons
le 1er écrit de 1 à 50 et le second imprime
à savoir j'ai mis les propriété font de mon txt Time new Roman
taille 12 de plus testé sur 3 PC donc c'est pas un PB de PC
voici mon adresse Email si vous souhaitez m'envoyer un fichier pour me
prouver que cela marche.


Private Sub Command1_Click()
For k = 1 To 50
txt.Text = txt.Text & k & Chr(10)
Next
End Sub

Private Sub Command2_Click()
Printer.Print ""
txt.SelStart = 0
txt.SelLength = 0 'Len(ActiveForm.txt.Text)
txt.SelPrint (Printer.hDC)
Printer.EndDoc
End Sub


Avatar
Youky
Re:Bonsoir François,
J'ai fais exactement comme tu l'as indiqué, hélas mon imprimante n'est pas
virtuelle.
Sans le printer.print et le printer.enddoc rien ne se passe, donc j'ai remis
ces 2 lignes et
à l'impression arret à Ligne40.
je parle pas assez l'Anglais pour le site indiqué.
Je tourne avec VB5 et Word2000 et Win 98SE et Acrobat reader en lecture
Merçi encore pour tes renseignements Bruno
"François Picalausa" a écrit dans le message news:
OP4bgD##
Hello,

Pour l'impression, j'ai utilisé deux imprimantes virtuelles différentes:
- PDF Creator
http://sourceforge.net/projects/pdfcreator/
- Microsoft Office Document Image Writer
(fournit avec Microsoft Office 2003)

Voici mon code complet:
'Une form avec
' - un command button (Command1), pour l'impression
' - Un richtextbox RichTextBox1
'Toutes les propriétés par défaut, si ce n'est le caption de Command1 > "Imprimer"
Option Explicit

Private Sub Command1_Click()
Debug.Print Printer.DeviceName
RichTextBox1.SelLength = 0
RichTextBox1.SelPrint Printer.hDC
End Sub

Private Sub Form_Load()
Dim i As Long

'On va imprimer quelques 300 lignes dans le RTB
'4 pages
RichTextBox1.Text = ""

For i = 1 To 300
AddLine "Ligne " & i
Next i
End Sub

Private Sub AddLine(Text As String)

'Affreux bidouillage pour déterminer (dépasser) la longueur
RichTextBox1.SelStart = LenB(RichTextBox1.TextRTF)

'Ajout de la ligne
RichTextBox1.SelText = Text & vbCrLf
End Sub

Vu que ce code fonctionne ici, la seule chose qui pourrait, à mon sens,
poser problème sont les lignes :
Printer.Print ""
Printer.EndDoc

Cette dernière ligne génère une erreur avec Microsoft Office Document


Image
Writer (non testé avec PDF Creator)... donc pourrait avec un autre pilote
d'imprimante poser problème, je suppose... mais ce n'est qu'une


supposition!
Quand a savoir pourquoi la ligne 40, je n'en sais trop rien....

Il y a bien une autre différence dans ton code: l'utilisation de chr(10)


au
lieu du 13 et 10 (vbLf au lieu de vbCrLf), mais le problème ne semble pas
venir de là car dans mon code, quand j'utise vbLf, je ne constate pas de
problèmes...

--
François Picalausa

"Youky" a écrit dans le message de news:
41ea7320$0$6416$
> L'impression s'arrête à la ligne 40, Pkoi ?
> pour vous guider voici qlq lignes
> j'ai fais un RichTextbox nommé txt et est fait 2 boutons
> le 1er écrit de 1 à 50 et le second imprime
> à savoir j'ai mis les propriété font de mon txt Time new Roman
> taille 12 de plus testé sur 3 PC donc c'est pas un PB de PC
> voici mon adresse Email si vous souhaitez m'envoyer un fichier pour me
> prouver que cela marche.
>
>
> Private Sub Command1_Click()
> For k = 1 To 50
> txt.Text = txt.Text & k & Chr(10)
> Next
> End Sub
>
> Private Sub Command2_Click()
> Printer.Print ""
> txt.SelStart = 0
> txt.SelLength = 0 'Len(ActiveForm.txt.Text)
> txt.SelPrint (Printer.hDC)
> Printer.EndDoc
> End Sub




1 2