Impression

petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 - 6 avril 2007 à 20:26
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 7 avril 2007 à 12:08
Bonjour , j' ai un probleme avec l' impression de cadre avec la
fonction Printer.Line (l + 40, H + 5)-(l + 150, H + 20), vbBlack, B

J' ai une page pour imprimer des codebars quand je les imprimes cela fonctionne tres bien
Mais quand je revient sur l'impression avec
Printer.Line (l + 40, H + 5)-(l + 150, H + 20), vbBlack, B

il ne fait plus c' est ligne
Avez-vous une idée

Merci

7 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 avril 2007 à 21:31
Bonsoir,

Des idées et sans ton code ?
Oh oui ! plusieurs quand même !

On commence par des questions toute bêtes :
1) que sont l et H ? des variables ? coment leur valeur est-elle déterminée ? dans une boucle ou autrement ?
2) quel est donc le scalemode donné à ton objet Printer (car 150 millimètres sont très différents de 150 twips, surtout si tu es dans une boucle de l et de H)

Bref : on ne va pas continuer à jouer aux devinettes et on attend ton code commenté pour pouvoir t'éclairer en connaissance de cause ...
0
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
6 avril 2007 à 22:20
voici pour l'impression du codebare
Function Impetiq70x36() As String
' ici pour le code
Dim nbr As Integer
Dim NomPrinter As String
Dim bool As Boolean
Dim i As Integer
Dim compt As Integer
Dim x As Integer


'CommonDialog1.Action = 5
'bool = CommonDialog1.PrinterDefault
If Option1.Value = True Then
nbr = 1
Else:
nbr = 2
End If


Printer.Copies = nbr
Printer.ScaleMode = vbCentimeters
Printer.CurrentX = 1
Printer.CurrentY = 1
x = 1


For i = 1 To UBound(Barcode, 2)
If x > 22 Then
    x = 1
    Printer.NewPage
End If




    Select Case x
   
        Case 1
               Printer.CurrentX = 0
               Printer.CurrentY = 0.5
               code13ean Barcode(1, i), Printer.CurrentX, Printer.CurrentY, 0.5, Printer.ScaleMode
               Printer.Font = "Arial"
               Printer.FontSize = 12
               Printer.CurrentX = 0
               Printer.CurrentY = 1.6
               Printer.Print code
               Printer.CurrentX = 0
               Printer.CurrentY = 0
               Printer.Print Barcode(2, i)
               Printer.FontSize = 18
               Printer.CurrentX = 5
               Printer.CurrentY = 0.7
               Printer.Print Barcode(3, i) & " ?"
               x = x + 1
      End Select
Next


Printer.EndDoc
For i = 0 To 21
List1(i).Clear
Next i
List2.Clear
Text3.Text = ""
Frame2.Caption = "Page 1"
Command4.Caption = ""
ReDim Barcode(3, 0)
ro = 0i 0
ET VOICI POUR L'IMPRESSION DE MES COLONNE===
===========================================
un petit morceau
Dim pag As Integer
nomImprimante = "imprimante cloture"


For Each imprimante In Printers
     If nomImprimante = imprimante.DeviceName Then
        Set Printer = imprimante
        Exit For
    End If
Next


 


b = 0
'-----------------debut impression----------------------------


Set db = OpenDatabase(App.Path & "\manager.mdb")
Set rs = db.OpenRecordset("param")
param(1) = rs!nom
param(2) = rs!rue
param(3) = rs!commune
param(4) = rs!telephone
param(8) = rs!fax
param(5) = rs!gsm
param(6) = rs!compte
param(7) = rs!n_entrepriseIf facturation.Option1.Value True Then nbr 1If facturation.Option2.Value True Then nbr 2
Printer.Copies = (nbr)
Printer.DrawWidth = 1
Printer.CurrentX = 5
Printer.CurrentY = 5
l = Printer.CurrentX
H = Printer.CurrentY
Printer.ScaleMode = vbMillimeters
Printer.Print
Printer.Font = "Times New Roman"
Printer.Line (l + 40, H + 5)-(l + 150, H + 20), vbBlack, B 'cadre titre
'Printer.Line (L + 24, H)-(L + 24, H + 39.5), vbBlack
Printer.FontBold = True
Printer.CurrentX = l + 60 - (Len(param(1)) / 2)
Printer.CurrentY = H + 8
Printer.FontSize = 20
Printer.Print param(1) ' "STATION PILOTH"
Printer.FontBold = False
Printer.Line (l, H + 23)-(l + 57, H + 55), vbBlack, B ' cadre detail societer
Printer.FontBold = True
Printer.FontSize = 10
Printer.CurrentX = 8
Printer.CurrentY = 30
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 avril 2007 à 23:04
Bon...
Nous allons ensemble parler de choses sérieuses :

