Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

impression texte

13 réponses
Avatar
jc2nantes
Bonjour,

Voila ce que je cerche à faire...

Insérer des sauts de ligne dans une chaine de caractères de longueur
variable.

Au départ j'ai

a$ = "abcde lksqfd lqksdied qlkdj dazdd zd kzje zaeazelaze azazazaza"
par exemple

et je veux obtenir

a$ = ""abcde lksqfd lqksdied" & Chr(13) & "qlkdj dazdd zd kzje
zaeazelaze" & Chr(13) & "azazazaza"

sachant que chaque portion de la chaine ne doit pas exceder X caractères et
que ça ne doit pas couper au mileu d'un mot... (on va pas gerer les cesures
quand meme!!!)

Si vous avez une idée, je prends !!!

Merci,

JC

10 réponses

1 2
Avatar
Aski
jc2nantes wrote:
Bonjour,

Voila ce que je cerche à faire...

Insérer des sauts de ligne dans une chaine de caractères de longueur
variable.

Au départ j'ai

a$ = "abcde lksqfd lqksdied qlkdj dazdd zd kzje zaeazelaze
azazazaza" par exemple

et je veux obtenir

a$ = ""abcde lksqfd lqksdied" & Chr(13) & "qlkdj dazdd zd kzje
zaeazelaze" & Chr(13) & "azazazaza"

sachant que chaque portion de la chaine ne doit pas exceder X
caractères et que ça ne doit pas couper au mileu d'un mot... (on va
pas gerer les cesures quand meme!!!)

Si vous avez une idée, je prends !!!

Merci,

JC



Tu fais une boucle Do Loop qui détermine la chaîne ayant la longueur
(Objet.Width) de la ligne.
Ensuite, tu recherches la première occurrence de Chr$(32) par exemple, à
partir de la fin de la chaîne avec InStrRev().
Avatar
Jacques93
Bonjour jc2nantes,
jc2nantes a écrit :
Bonjour,

Voila ce que je cerche à faire...

Insérer des sauts de ligne dans une chaine de caractères de longueur
variable.

Au départ j'ai

a$ = "abcde lksqfd lqksdied qlkdj dazdd zd kzje zaeazelaze azazazaza"
par exemple

et je veux obtenir

a$ = ""abcde lksqfd lqksdied" & Chr(13) & "qlkdj dazdd zd kzje
zaeazelaze" & Chr(13) & "azazazaza"

sachant que chaque portion de la chaine ne doit pas exceder X caractères et
que ça ne doit pas couper au mileu d'un mot... (on va pas gerer les cesures
quand meme!!!)

Si vous avez une idée, je prends !!!

Merci,

JC



Vu que c'est destiné à l'impression, il serait bon de savoir si tu es en
police fixe ou proportionnelle, et dans les deux cas connaître la taille
de cette police. Le nombre maximum de caractères ne me semble pas adapté
, il faudrait plutôt connaître la largeur maximum d'une ligne, mais
peut être ai je mal compris ton objectif.

--
Cordialement,

Jacques.
Avatar
Jean-marc
jc2nantes wrote:
Bonjour,

Voila ce que je cerche à faire...

Insérer des sauts de ligne dans une chaine de caractères de longueur
variable.

Au départ j'ai

a$ = "abcde lksqfd lqksdied qlkdj dazdd zd kzje zaeazelaze
azazazaza" par exemple

et je veux obtenir

a$ = ""abcde lksqfd lqksdied" & Chr(13) & "qlkdj dazdd zd kzje
zaeazelaze" & Chr(13) & "azazazaza"

sachant que chaque portion de la chaine ne doit pas exceder X
caractères et que ça ne doit pas couper au mileu d'un mot... (on va
pas gerer les cesures quand meme!!!)




Hello,

Si c'est pour justifier du texte avec une police à empattement fixe
(Courrier par exemple) alors j'ai une fonction toute faite pour toi.

