cs_protect
Messages postés87Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention15 mai 2011
-
4 janv. 2004 à 01:44
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
12 juin 2007 à 17:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Mais ne serait-ce pas plutôt
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge HAUTE
Bien à vous,
Programmix
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 12 juin 2007 à 12:48
Il faut splitter ta chaîne sur le vbcrlf, puis imprimer ligne par ligne.
Ca doit ressembler à quelque chose comme cà :
Remplacer Printer.Print Recherche.Twest.Text; PrinterPage par :
Dim tmp() as String
tmp = split(Recherche.Twest.Text, vbcrlf)
Dim i as integer
for i = 0 to UBound(tmp)
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge droite
Printer.Print tmp(i)
next i
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021 12 juin 2007 à 11:51
ok mais comment tu le fais.
aurais tu l'extrème amabilité de m'envoyer la ligne de code
et où il faut la placer.
voici les lignes que j'ai déja :
Printer.FontSize = Recherche.Twest.FontSize
Printer.Font = Recherche.Twest.Font
Printer.ScaleMode = vbMillimeters
Printer.ScaleLeft = 25 'indique la marge gauche de toute les lignes A TESTER
'Pour la 1ere ligne
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge droite
msg = MsgBox("Voulez vous imprimer votre recherche maintenant", vbYesNo, "Impression")
If msg = vbNo Then
MsgBox "Impression annulé", vbExclamation, ""
GoTo fin:
Else
Printer.Print Recherche.Twest.Text; PrinterPage
Printer.EndDoc
End If
fin:
Un grand merci à toi de prendre en charge les débutants en difficultés.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 11 juin 2007 à 11:02
Il faut redéfinir le CurrentY pour chaque ligne imprimée.
cs_bfb
Messages postés22Date d'inscriptionsamedi 26 juillet 2003StatutMembreDernière intervention22 mai 2021 11 juin 2007 à 10:38
slt je suis novice dans l'impression de document et je veux imprimer le contenu d'un textbox multiligne et le code que tu as mis comme tous ceux que j'ai essayé jusqu'ici me place correctement la 1ere ligne mais imprime les suivantes au bord de la page sans la marge que j'ai défini (2cm) pourais tu m'aider. 1000 mercis
colin005
Messages postés9Date d'inscriptionsamedi 9 avril 2005StatutMembreDernière intervention23 août 2006 23 août 2006 à 12:02
ou plus simple :
à la place de :
Printer.Print "Voila mon texte"
mettre :
Printer.Print "Voila mon texte de la ligne 1" + vbCrLf + "Voila mon texte de la ligne 2"
Congelli 501
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 21 juil. 2005 à 08:36
Pour l'impression multiligne, utilisez plutôt les API : DrawText est parfaite !
DarK Sidious
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 21 juil. 2005 à 08:22
dim lignes() as string
dim i as long
lignes = split(textbox1.text,vbcrlf)
for i = lbound(lignes) to ubound(lignes)
printer.print lignes(i)
next
ma question peut vous paraître idiote, mais comment fait-on pour imprimer les autre lignes si la textbox est en multiligne.
parce que là vous expliquez pour une ligne, mais personne n'utilise une feuille A4 pour une ligne :)
pcpunch
Messages postés1243Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 20195 5 janv. 2004 à 17:53
"La première ligne de la procédure : Printer.Print, est nécéssaire à l'initialisation de l'imprimante. Si on ne place pas cette ligne, l'impression restera en suspend jusqu'à la fermeture de votre programme."
Totalement faux!!!! ca sert a rien!!!! c'est la commande enddoc qui envoie le texte a l imprimante si cette commande est omise alors l'impression débutera a la fermeture du soft!!!!!!!
De plus tans qu'a faire un tuto autant le faire plus complet !! ex:
Printer.ScaleMode = vbMillimeters 'Mode Millimétres
Printer.FontSize = 20 'taille
Printer.CurrentX = 10 ' ecrit a 10mm sur axe X (a partir de gauche)
Printer.CurrentY = 20 'ecrit à 20mm sur axe y (a partir su haut)
'Ecrire du texte
Printer.Print "Voila mon texte"
'imprimer picture1 gauche 10mm, hau 10mm, largeur 100mm,hauteur 100mm
Printer.PaintPicture picture1, 10, 10, 100, 100
Etc........
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 5 janv. 2004 à 17:16
Il m'est déjà arrivé d'imprimer sans initialiser l'imprimante avec Printer.Print.
Je ne suis pas convaincu que sans cette ligne, le code reste en suspend puisque c'est l'instruction Printer.EndDoc qui donne l'ordre à l'imprimante d'imprimer ou non.
Ainsi, je peux par exemple faire plusieurs lignes d'impression puis demander en final à l'utilisateur s'il veut ou non imprimer sa feuille.
Private Sub Essai()
Printer.Print "Première ligne"
Printer.Print "Deuxième ligne"
If MsgBox("Faut-il imprimer ou non ?", vbYesNo") = vbYes Then
Printer.EndDoc
Else
Printer.KillDoc
End If
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 5 janv. 2004 à 15:26
je ne suis pas sûr,
mais il me semble que ton code ne passe pas à la ligne quand il arrive en bout de page.
Sinon, pour régler le problème, il existe une fonction qui calcule la taille que prend un texte sur un support donné. Tous les objets possedant un handle graphique exportent cette fonction, donc tu devrais la retrouver sur l'objet printer
cs_protect
Messages postés87Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention15 mai 20116 4 janv. 2004 à 01:44
scuz pour la faute reparation=>
Voici un tout petit tutorial pour imprimer une case texte
12 juin 2007 à 17:25
12 juin 2007 à 17:17
Je réagis parce qu'il me semble qu'il y a peut-être une mauvaise compréhension des "paramètres"
Je vous cite
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge droite
Mais ne serait-ce pas plutôt
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge HAUTE
Bien à vous,
Programmix
12 juin 2007 à 12:48
Ca doit ressembler à quelque chose comme cà :
Remplacer Printer.Print Recherche.Twest.Text; PrinterPage par :
Dim tmp() as String
tmp = split(Recherche.Twest.Text, vbcrlf)
Dim i as integer
for i = 0 to UBound(tmp)
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge droite
Printer.Print tmp(i)
next i
12 juin 2007 à 11:51
aurais tu l'extrème amabilité de m'envoyer la ligne de code
et où il faut la placer.
voici les lignes que j'ai déja :
Printer.FontSize = Recherche.Twest.FontSize
Printer.Font = Recherche.Twest.Font
Printer.ScaleMode = vbMillimeters
Printer.ScaleLeft = 25 'indique la marge gauche de toute les lignes A TESTER
'Pour la 1ere ligne
Printer.CurrentX = 20 'marge gauche
Printer.CurrentY = 25 'marge droite
msg = MsgBox("Voulez vous imprimer votre recherche maintenant", vbYesNo, "Impression")
If msg = vbNo Then
MsgBox "Impression annulé", vbExclamation, ""
GoTo fin:
Else
Printer.Print Recherche.Twest.Text; PrinterPage
Printer.EndDoc
End If
fin:
Un grand merci à toi de prendre en charge les débutants en difficultés.
11 juin 2007 à 11:02
11 juin 2007 à 10:38
23 août 2006 à 12:02
à la place de :
Printer.Print "Voila mon texte"
mettre :
Printer.Print "Voila mon texte de la ligne 1" + vbCrLf + "Voila mon texte de la ligne 2"
Congelli 501
21 juil. 2005 à 08:36
DarK Sidious
21 juil. 2005 à 08:22
dim i as long
lignes = split(textbox1.text,vbcrlf)
for i = lbound(lignes) to ubound(lignes)
printer.print lignes(i)
next
20 juil. 2005 à 19:23
parce que là vous expliquez pour une ligne, mais personne n'utilise une feuille A4 pour une ligne :)
5 janv. 2004 à 17:53
Totalement faux!!!! ca sert a rien!!!! c'est la commande enddoc qui envoie le texte a l imprimante si cette commande est omise alors l'impression débutera a la fermeture du soft!!!!!!!
De plus tans qu'a faire un tuto autant le faire plus complet !! ex:
Printer.ScaleMode = vbMillimeters 'Mode Millimétres
Printer.FontSize = 20 'taille
Printer.CurrentX = 10 ' ecrit a 10mm sur axe X (a partir de gauche)
Printer.CurrentY = 20 'ecrit à 20mm sur axe y (a partir su haut)
'Ecrire du texte
Printer.Print "Voila mon texte"
'imprimer picture1 gauche 10mm, hau 10mm, largeur 100mm,hauteur 100mm
Printer.PaintPicture picture1, 10, 10, 100, 100
Etc........
5 janv. 2004 à 17:16
Je ne suis pas convaincu que sans cette ligne, le code reste en suspend puisque c'est l'instruction Printer.EndDoc qui donne l'ordre à l'imprimante d'imprimer ou non.
Ainsi, je peux par exemple faire plusieurs lignes d'impression puis demander en final à l'utilisateur s'il veut ou non imprimer sa feuille.
Private Sub Essai()
Printer.Print "Première ligne"
Printer.Print "Deuxième ligne"
If MsgBox("Faut-il imprimer ou non ?", vbYesNo") = vbYes Then
Printer.EndDoc
Else
Printer.KillDoc
End If
5 janv. 2004 à 15:26
mais il me semble que ton code ne passe pas à la ligne quand il arrive en bout de page.
Sinon, pour régler le problème, il existe une fonction qui calcule la taille que prend un texte sur un support donné. Tous les objets possedant un handle graphique exportent cette fonction, donc tu devrais la retrouver sur l'objet printer
4 janv. 2004 à 01:44
Voici un tout petit tutorial pour imprimer une case texte