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 