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

String.Format

6 réponses
Avatar
djmcg
Bonjour,
Désolé de vous dérangé pour si peux !! :-))

J'ai ceci qui ne fonctionne pas,

txtMarchPaK.Text = String.Format(("0;C"), txt)

Vous voyez pourquoi ?

Dans le doc, je doit mal lire quelques chose mais quoi ?

txt contient bien la chaîne 12.5 et je veux afficher 12.50 E

Merci pour votre aide.
Bonne journée

Je ne vous lirait que ce soir, dommage.
Hé oui, le boulot.
Jean-Marie

6 réponses

Avatar
Fred
Dans : news:,
djmcg disait :
Bonjour,



Bonjour,

J'ai ceci qui ne fonctionne pas,
txtMarchPaK.Text = String.Format(("0;C"), txt)



txt contient bien la chaîne 12.5 et je veux afficher 12.50 E




C'est là le problème. Tu utilises un format de nombre avec une chaîne.
Essaie ceci :

Dim d as Double = Double.Parse(txt)
txtMarchPaK.Text = String.Format("C", d)


--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Avatar
djmcg
Bonsoir/Bonjour,

Merci Fred d'avoir pris la peine de répondre.
Très attentif a ta suggestion, avec laquelle d'ailleurs j'apprends que
je ne peux formaté une chaîne.

Que ce soit ton exemple ou encore texto :
txtMarchPaK.Text = String.Format("(0;C)", 123.45)

Je me dit que le problème viens d'ailleurs.
A savoir : y'a pas un imports a faire outre les imports dans les
référence de l'explorateur de solutions.
Je dit cela parce-que après avoir essayé ton exemple, il affiche
toujours la chaîne qui se trouve dans les guillemets. Or ces pas
possible, ma syntaxe est bonne et je l'ai même simplifié pour le test.

Merci encore pour ton aide.


Fred a écrit :
Dans : news:,
djmcg disait :
Bonjour,



Bonjour,

J'ai ceci qui ne fonctionne pas,
txtMarchPaK.Text = String.Format(("0;C"), txt)



txt contient bien la chaîne 12.5 et je veux afficher 12.50 E




C'est là le problème. Tu utilises un format de nombre avec une chaîne.
Essaie ceci :

Dim d as Double = Double.Parse(txt)
txtMarchPaK.Text = String.Format("C", d)




Avatar
Fred
Dans : news:,
djmcg disait :
Bonsoir/Bonjour,



Bonjour,

Je me dit que le problème viens d'ailleurs.
A savoir : y'a pas un imports a faire outre les imports dans les
référence de l'explorateur de solutions.



Non, cela ne passerait pas à la compilation.

Je dit cela parce-que après avoir essayé ton exemple, il affiche
toujours la chaîne qui se trouve dans les guillemets. Or ces pas
possible, ma syntaxe est bonne et je l'ai même simplifié pour le test.



Tu as raison, je ne t'ai pas présenté la bonne syntaxe, voici les
versions correctes (deux méthodes) :

1) On utilise la méthode ToString de l'objet à représenter sous forme de
chaîne :

Dim d As Double = 123.45
Console.WriteLine(d.ToString("(0);(C)"))

Il est bien entendu que les possibilités de Format sont liées au type de
l'objet.

2) On utilise la méthode partagée Format de la classe String en lui
spécifiant un ou plusieurs paramètres de type Object (quelconques donc),
qui vont venir remplacer les accolades dans la chaîne de format. Les
emplacements dans la chaîne de Format sont matérialisés par {0}, {1},
{2} etc ... Sachant que l'on peut inclure un formatage particulier dans
les accolades : {0:frmt0}, {1:frmt1} etc ...
Ce qui donnerait, sur ton exemple :

Dim d As Double = 123.45
Console.WriteLine(String.Format("{0:(0);(C)}", d))

un exemple plus général :

