JB76000
Messages postés135Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention14 février 2013
-
2 déc. 2007 à 15:31
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
2 déc. 2007 à 17:05
Bonjour
J'utilise la fonction textout pour imprimer en appelant la fonction imprimeincliné. Mon soucis actuel est le format de ma variable ecart qui gère la position horizontale. Voici mon code
X = Grille.Width / Screen.TwipsPerPixelX
Y = Grille.Height / Screen.TwipsPerPixelY
rx = X / 800
ry = Y / 600
Printer.Print
Grille.Col = 0
ecart = (Grille.CellWidth / rx) / 56.7
Grille.Col = 1
* Retour = ImprimeIncliné ("OT", 25, ecart, "Arial", 10, 0, 0, 0, 0, 0)
En fait, cela ne m'imprime rien, comme si j'étais en dehors de la page. Un msgbox placé au niveau de l'étoile me donne une valeur pour ecart de 41 et des poussières. si je place ecart =41 juste avant ma fonction d'impression, cela fonctionne. J'ai essayé val, int, les 2 combinés mais rien à faire, ca ne marche pas. Si je met if ecart=41, ca me confirme que ecart vaut 41. Je ne trouve pas mon erreur, je suppose que c'est dans le format de la variable ecart.
JB76000
Messages postés135Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention14 février 2013 2 déc. 2007 à 16:29
J'ai fini par trouver une solution. J'ai remplacé ecart par ecart%. Toutes mes valeurs sont désormais entières. Ca fonctionne mais ça ne m'explique toujours pas pourquoi INT(ecart) ne me donnait pas le même résultat.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 déc. 2007 à 15:36
A l'examen attentif du code de ta fonction ImprimeIncliné, j'ai bien l'impression qu'une erreur y est présente en ligne 3 (ou peut-etre en ligne 1, quien sabe ?)
Tu la vois ?... non, hein... Nous non plus, d'ailleurs !
JB76000
Messages postés135Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention14 février 2013 2 déc. 2007 à 15:44
Je me doutais que j'aurais une réponse dans ce genre, mais ma fonction est tout à fait correcte. Elle vient d'une source que j'ai pris sur le site et elle fonctionne très bien. Le problème vient de la variable ecart qui a l'air de valoir 41 mais ce n'est apparement pas le cas. Je poste tout de meme le code de la fonction au cas ou.
Function ImprimeIncliné(Text, Vertic, Horiz, Nom_Fonte, Taille_Fonte, Ital, Corps, UnderL, Strik, Angle) As Long
Dim RetourFonction As Long, Contexte As Long, hauteur As Double
Printer.Print 'Initialisation du Printer.hDC (Contexte de périphérique imprimante)
Contexte = Printer.hdc 'définition du contexte de périphérique imprimante
' Conversion de la taille police (en points) en 1/10 de mm hauteur -(Taille_Fonte * 254) / 72 ' 1 point 1/72 pouce = 254/72 de 1/10 de mm
'définition du sytème de coordonnées et de l'unité logique => 0,1 mm
MapModePrevious = SetMapMode(Contexte, MM_LOMETRIC)
'Création de la police logique : les noms des paramètres sont explicites
HFont = CreateFont(hauteur, 0&, Angle, Angle, Corps, Ital, UnderL, Strik, 0&, 0&, 0&, 0&, 0&, Nom_Fonte)
'sélection de la police logique pour impression
HFontOld = SelectObject(Contexte, HFont)
'envoi du texte (dans la police sélectionnée) à l'imprimante ;
'paramètres : contexte de périphérique, coordonnées en mm, texte, longueur du texte
RetourFonction = TextOut(Contexte, 10 * Horiz, -10 * Vertic, Text, Len(Text))
RetourFonction = SetMapMode(Contexte, MapModePrevious)
'sélection de la police logique pour effacement
RetourFonction = SelectObject(Contexte, HFontOld)
'effacement de la police logique
RetourFonction = DeleteObject(HFont)
End Function