C'est du code que j'avais écrit il y a un an ou 2 et que j'ai placé
sur VBFrance :
http://www.vbfrance.com/codes/JUSTIFICATION-TEXTE_36370.aspx

C'est du code que j'ai écrit pour justifier de longs paragraphes de
texte pur. Le code est très simple à lire et abondamment commenté.

Si c'est pour aligner du texte avec une police quelconque, alors
comme le dis Jacques, alors il faut utiliser des techniques différentes
en utilisant entre autre textWidth (mais aussi un peu du principe de ce
code).

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Jean-marc
Jean-marc wrote:

Hello,

Si c'est pour justifier du texte avec une police à empattement fixe
(Courrier par exemple) alors j'ai une fonction toute faite pour toi.



Si c'est pour aligner du texte avec une police quelconque, alors
comme le dis Jacques, alors il faut utiliser des techniques
différentes en utilisant entre autre textWidth (mais aussi un peu du
principe de ce code).



J'ajoute tout de même que pour que ce soit utilisable pour des sorties
graphiques avec n'importe quelle police, il y a en fait très très peu
de choses à modifier dans ce code.
Il suffit d'utiliser la longueur de la ligne au lieu du nombre max de
caractères, et d'utiliser la somme des textWidth() au lieu du nombre de
caractères. C'est faisable en 1 heure ou 2, tests compris.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
LE TROLL
couRier = 1 R

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-marc"
a écrit
dans le message de news:
465477c9$0$14234$
| jc2nantes wrote:
| > Bonjour,
| >
| > Voila ce que je cerche à faire...
| >
| > Insérer des sauts de ligne dans une chaine de
caractères de longueur
| > variable.
| >
| > Au départ j'ai
| >
| > a$ = "abcde lksqfd lqksdied qlkdj dazdd zd
kzje zaeazelaze
| > azazazaza" par exemple
| >
| > et je veux obtenir
| >
| > a$ = ""abcde lksqfd lqksdied" & Chr(13) &
"qlkdj dazdd zd kzje
| > zaeazelaze" & Chr(13) & "azazazaza"
| >
| > sachant que chaque portion de la chaine ne
doit pas exceder X
| > caractères et que ça ne doit pas couper au
mileu d'un mot... (on va
| > pas gerer les cesures quand meme!!!)
| >
|
| Hello,
|
| Si c'est pour justifier du texte avec une police
à empattement fixe
| (Courrier par exemple) alors j'ai une fonction
toute faite pour toi.
|
| C'est du code que j'avais écrit il y a un an ou
2 et que j'ai placé
| sur VBFrance :
|
http://www.vbfrance.com/codes/JUSTIFICATION-TEXTE_36370.aspx
|
| C'est du code que j'ai écrit pour justifier de
longs paragraphes de
| texte pur. Le code est très simple à lire et
abondamment commenté.
|
| Si c'est pour aligner du texte avec une police
quelconque, alors
| comme le dis Jacques, alors il faut utiliser des
techniques différentes
| en utilisant entre autre textWidth (mais aussi
un peu du principe de ce
| code).
|
| --
| Jean-marc Noury (jean_marc_n2)
| Microsoft MVP - Visual Basic
| mailto: remove '_no_spam_' ;

| FAQ VB: http://faq.vb.free.fr/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Avatar
LE TROLL
Bonjour,

Il y a peut être d'autres méthodes, toutefois,
en prenant comme ça a été dit "CouRier New", ou
autre police fixe:

On extrait la taille en octets de la longueur de
la ligne voulue + le premier octet suivant.

Puis, selon le dernier octet de la ligne, et ou,
l'octet suivant (à toi de voir tout ce qui peut
marquer une coupure entre 2 mots), on recherche la
coupure et on insert vbcrlf (cher 13 + 10).

On a donc la ligne, si on veut justifier, on fait
une boucle de la ligne, et on rajoute des blanc où
il faut jusqu'à plus soif, sauf évidemment si la
ligne implique elle-même un saut de ligne, voire
deux...

Y a un sacré paquet de trucs à tester, y
compris le blancs insécables...

