Mise en forme d' un champ texte [Résolu]

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
- - Dernière réponse : LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
- 1 févr. 2008 à 00:44
Bonjour, Bonsoir,


J' ai un champ Texte qui est le résultat de la concaténation de cinq autres champs de type numériques.
Le problème se situe au niveau du formatage de ce champ résultat que je veux uniforme et de longueur fixe quelque soit les valeurs des champs
numériques.
Autre contrainte: Remplacer par des espaces les valeurs nulles ou égales à zéro.


Exemple:
   9.50    8.75   10.00   0.00   7.00
 10.00    0.00     8.00   6.75    0.00


Après concaténation, je dois avoir:
  9.80     8.75   10.00              7.00
10.00                 8.00   6.75    0.00


J' ai essayer avec
Format$(00.00), Format$(#.00), Format$(@@@@@)...etc
et en remplaçant 0.00 par "     " mais les résultats ne sont pas probants.

Merci de vouloir répondre.


Ps:espèrant que la mise en page sera parfaite.

                 
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Afficher la suite 

18 réponses

Meilleure réponse
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
3
Merci
au niveau de l'affichage il y aura décalage ou pas suivant le type de police que tu utilises c'est totalement ingérable au niveau du code sauf en choisissant une police de largeur constante pour tous les caracteres ce qui n'est que tres rarement le cas
faut aller chercher sur le net la police qui va bien

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 199 internautes nous ont dit merci ce mois-ci

Commenter la réponse de pile_poil
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
3
Merci
http://www.1001fonts.com/fonts_overview.html?page=1&category_id=7&preview_text=

quelques polices en "monospace"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 199 internautes nous ont dit merci ce mois-ci

Commenter la réponse de pile_poil
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
pardon, je voulais dire:
Format$(chp, "0.00" )...etc)

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
if valeur = 0 then
    texte = ""
else
    texte = cstr(valeur)
end if

for i = 0 to longeurchaine
    if len(texte)< longueurchaine then texte = " " & texte
next i

tu fais ça dans une boucle pour traiter toutes tes valeurs puis tu fais ensuite ta concaténation peinard
Commenter la réponse de pile_poil
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
En attendant, je bosse ..

j' ai tout essayé,mais pour l' instant ça reste une bosse !
Le plus dur c' est d' avoir la même longueur avec 5 espaces qu' avec 5 caractères.
Alors ..,je laisse tomber ou quoi ?
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
salut pile_poil,
pardon, post croisé.
j' ai essayé ceci:
xChp " " & IIf(![UV_MOY] 0, " ", Format$(![UV_MOY], "0.00")) & " " & _
IIf(![UV_EX] = 0, " ", Format$(![UV_EX], "0.00")) & " " & _
IIf(![UV_MCC] = 0, " ", Format$(![UV_MCC], "0.00")) & " " & _
IIf(![MCC1] = 0, " ", Format$(![MCC2], "0.00")) & " " & _
IIf(![MCC2] = 0, " ", Format$(![MCC1], "0.00")) & " "

mais au niveau de l' affichage, il y' a décalage.
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
A ma connaissance c' est Courrier new qui a la même casse.
Mais reste le problème de 10.00 et de tout autre nombre < 10 (9.00 par exemple.
il faudra soit avoir 09.00 soit " 9.00".
ce qui conduira à un autre test : <=10.
Mais bon , je crois que je vais chercher une autre approche.

Merci en tout cas et bonne fin de soirée.
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
oK !
Merci encore ..
Commenter la réponse de LIBRE_MAX
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
Tu peux regarder la fonction Space$ dans ton aide.
Ça pourrait servir...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
   Bonsoir MPi,
je viens de tester avec Space$() , voici ce que ça donne :



Private Sub Command1_Click()
 Text1.Text = "10.00" & "|" & Space$(1) & "8.50" & _
    "|" & Space$(5) & "|" & Space$(1) & "7.75"


 Text2.Text = Space$(1) & "7.00" & "|" & "10.00" & _
    "|" & Space$(1) & "9.50" & "|" & Space$(1) & "7.75"



End Sub



Résultat :
 Avec Courier New
10.00| 8.50|     | 7.75
 7.00|10.00| 9.50| 7.75 

Avec Garamond
10.00| 8.50|     | 7.75
 7.00|10.00| 9.50| 7.75 

Avec Times
10.00| 8.50|     | 7.75
 7.00|10.00| 9.50| 7.75 

le choix de la police de caractère reste impératif..
Merci .

 
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
Et si tu ne veux pas utiliser de valeurs fixes comme Space$(1)
tu peux utiliser en plus Len

Si tu sais que tu as besoin de 5 espaces, tu pourrais y aller un peu comme ceci
text1 = MaValeur1 & (Space(5) - Len(MaValeur1)) & _
            MaValeur2 & (Space(5) - Len(MaValeur2))

Tu vois le principe ?
Tu mets autant d'espaces nécessaires pour combler la longueur de la variable à écrire pour atteindre les 5 caractères souhaités...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
Oui mais le problème se situe au niveau de l' équivalence entre l' espace accupé par un espace par rapport à l' espace qu' occupera un caractère.
Pour preuve le résultat diffère selon la police choisi.Il faut que cette dernière ait la même casse.

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
mais ta dernière idée reste valable , en tout cas.
Merci encore.

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
reste que je dois remplacer 0.00 par 5 espaces

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
Si tu travailles sous VB6, il y aussi Textwidth qui pourrait éventuellement servir, mais le choix d'une police à espacement fixe demeure le plus simple...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
je travaille sous vb6, j' enregistre dans Access et j' édite en CrystalReport.
Tout un programme

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
des heures de plaisir...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
0
Merci
Mais il faut que je t' explique le topo.
J' ai un etat avec 40 colonnes subdivisé par groupe de 5.
J' ai pensé qu' au lieu d' avoir 40 champs je pourrais les réduire à 8.
en les concaténant par 5.
Tu vois un peu le manège.?

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
Commenter la réponse de LIBRE_MAX