OVH Cloud OVH Cloud

Supprimer les Zéros (débutant)

6 réponses
Avatar
alain
Bonjour,
je cherche à supprimer les premiers zéros de mon chiffre formaté :
0025.003.33 pour obtenir 25.003.33
Merci pour votre aide
Alain

6 réponses

Avatar
Patrice Henrio
la fonction format est ton amie. Mais je pense qu'avant d'obtenir 0025.00.33
il y a un traitement et c'est là qu'il faut agir.

Sinon soit S la chaîne à traiter 'ici 0025.003.33
while left(S,1,1)="0"
S=Mid(S,2)
Wend

Au revoir

Patrice

"alain" a écrit dans le message de news:
44174c6d$0$21550$
Bonjour,
je cherche à supprimer les premiers zéros de mon chiffre formaté :
0025.003.33 pour obtenir 25.003.33
Merci pour votre aide
Alain







Avatar
X
Bonjour,

De toute façon ton nombre il est faux, VB ne va pas l'avaler, tu lui as
mis x.y.z, c'est comme si tu mettais x,y,z... On ne peut pas mettre 2 fois
un groupe de décimal dans un même nombre (un seul point par nombre)!

Si c'est du texte, manifestement oui, autre possibilité (quand ton
nombre sera aux normes (1 seul point)), tu peux le convertir, en valeur
numérique, de facto il prendra un format numérique, soit:

Dim texte as string
Dim decimale as double

texte = "000000000000025003.33"
decimale = cDbl(texte)
texte = cStr(decimale)


------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"alain" a écrit dans le message de news:
44174c6d$0$21550$
Bonjour,
je cherche à supprimer les premiers zéros de mon chiffre formaté :
0025.003.33 pour obtenir 25.003.33
Merci pour votre aide
Alain







Avatar
alain
Merci pour vos lumières, je récidive..

Mais j'ai oublié de dire que mes chiffres peuvent avoir des valeurs
différentes : 2542.012.22 ou 0000.012.01 ou 0000.000.12
pour obtenir
2542.012.22 ou 12.01 ou 12.

J'essai avec la fonction Format(MonNum, "&&&&.&&&.&&")
C'est bon mais pour 0000.012.01 j'obtient en sortie .012.01 , il faudrait
supprimer le point de gauche.

Et si vous avez le temps, il faudrait que je puisse faire l'inverse.
A la saisie dans une zone text de 1 à 9 chiffres , formater mon chiffre
comme cela : XXX.XXX.XX

Merci pour votre patience.........

Alain


"alain" a écrit dans le message de news:
44174c6d$0$21550$
Bonjour,
je cherche à supprimer les premiers zéros de mon chiffre formaté :
0025.003.33 pour obtenir 25.003.33
Merci pour votre aide
Alain







Avatar
Gloops
alain a écrit :
A la saisie dans une zone text de 1 à 9 chiffres , formater mon chiffre
comme cela : XXX.XXX.XX



Salut,

ça, c'est l'affaire du contrôle MaskedEdit.
Dans les composants (boîte ouverte avec les touches Ctrl T), déclarer
"Microsoft Masked Edit Control 6.0 (SP3)" (fichier
C:WINDOWSSYSTEM32MSMASK32.OCX)

Chez moi, la première fois il faut que le projet soit ouvert avec les
droits administrateur.

OCX ça doit déclencher un réflexe : attention à combien de machines
doivent utiliser mon application, car il y a du boulot derrière pour le
déploiement. Pour un parc international, faire une recherche sur
Internet pour trouver une solution avec les API.
Avatar
Patrice Henrio
Si j'ai bien compris, seule la première partie est formatée et
éventuellement une chaîne nulle si que des 0.

tu reprends la partie while et tu teste S si ça commence par.

donc

If S<>"0000.000.00" then
while (Left(S,1)="0") or (Left(S,1)=".")
S=Mid(S,2)
wend
E,nd If

Pour l'autre sens

