Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Suite impression : format paysage ?!?

3 réponses
Avatar
Vince
Mr. troll75 m'=E0 tr=E8s bien conseill=E9 pour l'impression de=20
ma listbox mais j'aurais une nouvelle requ=EAte =E0 savoir=20
comment puis-je imprimer en format paysage afin de=20
n'avoir aucun probl=E8me de largeur pour chaque ligne=20

Merci d'avance !

Voici le code connu :

dim i, j
j =3D 1 ' nombre de lignes
Printer.FontNamee =3D "courier new"
Printer.FontSize =3D 9
Printer.Print "" ' marge haute
'
For i =3D 0 to List1.Listcount - 1
Printer.Print " " & List1.List(i) ' marge droite=20
=3D " "
j =3D j + 1
' fais un teste, je crois que c'est 66 lignes en=20
g=E9n=E9ral, disons 66,
donc
If j =3D 65 then ' fin de page
Printer.NewPage
Printer.Print "" ' marge haute
j =3D 1
Endif
Next i
Printer.Endoc

3 réponses

Avatar
le_troll
Bonsoir, j'arrive, ben tu as la façon dont on imprime le paysage
dans ma première réponse, pour ne plus avoir de problème avec les ligne,
faut qu'elles ne dépassent pas de la feuille, sinon, le principe de couper,
voire de justifier s'applique également... Qu'as-tu comme problème à
l'horizontale ?

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Vince" a écrit dans le message de
news: 242201c47d5b$a9a64a80$
Mr. troll75 m'à très bien conseillé pour l'impression de
ma listbox mais j'aurais une nouvelle requête à savoir
comment puis-je imprimer en format paysage afin de
n'avoir aucun problème de largeur pour chaque ligne

Merci d'avance !

Voici le code connu :

dim i, j
j = 1 ' nombre de lignes
Printer.FontNamee = "courier new"
Printer.FontSize = 9
Printer.Print "" ' marge haute
'
For i = 0 to List1.Listcount - 1
Printer.Print " " & List1.List(i) ' marge droite
= " "
j = j + 1
' fais un teste, je crois que c'est 66 lignes en
général, disons 66,
donc
If j = 65 then ' fin de page
Printer.NewPage
Printer.Print "" ' marge haute
j = 1
Endif
Next i
Printer.Endoc
Avatar
le_troll
Bonjour bis, je n'avais pas le temps hier, là je précise...

Imprimer à l'horizontale peut être une solution, mais ce n'est pas "la
solution", car si tu as des documents dans tous les sens, ce n'est guère
beau...

La solution à mon sens, et de couper, puis de justifier (en impression
verticale uniquement), ceci dans ton programme (pas en te servant d'autre
application qui dans le futur seraient de natures à altérer l'impression),
donc:

-1- Prendre une police proportionnelle pour éviter les complications et
aligner les éléments s'il y a lieu (couRier new) est excellente.
-2- Décider de la longueur maximum de la ligne = "lm"
-3- Par une boucle, lire et couper le texte à "lm" si c'est un blanc ou un
<rc> tu n'as rien à faire, ceci implique que dans ta boucle, tu lis octet
par octet la valeur ascii afin de savoir quand tu auras les valeurs
sus-énoncées, respectivement "32" et "13"...
-3.1- Si la coupure est inférieur à "lm", par une boucle de 1 à (lm -
longueur_de_coupure) tu rajouter un blanc à chaque blanc (ascii 32), jusqu'à
obtenir donc la longueur maxi "lm"...
-4- Si tu veux affiner, il faut tenir compte de la ponctuation espacée
(convention dactylographique), des ": ; ? !", et de réaliser un blanc
insécable qui va rattacher ta ponctuation à son mot coupé, ce qui revient
dans ce cas, à ne pas couper si un blanc est suivi d'une ponctuation
espacée, mais à couper après celle-ci.
-5- Compter le nombre de lignes pour le saut de page, et aussi toujours
prévoir tes marges sur les 4 alignement de la feuille.

Pour effectuer tout ceci, tu disposes des fonctions de recherches sur
les chaînes, de lecture des valeurs ascii (Asc)... L'avantage est que tu
peux mettre au point ta routine d'impression dans une procédure documentée,
et ainsi t'en resservir à chaque impression...

--
Merci, @+, bye, de
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Vince" a écrit dans le message de
news: 242201c47d5b$a9a64a80$
Mr. troll75 m'à très bien conseillé pour l'impression de
ma listbox mais j'aurais une nouvelle requête à savoir
comment puis-je imprimer en format paysage afin de
n'avoir aucun problème de largeur pour chaque ligne

Merci d'avance !

Voici le code connu :

dim i, j
j = 1 ' nombre de lignes
Printer.FontNamee = "courier new"
Printer.FontSize = 9
Printer.Print "" ' marge haute
'
For i = 0 to List1.Listcount - 1
Printer.Print " " & List1.List(i) ' marge droite
= " "
j = j + 1
' fais un teste, je crois que c'est 66 lignes en
général, disons 66,
donc
If j = 65 then ' fin de page
Printer.NewPage
Printer.Print "" ' marge haute
j = 1
Endif
Next i
Printer.Endoc
Avatar
ng
Salut,

<code testedúlse>

Private Sub Form_Load()
Dim i As Integer
For i = 1 To 40
Call List1.AddItem("Ligne de test ;-) #" & i)
Next
Call PrintListBox(List1, vbPRORLandscape, Me.Font) '//vbPRORPortrait
pour portrait
End Sub

Public Sub PrintListBox(oListBox As ListBox, lOrientation As Long, oFont As
StdFont)
Dim i As Long, lLinesPerPage As Long
Set Printer.Font = oFont

If lOrientation = vbPRORPortrait Then
lLinesPerPage = Printer.ScaleHeight / Printer.TextHeight("A")
Else
lLinesPerPage = Printer.ScaleWidth / Printer.TextHeight("A")
End If

Printer.Orientation = lOrientation
For i = 0 To oListBox.ListCount - 1
Printer.Print oListBox.List(i)
If i Mod lLinesPerPage = 0 Then
Call Printer.NewPage
End If
Next
Call Printer.EndDoc
End Sub

</code>

--
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/
http://apisvb.europe.webmatrixhosting.net/



Vince a écrit :

Mr. troll75 m'à très bien conseillé pour l'impression de
ma listbox mais j'aurais une nouvelle requête à savoir
comment puis-je imprimer en format paysage afin de
n'avoir aucun problème de largeur pour chaque ligne

Merci d'avance !

Voici le code connu :

dim i, j
j = 1 ' nombre de lignes
Printer.FontNamee = "courier new"
Printer.FontSize = 9
Printer.Print "" ' marge haute
'
For i = 0 to List1.Listcount - 1
Printer.Print " " & List1.List(i) ' marge droite
= " "
j = j + 1
' fais un teste, je crois que c'est 66 lignes en
général, disons 66,
donc
If j = 65 then ' fin de page
Printer.NewPage
Printer.Print "" ' marge haute
j = 1
Endif
Next i
Printer.Endoc