Alignement à l'impression [Résolu]

jiel2007 17 Messages postés mercredi 2 mars 2011Date d'inscription 10 septembre 2011 Dernière intervention - 8 mars 2011 à 10:30 - Dernière réponse : cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention
- 10 mars 2011 à 12:01
Bonjour à tous,

Voici quelques jours, j'avais laissé un message suite à un problème rencontré pour imprimer sous VB 2008 Express.

Grâce à un lien qui m?a été fourni sur le site ( merci ) , j'ai pu découvrir l'excellente notice Impression sous vb 6.0 de Développez.com.

Fort de ces infos, j'ai écrit un petit module d'impression utilisant une RichTextBox. Quand je l'exécute, mes données ( un fichier de 250 lignes de 70 caractères ) s'y affichent parfaitement et toutes mes colonnes sont parfaitement alignées.
Par contre sur la sortie papier les colonnes ne sont plus du tout alignées et me font plus penser à un mur d'escalade qu'a des données imprimées?

A la création du fichier, je complète chaque donnée pour qu'elles aient la même longueur par des blancs ( espaces représentés par des + dans l'exemple ).

Exemple :

La RichTextBox affiche
1A-PRI++MAGLOIRE+++++++++AMANDINE+++++++++11111111101
1A-PRI++MONTSFAUCONS+++++ANELISE++++++++++11111111103
1A-PRI++PLANCENOIX+++++++JUSTIN+++++++++++11111111102

Et sur papier j'obtiens
1A-PRI++MAGLOIRE++++++++AMANDINE+++++++++11111111101
1A-PRI++MONTSFAUCONS++++++++ANELISE++++++++++11111111103
1A-PRI++PLANCENOIX+++++++JUSTIN+++++++++++11111111102

J'ai essayé en changeant la police de caractères ( Arial, Courrier, Calibri? ) mais le résultat est toujours le même : parfait dans le RichTextBox et en dents de scie sur le papier.

Quelqu'un aurait-il une idée d'où cela provient et comment résoudre ce problème car même si le document est parfaitement lisible, comme on dit : « pas beau l'imprimé ».

Un grand merci à vous tous?
Jean-Luc
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
JPGVB 96 Messages postés mardi 29 mars 2005Date d'inscription 10 mars 2011 Dernière intervention - 8 mars 2011 à 11:47
3
Merci
Bonjour,
tu dois probablement utiliser une police avec des caractères de largeur fixe dans ton richtextbox, mais pas à l'impression.
Les solutions probables: même police dans les deux cas (ces polices de largeur fixe ne sont pas toujours esthétiques) ou décomposer tes lignes à l'impression (ce qui risque de te compliquer la vie si tu imprimes le contenu d'un bloc).

Merci JPGVB 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de JPGVB
Meilleure réponse
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 8 mars 2011 à 14:21
3
Merci
Bonjour,