-------------

Autre possibilité si le texte n'est pas
immense: celle d'imprimer la forme qui contient
l'objet qui contient le texte, par blocs...


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"jc2nantes" a écrit dans le
message de news:
465468b6$0$15553$
| Bonjour,
|
| Voila ce que je cerche à faire...
|
| Insérer des sauts de ligne dans une chaine de
caractères de longueur
| variable.
|
| Au départ j'ai
|
| a$ = "abcde lksqfd lqksdied qlkdj dazdd zd
kzje zaeazelaze azazazaza"
| par exemple
|
| et je veux obtenir
|
| a$ = ""abcde lksqfd lqksdied" & Chr(13) &
"qlkdj dazdd zd kzje
| zaeazelaze" & Chr(13) & "azazazaza"
|
| sachant que chaque portion de la chaine ne doit
pas exceder X caractères et
| que ça ne doit pas couper au mileu d'un mot...
(on va pas gerer les cesures
| quand meme!!!)
|
| Si vous avez une idée, je prends !!!
|
| Merci,
|
| JC
|
|
|
Avatar
Aski
Jean-marc wrote:
Jean-marc wrote:

Hello,

Si c'est pour justifier du texte avec une police à empattement fixe
(Courrier par exemple) alors j'ai une fonction toute faite pour toi.



Si c'est pour aligner du texte avec une police quelconque, alors
comme le dis Jacques, alors il faut utiliser des techniques
différentes en utilisant entre autre textWidth (mais aussi un peu du
principe de ce code).



J'ajoute tout de même que pour que ce soit utilisable pour des sorties
graphiques avec n'importe quelle police, il y a en fait très très peu
de choses à modifier dans ce code.
Il suffit d'utiliser la longueur de la ligne au lieu du nombre max de
caractères, et d'utiliser la somme des textWidth() au lieu du nombre
de caractères. C'est faisable en 1 heure ou 2, tests compris.



Merci de compléter et corriger.
C'est ce que j'ai proposé avec l'erreur que tu as redressée. j'avais oublié
qu'il s'agissait de textWidth et non de Objet.Width.
Objet étant un objet Printer pour l'impression.
Avatar
Gloops
LE TROLL a écrit, le 23/05/2007 19:42 :
couRier = 1 R



C'est pourtant vrai, il n'y a que les Américains à avoir des idées
pareilles ;) (ou alors je suis en train d'étaler mon ignorance,
peut-être devrais-je me méfier).
Avatar
Gloops
Salut,

LE TROLL a écrit, le 23/05/2007 20:01 :
Y a un sacré paquet de trucs à tester, y
compris le blancs insécables...



Dis-moi si je me trompe, le blanc insécable (souvent représenté par le
caractère 160 décimal) ne devant pas être ... disséqué, doit ê tre traité
comme une lettre ou un chiffre, c'est précisément sa différence ave c le
blanc ou espace, normal.

A moins que tu parles d'un traitement avancé avec remplacement
automatique des espaces par des blancs insécables devant les signes de
ponctuation à graphisme double ?
Avatar
jc2nantes
Merci pour ces reponses... j'ai du travail !!!

JC


"jc2nantes" a écrit dans le message de news:
465468b6$0$15553$
Bonjour,

Voila ce que je cerche à faire...

Insérer des sauts de ligne dans une chaine de caractères de longueur
variable.

Au départ j'ai

a$ = "abcde lksqfd lqksdied qlkdj dazdd zd kzje zaeazelaze azazazaza"
par exemple

et je veux obtenir

a$ = ""abcde lksqfd lqksdied" & Chr(13) & "qlkdj dazdd zd kzje
zaeazelaze" & Chr(13) & "azazazaza"

sachant que chaque portion de la chaine ne doit pas exceder X caractères
et que ça ne doit pas couper au mileu d'un mot... (on va pas gerer les
cesures quand meme!!!)

Si vous avez une idée, je prends !!!

Merci,

JC





1 2