Imprimer une facture avec vb 6

Fermé
aloulo2 Messages postés 28 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 7 mai 2010 - 3 févr. 2010 à 12:45
aloulo2 Messages postés 28 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 7 mai 2010 - 25 févr. 2010 à 02:18
Bonjour,
je veux imprimer une facture j'ai pu imprimer l'en-tête,
le problème c'est que lorsque on clic sur un bouton et après avoir faire les saisie nécessaire je veux d'une une nouvelle ligne s'ajoute a la même facture
A voir également:

5 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 févr. 2010 à 13:46
Bonjour,
Deux solutions,
Tu ne met pas EndDoc après avoir imprimer l'entête, commande qui termine la page.
Ou tu saisi tout le document (facture) et ensuite tu l'imprime.
A+
0
aloulo2 Messages postés 28 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 7 mai 2010
4 févr. 2010 à 12:03
La même forme et utiliser pour saisir les différant ligne de facture commet faire sachent due je ne connais as le nombre de ligne d’avance, pour chaque clic sur un bouton le programme doit ajourer les informations et le traçage nécessaire
0
aloulo2 Messages postés 28 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 7 mai 2010
25 févr. 2010 à 02:18
Salut
Comment faire pour arrondir un nombre a 3 chiffre après la virgule, si le quatrième chiffre et supérieur à 4 donc ajouter 1 au troisième chiffre et enlevé le quatrième et ceux qui sont a sa droite par exemple j’ai une variable de type long et qui contient la valeur (123456. 7887457) donc elle sera (123456.789) ?
Comment faire pour obtenir les chiffres qui sont placé après la virgule (après avoir faire l’arrondissement) c-a -d (789) ?
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 févr. 2010 à 12:17
Si je comprend bien !!
Tu envoi l'entête à l'imprimante.. ensuite ont clic sur des boutons et il faut ajouter des lignes ? et cela plusieur fois ?
Si c'est comme cela tu a aussi 2 solutions,
Sur la forme mettre un textbox qui recevra les dommnées à la place de l'imprimante, quand le mise en page est terminée tu imprime le texte.
Ou bien tu envoi à l'imprimante au fur et à mesure de la sélection, sans EndDoc, t'inqiète pas, l'imprimante ne démarre pas mais c'est dans son tampon, ça ne sortira qu'avec le EndDoc ou suivant la configuration, lorsqu'une page est remplie.
A+
0
Avant tous je vous remercie énormément pour vos réponses à mes problèmes

J’ai pu faire un bouton(Command2_Click()) qui ajoute du texte dans le tampon et j’ai mis le EndDoc dans un autre bouton(Command1_Click()), le problème c’est que je veux que a chaque clic sur bouton(Command2_Click()) il y’aura du texte qui s’ajoute dans le tampon mai je donne a Printer.CurrentY une valeur qui change(je l’incrémente par une constante) a chaque exécution de (Command2_Click()) pour que la ligne suivent se place ou dessous de la précédant

Commet faire ?

Voici mon code :

Private Sub Command2_Click()

yh = yh + cyh

Printer.CurrentX = 1

Printer.CurrentY = yh

Printer.ScaleMode = 7

Printer.FontName = "Forte"

Printer.FontSize = 10

Printer.Print "_________________________________________________________________________________________________________"



End Sub



Private Sub Command1_Click()



Printer.EndDoc

End Sub
0
Aligator_427 Messages postés 54 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 21 février 2010 21
5 févr. 2010 à 11:30
Je ne sais pas si j'ai bien tout compris. Ce que tu dis doit fonctionner.
Ton code me semble correct, à part qu'il ne gère pas le passage d'une page à l'autre (prévoir également, si nécessaire, une gestion de la longueur de la chaine de caractère à ajouter)

D'abord, il faut stocker le currentY dans une variable; dans les déclarations générales:
Dim prCurrentY As Single

Private Sub Command2_Click()
dim strPrint as String

strPrint=InputBox("String à imprimer")

Printer.ScaleMode = 7 'centimetres
Printer.CurrentX = 1

prCurrentY=prCurrentY + cyh 'où cyh représente ta constante d'intervalle de ligne

If Printer.CurrentY<=20 then
Printer.CurrentY = prCurrentY
Else
Printer.NewPage
Printer.CurrentY=1
End If

Printer.FontName = "Forte"
Printer.FontSize = 10
Printer.Print strPrint

End Sub

Private Sub Command1_Click()

Printer.EndDoc

End Sub
0
aloulo2 Messages postés 28 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 7 mai 2010
5 févr. 2010 à 13:38
Votre solution et idéal sauf que le prCurrentY ne doit pas commencer par (0) il doit prendre une valeur au dépare (4.6) « pour laisser de la place pour l’en-tête »
0
Aligator_427 Messages postés 54 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 21 février 2010 21
5 févr. 2010 à 14:31
il suffit d'initialiser la variable dans le form_load

Private Sub Form_Load()
prCurrentY=4.6
End Sub
0
aloulo2 Messages postés 28 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 7 mai 2010
5 févr. 2010 à 15:33
merci Beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 févr. 2010 à 14:38
Si tu veux écrire la ligne suivante en dessous, il n'y a pas besoin de déterminer le curent.x suffit de metrre
Printer.print "Le texte à imprimer" & Chr(13) >> ou chr(10) me rapel plus.
La ligne suivante sera automatiquement imprimée en dessous.
Si tu veux indenter la ligne tu peu aussi ajouter Tab(x) >> (x étant le nombre de tabulation(s))
De cette façon toutes tes lignes seront alignées.
PS: la commande Printer.Print "" >> ajoute une ligne d'espace
:Et tu devrait commencer par mettre l'entête, ça éviterait de devoir y laisser de la place.
Je trouve que tu te complique la vie inutilement, il est plus simple d'employer les commandes simple sauf si la mise en page est compliquée,.

0