Imprimer une facture avec vb 6

aloulo2 Messages postés 35 Statut Membre -  
aloulo2 Messages postés 35 Statut Membre -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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. aloulo2 Messages postés 35 Statut Membre
       
      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. aloulo2 Messages postés 35 Statut Membre
       
      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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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. aloulo2
       
      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. Aligator_427 Messages postés 57 Statut Membre 21
     
    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. aloulo2 Messages postés 35 Statut Membre
       
      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. Aligator_427 Messages postés 57 Statut Membre 21
     
    il suffit d'initialiser la variable dans le form_load

    Private Sub Form_Load()
    prCurrentY=4.6
    End Sub
    0
    1. aloulo2 Messages postés 35 Statut Membre
       
      merci Beaucoup
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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