Console.WriteLine(String.Format("Aujourd'hui, {1:D}, la valeur de d est
{0:(0);(C)}", d, DateTime.Now))

Tu noteras que les paramètres peuvent apparaître dans un ordre différent
que l'ordre dans lequel ils sont passés à Format.

Toutes mes excuses pour ma première réponse approximative ! J'espère que
ces exemples te seront utiles, cette fois ci j'ai pris le temps de les
essayer ;-) .


--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Avatar
djmcg
Surtout ne t'excuses pas Fred ces déjà pas mal de prendre le temps de
répondre. Même si ta première réponse n'était pas extras concernant la
syntaxe, elle à eu pour effet une nouvelle fois d'attirer mon attention
sur ce que j'avais pas compris.
Et si maintenant cela fonctionne, j'ai toujours pas compris, mais comme
dit un amis que je ne connais pas et qui est sur le forum, "sujet à
revoir". :-))

Voici le travail fini, fini entre guillemet bien sûr :
txt = CStr(ObjetDataTable.Rows(RowNumber).Item("MarchPaK"))
Dim d As Double = Double.Parse(txt)
txtMarchPaK.Text = (String.Format("{0:C}", d))

Ce qui me chiffone c'est le dim (déclaration de d en double) au milieu
de tous.
J'ai l'habitude de mettre les dim en entête, mais celui-ci il semble que
je ne pourrais pas.

Encore merci pour Ton et Votre aides.

Jean-Marie

Fred a écrit :
Dans : news:,
djmcg disait :
Bonsoir/Bonjour,



Bonjour,

Je me dit que le problème viens d'ailleurs.
A savoir : y'a pas un imports a faire outre les imports dans les
référence de l'explorateur de solutions.



Non, cela ne passerait pas à la compilation.

Je dit cela parce-que après avoir essayé ton exemple, il affiche
toujours la chaîne qui se trouve dans les guillemets. Or ces pas
possible, ma syntaxe est bonne et je l'ai même simplifié pour le test.



Tu as raison, je ne t'ai pas présenté la bonne syntaxe, voici les
versions correctes (deux méthodes) :

1) On utilise la méthode ToString de l'objet à représenter sous forme de
chaîne :

Dim d As Double = 123.45
Console.WriteLine(d.ToString("(0);(C)"))

Il est bien entendu que les possibilités de Format sont liées au type de
l'objet.

2) On utilise la méthode partagée Format de la classe String en lui
spécifiant un ou plusieurs paramètres de type Object (quelconques donc),
qui vont venir remplacer les accolades dans la chaîne de format. Les
emplacements dans la chaîne de Format sont matérialisés par {0}, {1},
{2} etc ... Sachant que l'on peut inclure un formatage particulier dans
les accolades : {0:frmt0}, {1:frmt1} etc ...
Ce qui donnerait, sur ton exemple :

Dim d As Double = 123.45
Console.WriteLine(String.Format("{0:(0);(C)}", d))

un exemple plus général :

Console.WriteLine(String.Format("Aujourd'hui, {1:D}, la valeur de d est
{0:(0);(C)}", d, DateTime.Now))

Tu noteras que les paramètres peuvent apparaître dans un ordre différent
que l'ordre dans lequel ils sont passés à Format.

Toutes mes excuses pour ma première réponse approximative ! J'espère que
ces exemples te seront utiles, cette fois ci j'ai pris le temps de les
essayer ;-) .




Avatar
Fred
Dans : news:,
djmcg disait :


Voici le travail fini, fini entre guillemet bien sûr :
txt = CStr(ObjetDataTable.Rows(RowNumber).Item("MarchPaK"))



Là tu transformes en texte une donnée, qui, à priori est un nombre dans
la base (tu dois connaître son type)
Pourquoi ne pas écrire directement :
Dim d As Double = ObjetDataTable.Rows(RowNumber).Item("MarchPaK") ?
Cela t'évitera de le retransformer ensuite.

Ce qui me chiffone c'est le dim (déclaration de d en double) au milieu
de tous.



Oui, maintenant je ne procède plus que comme cela. Surtout qu'on a la
notion de portée de variable au niveau d'un bloc.
Donc, pour des variables de travail, je les déclare, et souvent
initialise en même temps, à l'endroit où j'en ai besoin.

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Avatar
djmcg
Je viens d'essayer ta dernière proposition et bien sûr cela fonctionne.
Ben, je crois que je vais t'imiter !! tu veux bien ? :-))
Bien sûûûûûr toutes proportion gardée, je débute moi en vb 2005.net :-))
En tous cas un grand merci.


Fred a écrit :
Dans : news:,
djmcg disait :


Voici le travail fini, fini entre guillemet bien sûr :
txt = CStr(ObjetDataTable.Rows(RowNumber).Item("MarchPaK"))



Là tu transformes en texte une donnée, qui, à priori est un nombre dans
la base (tu dois connaître son type)
Pourquoi ne pas écrire directement :
Dim d As Double = ObjetDataTable.Rows(RowNumber).Item("MarchPaK") ?
Cela t'évitera de le retransformer ensuite.

Ce qui me chiffone c'est le dim (déclaration de d en double) au milieu
de tous.



Oui, maintenant je ne procède plus que comme cela. Surtout qu'on a la
notion de portée de variable au niveau d'un bloc.
Donc, pour des variables de travail, je les déclare, et souvent
initialise en même temps, à l'endroit où j'en ai besoin.