Imprimer une facture avec vb 6

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
Configuration: Windows XP
Firefox 3.5.2

5 réponses

  1. Contributeur
    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
    1. 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
    2. 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
  2. Contributeur
    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
    1. 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
  3. 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
    1. 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
  4. il suffit d'initialiser la variable dans le form_load

    Private Sub Form_Load()
    prCurrentY=4.6
    End Sub
    0
    1. merci Beaucoup
      0
  5. Contributeur
    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