Il n'y a aucune différence entre une pictureBox et l'ibjet printer :


 


J'ai donc fait un petit test sur ma machine (et je t'engage à en faire autant), que voilà


Private Sub Command1_Click()
  Dim param(1)
  param(1) = "totototototo"
  Picture1.DrawWidth = 1
  Picture1.CurrentX = 5
  Picture1.CurrentY = 5
  l = Picture1.CurrentX
  H = Picture1.CurrentY
  Picture1.ScaleMode = vbMillimeters
  Picture1.Print
  Picture1.Font = "Times New Roman"
  Picture1.Line (l + 40, H + 5)-(l + 150, H + 20), vbBlack, B 'cadre titre
  'picture1.Line (L + 24, H)-(L + 24, H + 39.5), vbBlack
  Picture1.FontBold = True
  Picture1.CurrentX = l + 60 - (Len(param(1)) / 2)
  Picture1.CurrentY = H + 8
  Picture1.FontSize = 20
  Picture1.Print param(1) ' "STATION PILOTH"
  Picture1.FontBold = False
  Picture1.Line (l, H + 23)-(l + 57, H + 55), vbBlack, B ' cadre detail societer
  Picture1.FontBold = True
  Picture1.FontSize = 10
  Picture1.CurrentX = 8
  Picture1.CurrentY = 30
End Sub






Ru remarqueras que, dans l'ignorance totale de ce qu'il y a dans param(1), il m'a fallu tester avec une valeur arbitraire (en rouge)
et je n'ai eu aucun problème

observation toutefois : avec un chaine plus longue, le texte de param(1) déborderait di 1er cadre, dans certains cas et ne serait carrément pas imprimé dans d'autres cas (selon la longueur, si elle est très grande)

Ceci étant dit :
- tu n'y vas pas avec le dos de la cyeullère avec un scalemode en centimètres (des millimètres seraient suffisants et plus précis) mais bon.... le problème n'est pas là
- je ne vois nulle part où tu as défini les dimensions (hauteur et largeur en centimètres) de ton objet Printer... et le problème est très probablement là !...ma foi ...
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 avril 2007 à 00:27
En fait,
il y a vbMillimeters et vbCentimeters déclarés à des endroits différents...

Donc le texte est imprimé en scalemode centmètre et la bordure dessinée en millimètres
Est-ce qu'il n'y a pas conflit de valeurs L et H ?

MPi
0

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

Posez votre question
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
7 avril 2007 à 08:38
Merci d' avoir voulu m' aider , j' ai trouvé , c' est une erreur de ma pars
pour imprimer les codebares j' imprime avec :  Printer.DrawStyle = 5
alors que pour mes cadres il y avait rien , donc il gardait ce 5
j'ai remis Printer.DrawStyle = 0 avant d'imprimer mes cadres et cela fonctionne NIKEL

Encore Merci

petiflamand
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 avril 2007 à 09:01
Bonjour,

Hé bé !
Imprimer en transparent, en effet ...

Mais on ne pouvait rien voir non plus, puisque nelle part dans le code que tu nous a montré n'apparaissait que tu avais touché à cette propriété là !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 avril 2007 à 12:08
Re,
Dis-moi,
J'ai relu ton code, qui me parait bien dépendant de la police utilisée, de sa taille, etc...

Tu devrais peut-être t'intéresser à TextWidth et TextHeight (vois ton aide en ligne).
Tu en tirerais sanbs aucun doute le plus grand bénéfice pour la "cadrage" de ton impression
0
Rejoignez-nous