S ta chaîne
Nombres(S)=split(S,".")
Select case Ubound(Nombres)
0 : S="0000.000." & Formate(S,2)
1: S="0000." & Formate(Nombres(0),3) & "." & Nombres(1)
2:S=Formate(Nombres(0),4) & "." & Nombres(1) & "." & Nombres(2)
else msgBox "Il y a une erreur"
End case

Function Formate (N as string, F as Integer) as String
While Len(N)<F
N="0" & N
Wend
Formate=N
End function

Non testée et surtout non optimisée.

Cela suppose que le formatage de la chaîne S est déjà bon dans les deux
sens.

Il ne faut pas parler de nombre avec deux points décimaux mais de chaîne,
les nombres XXXX.XXX.XX n'xsitent pas.
On peut éventuellement créer une classe mais cela ne parait pas utile.


"alain" a écrit dans le message de news:
4417de0f$0$14282$
Merci pour vos lumières, je récidive..

Mais j'ai oublié de dire que mes chiffres peuvent avoir des valeurs
différentes : 2542.012.22 ou 0000.012.01 ou 0000.000.12
pour obtenir
2542.012.22 ou 12.01 ou 12.

J'essai avec la fonction Format(MonNum, "&&&&.&&&.&&")
C'est bon mais pour 0000.012.01 j'obtient en sortie .012.01 , il faudrait
supprimer le point de gauche.

Et si vous avez le temps, il faudrait que je puisse faire l'inverse.
A la saisie dans une zone text de 1 à 9 chiffres , formater mon chiffre
comme cela : XXX.XXX.XX

Merci pour votre patience.........

Alain


"alain" a écrit dans le message de news:
44174c6d$0$21550$
Bonjour,
je cherche à supprimer les premiers zéros de mon chiffre formaté :
0025.003.33 pour obtenir 25.003.33
Merci pour votre aide
Alain











Avatar
alain
Ok merci, je vais travailler sur le code
Cordialement Alain

"Patrice Henrio" a écrit dans le message de
news:
Si j'ai bien compris, seule la première partie est formatée et
éventuellement une chaîne nulle si que des 0.

tu reprends la partie while et tu teste S si ça commence par.

donc

If S<>"0000.000.00" then
while (Left(S,1)="0") or (Left(S,1)=".")
S=Mid(S,2)
wend
E,nd If

Pour l'autre sens

S ta chaîne
Nombres(S)=split(S,".")
Select case Ubound(Nombres)
0 : S="0000.000." & Formate(S,2)
1: S="0000." & Formate(Nombres(0),3) & "." & Nombres(1)
2:S=Formate(Nombres(0),4) & "." & Nombres(1) & "." & Nombres(2)
else msgBox "Il y a une erreur"
End case

Function Formate (N as string, F as Integer) as String
While Len(N)<F
N="0" & N
Wend
Formate=N
End function

Non testée et surtout non optimisée.

Cela suppose que le formatage de la chaîne S est déjà bon dans les deux
sens.

Il ne faut pas parler de nombre avec deux points décimaux mais de chaîne,
les nombres XXXX.XXX.XX n'xsitent pas.
On peut éventuellement créer une classe mais cela ne parait pas utile.


"alain" a écrit dans le message de news:
4417de0f$0$14282$
Merci pour vos lumières, je récidive..

Mais j'ai oublié de dire que mes chiffres peuvent avoir des valeurs
différentes : 2542.012.22 ou 0000.012.01 ou 0000.000.12
pour obtenir
2542.012.22 ou 12.01 ou 12.

J'essai avec la fonction Format(MonNum, "&&&&.&&&.&&")
C'est bon mais pour 0000.012.01 j'obtient en sortie .012.01 , il faudrait
supprimer le point de gauche.

Et si vous avez le temps, il faudrait que je puisse faire l'inverse.
A la saisie dans une zone text de 1 à 9 chiffres , formater mon chiffre
comme cela : XXX.XXX.XX

Merci pour votre patience.........

Alain


"alain" a écrit dans le message de news:
44174c6d$0$21550$
Bonjour,
je cherche à supprimer les premiers zéros de mon chiffre formaté :
0025.003.33 pour obtenir 25.003.33
Merci pour votre aide
Alain