Comme le dit JPGVB tu ne dois pas avoir les mêmes polices dans ton RichTtextBox et à l'impression.
Il te faut donc utiliser à l'impression une police non proportionnelle comme Courier New, les lettres ayant toutes la même chasse (largeur).
Le fait de tricher avec les espaces n'est qu'un pis aller car avec une police proportionnelle (comme Arial) la largeur de la lettre est égale à son dessin (un I étant moins large qu'un W).
Au lieu d'un RichTextBox tu devrais utiliser un MSHFlexGrid, tu aurais une meilleure présentation à l'écran et à l'impression en utilisant la virgule pour séparer les cellules tu pourras jouer ainsi avec les tabulations. Quelle que soit la police utilisée tu auras toujours un alignement de tes données.
Ce qui t'éviteras aussi le problème fastidieux de décomposer ton texte à partir du RichTextBox.

Cheyenne

Merci cs_cheyenne 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_cheyenne
Meilleure réponse
jiel2007 17 Messages postés mercredi 2 mars 2011Date d'inscription 10 septembre 2011 Dernière intervention - 8 mars 2011 à 17:16
3
Merci
Merci à JPGVB et Cheyenne pour leurs conseils. Je vais faire un premier essai en utilisant une police non proportionnelle et ensuite un autre avec un FlexGrid.

Merci jiel2007 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jiel2007
Meilleure réponse
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 9 mars 2011 à 10:15
3
Merci
Bonjour,

Si tu utilises un MSHFlexGrid, je t'avais indiqué que tu pouvais aligner tes colonnes à l'aide de tabulations faites avec la virgule.
Cette solution manquant de souplesse, car il y a une tabulation par pas de 14, il est préférable d'utiliser Tab().

With maGrille
   For ligne = 0 To .Rows - 1
      Printer.Print Tab(t0); .TextMatrix(ligne, 0);
      Printer.Print Tab(t1); .TextMatrix(ligne, 1);
      Printer.Print Tab(t2); .TextMatrix(ligne, 2);
      Printer.Print Tab(t3); .TextMatrix(ligne, 3)
   Next ligne
End With

t0, c'est la marge de gauche.
Ensuite tu définis t1, t2 et t3 en fonction des mots les plus longs de chaque colonne.
Si tu utilises à l'impression une police proportionnelle, tu ajoutes à tes tabulations une marge d'erreur, sinon tu te bases sur le nombre de caractères du mot le plus long dans chaque colonne +1.
Tu peux même te payer le luxe de mettre des colonnes en italique et/ou en gras ou changer de police.
Cette solution, à mon avis, me parait beaucoup plus souple qu'avec le RichTextBox, c'est à toi de voir selon ce que tu désires au final.

Cheyenne

Merci cs_cheyenne 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_cheyenne
Meilleure réponse
jiel2007 17 Messages postés mercredi 2 mars 2011Date d'inscription 10 septembre 2011 Dernière intervention - 9 mars 2011 à 13:44
3
Merci
Je viens d'essayer en utilisant la police Courier New et effectivement, tout est bien aligné à l'impression. Dès que j'aurais un peu de temps libre, j'essaierai à partir d'un MSHFlexGrid car en effet les polices non proportionnelles ne sont pas des plus agréables.

Un grand merci pour l'aide et le code car je suis quelque peu déformé par ce que j'avais appris il y a près de 25 ans avec le GW Basic ( ou l'impression se limitait quasi à LPrint ou LPrint tab())...

Jean-Luc

Merci jiel2007 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jiel2007
Meilleure réponse
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 9 mars 2011 à 23:42
3
Merci
> Jean-Luc : pour plus d'aide je t'ai envoyé un message personnel sur ce site. Consultes, stp, ta boîte de réception.

Cheyenne

Merci cs_cheyenne 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_cheyenne
Meilleure réponse
jiel2007 17 Messages postés mercredi 2 mars 2011Date d'inscription 10 septembre 2011 Dernière intervention - 10 mars 2011 à 07:35
3
Merci
Cheyenne,

Merci pour le message et les explications. Je viens d'en prendre connaissance. En fait, je travaille dans l'enseignement et je souhaite écrire un programme pour la gestion du suivi des garderies dans mon école( c'est une petite école primaire qui compte 350 stroumphs et stroumphettes ).

Dans un même temps, je découvre vb 2008 et je constate que pour pas mal de choses, je dois oublier GW Basic. Je me donnes donc jusqu'à la prochaine rentrée scolaire de septembre pour écrire le programme de façon à le mettre en test de septembre à décembre avant une première utilisation sur une année civile entière (2012).

Je sais déjà que je rencontrerai des petits problèmes et selon ta proposition, dans ce cas, je prendrai contact avec toi.

Un grand merci pour ton dynamisme.
Jean-Luc

PS : Comment fait-on sur le site pour envoyer un message en direct sans passer par le forum ?

Merci jiel2007 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jiel2007
Meilleure réponse
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 10 mars 2011 à 12:01
3
Merci
Bonjour jiel2007,

Pour envoyer un message privé tu cliques sur l'icône personnelle à gauche au dessus du pseudo de la personne que tu désires contacter et tu accèdes à sa fiche.
Arrivé là, tu cliques sur "Ecrire un message privé".

Attention, la proposition d'aide ne vaut que pour VB6 et non pas pour VB 2008.

Bonne prog. et au plaisir de te lire,

Cheyenne

Merci cs_cheyenne 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_cheyenne

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.