MARGE IMPRESSION

Signaler
Messages postés
85
Date d'inscription
mardi 6 janvier 2004
Statut
Membre
Dernière intervention
7 mai 2007
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
SIMON LEBON:
Sur VB, il semble que toute impression lancée avec l'objet printer, obéit à une marge.
Est-il possible de modifier cette marge?

Dans mon cas, je veux imprimer une form de hauteur 29 cm.
Mais le bout de cette form est coupé a environ 1 cm de la fin.

C'est super important pour mon boulot! Pleeeeeeeeeeeease.
A voir également:

9 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Il faut déja que tu valide le fait que tu ne cherches pas à imprimer en dehors des marges physiques de ton imprimante....... (29 Cm , ca laisse 7mm de marge.... soir 3.5mm de chaque coté.... pas très grand comme marge !!! )

sinon, tout dépends de ton code pour imprimer...

si tu utilises PrintForm, tu n'a je crois que très peu de controle sur ce que tu fais. Essaies de t'orienter vers un PaintPicture.

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
Messages postés
29
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
22 juin 2005

Bonjour, je pense que mon problème est similaire,

en fait je voudrais établir une marge de 2 cm à gauche à l'impression de ma textbox mais je n'y arrive pas. J'ai essayé avec ça:

Printer.ScaleMode = vbMillimeters
Printer.CurrentX = 20

mais la marge ne s'applique qu'à la première ligne de texte et pas au reste.

si quelqu'un peut m'aider ça serait sympa
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
donne moi les quelques instructions qui suivent, qui concernent l'impression.
CurrentX definit la position X courante... elle est constamment modifiée dès que qq chose est dessiné.

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
Messages postés
29
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
22 juin 2005

voici mon code en entier:

Private Sub IMPRIMER_SELECTION_Click()
Printer.Font = "Times New Roman"
Printer.FontSize = 12
Printer.ScaleMode = vbMillimeters
Printer.CurrentY = 20
Printer.Print Text1.SelText
Printer.EndDoc
End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
ok.... Print reviens a la ligne a chaque fois, et ce faisant replace CurrentX à 0 ...

pour corriger cela, il faut imprimer les lignes une a une... voici a quoi peut ressembler le code nécessaire

Dim Lignes() As String
Lignes = Split ( Text1.SelText , VbNewLine )

For i = LBound ( Lignes) to Ubound ( Lignes)
Printer.CurrentX = 20
Printer.Print Lignes(i)
Printer.CurrentY = Printer.CurrentY + 7
Next i

CurrentX = 20

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
Messages postés
29
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
22 juin 2005

Merci, ton code m'aide beaucoup; mais c'est pas encore bon; en fait la marge est appliquée aux autres lignes, mais il m'imprime deux fois la même chose à la suite; d'abord le texte avec la marge à deux centimètres (ça c'est bon) et le même texte sans la marge à la suite;
Voici mon code avec ce que tu m'a passé:

Private Sub IMPRIMER_SELECTION_Click()
Dim Lignes() As String
Lignes = Split(Text1.SelText, vbNewLine)


For i = LBound(Lignes) To UBound(Lignes)
Printer.CurrentX = 20
Printer.Print Lignes(i)
Printer.CurrentY = Printer.CurrentY + 7
Next i

Printer.ScaleMode = vbMillimeters
Printer.CurrentX = 20
Printer.Font = "Times New Roman"
Printer.FontSize = 12
Printer.Print Text1.SelText
Printer.EndDoc
End Sub

Et un autre problème c'est que ça saute une ligne entre chaque ligne - je me suis dit que c'était à cause de "Printer.CurrentY = Printer.CurrentY + 7"
donc j'ai enlevé le "+7" et la ça imprime bien mais y'a toujours les texte en double et superposé sur la fin;

merci de ton aide si tu vois pourquoi ça peut faire ça
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
normal, tu lui dit toujours d'impreimer le texte "a l'ancienne"

Private Sub IMPRIMER_SELECTION_Click()
Dim Lignes() As String
Lignes = Split(Text1.SelText, vbNewLine)

Printer.ScaleMode = vbMillimeters
Printer.Font = "Times New Roman"
Printer.FontSize = 12

For i = LBound(Lignes) To UBound(Lignes)
Printer.CurrentX = 20
Printer.Print Lignes(i)
' Printer.CurrentY = Printer.CurrentY + 7 INUTILE : Print décale tout seul le curseur afin de sauter une ligne
Next i

' Printer.Print Text1.SelText NE PAS REDESSINER LE TEXTE ....
Printer.EndDoc
End Sub

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
Messages postés
29
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
22 juin 2005

Merci! c'est génial ça marche nickel !


juste une dernière question, tant que j'y suis, pour définir la marge à droite, et celle d'en haut et d'en bas, il faut faire comment ?


Il me sembe que celle du haut ça doit être currenty, mais je sais pas trop pour le reste.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Il va falloir t'amuser avec d'autres armes, si tu veux créer une marge droite.

Je pense aux API, et plus particulièrement à DrawText.

l'avantage est que tu n'aura besoin que d'un appel pour gérer toutes tes marges, et toutes tes lignes (plus de Split)

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic