Mauvais format de variable

Résolu
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013 - 2 déc. 2007 à 15:31
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 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.

Merci de m'aider
Jer

4 réponses

JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 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.

Jer
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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és 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 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

Jer
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 déc. 2007 à 17:05
D'où l'intérêt de tout typer ...

ce que tu n'as toujours pas fait, semble-t-il, y compris en ce qui concerne les paramètres de ta fonction .
Rejoignez-nous