Remplissage d'une string

tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006 - 2 juin 2004 à 17:43
tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006 - 2 juin 2004 à 23:56
Je dois transformer n'importe quel montant dans une chaine d'exactement 12 caractères(on excluera le cas d'un montant de plus de 12 chiffres).
Le montant de base est un monétaire à 2 décimales (ex : 300,25 E) et cela doit donc se transformer en cette chaine:
000000030025.(le montant étant alors transformé en centimes).
Merci de m'aider please!

6 réponses

cs_paull Messages postés 2 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 2 juin 2004
2 juin 2004 à 18:48
Bonjour,
Tu peux utiliser cette fonction qui devrait t'aider.

Function Completer_a_gauche(argument As Variant, longueur As Integer) As String
la_chaine = Replace(CStr(argument), ".", "")
If Len(la_chaine) < longueur Then
Completer_a_gauche = String(longueur - Len(la_chaine), "0") + la_chaine
End If
End Function

Pour l'utiliser, il te suffira de tester comme suit par exemple :

msgbox Completer_a_gauche("123.45",12)

Explications :
"123.45" est une chaine que tu souhaites transformer.
12 est la longueur souhaitée (tu peux changer).

paull
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 juin 2004 à 19:33
Salut tedparker
Attention : la solution de paull supprime le point sans vérifier qu'il y a bien deux chiffres après !
Il serait donc souhaitable de faire autrement :
-1- Refomatter la chaine pour s'assurer qu'elle a bien deux décimales :
Chaine = Format(MaDonnée, "######.00")
-2- Supprimer le point :
Chaine = Replace(MaChaine, ".", vbNullString)
-3- Ensuite, pour le formattage à douze digit, tu peux faire
Chaine = Format(Chaine, "000000000000")

C'est un peu plus simple, mais ça ne t'empèche pas de mettre ces 3 instructions dans une fonction comme le suggère Paull.

Vala
Jack
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
2 juin 2004 à 20:15
Salut, tu as aussi :

Dim Somme as String, Chaine as String
Somme = cstr(TaDonnee*100)
Chaine = string(12-len(Somme),"0") & Somme

Cordialement

CanisLupus
0
tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006
2 juin 2004 à 22:20
jte fai confiance pr la bidouille car jpe pa tester chez moi!
Par contre tu pe m'expliquer ta méthode string?
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
2 juin 2004 à 22:50
String est une fonction de vb6, par ex :
string(5,"0") te renvoie "00000"
Tu peux vérifier dans la MSDN en tapant string et cliquer sur fonction.

Ce que je t'ai indiqué, ça crée une chaine de '0' ( le nombre de '0' est la différence entre ton nombre max de caractères (12) et la longueur de ta donnée (convertie en centimes puis en texte). Puis tu rajoutes à cette chaine ta donnée convertie.

Maintenant, tu peux l'écrire aussi en une seule ligne comme ça :

Chaine = string(12-len(cstr(TaDonnee*100)),"0") & TaDonnee*100

C à toi de voir ce qui est le mieux ou le plus élégant.

Cordialement

CanisLupus
0
tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006
2 juin 2004 à 23:56
Ok merci pour tout, jtesterai ca 2m1 mais jte fais confiance à 200%.
Merci a bientôt peut-être
0
Rejoignez-nous