OVH Cloud OVH Cloud

formatage de nombres (comptabilité)

3 réponses
Avatar
billybob207
Bonjour,
j'ai beau avoir vu pas mal de conseils, astuces et autres dans le
genre, je ne trouve pas la solution à mon problème que voici:
Je dois formater des nombres (depuis un code VBA) pour export dans un
fichier texte selon le format suivant:
- un nombre fixe de caractères (mettons 12) avec au besoin des blancs
avant mes chiffres
- ma valeur numérique avec 2 décimales
- un point comme séparateur des décimales, au lieu de la virgule que
me donne Excel.
Par exemple: 123,45 doit donner " 123.45" (6 espaces)
et 2,5 doit donner " 2.50" (8 espaces).

La solution la plus proche que j'ai trouvée est d'utiliser le format
"comptabilité" avec un coup d'enregistreur de macro pour obtenir le
code, puis compter le nombre de caractères de la chaine et rajouter
mes espaces ensuite. Malheureusement, j'obtiens à chaque fois une
virgule et pas un point, ce qui semble venir des normes françaises de
format des nombres. Si je demande un remplacement, le dernier
caractère saute si c'est un "0".

Comment puis-je obtenir ce résultat en VBA, sachant que le code risque
d'être porté sur des machines pas nécessairement réglée pour un
affichage "français" ? (en gros, j'ai besoin d'une solution
indépendante des options régionales).

Merci d'avance pour votre aide,
Laurent

3 réponses

Avatar
AV
Essaye ça :
[A1].NumberFormat = "@"
[A1] = Application.Substitute(Space(12 - Len(Format([A1], "0.00"))) &
Format([A1], "0.00"), ",", ".")

AV
Avatar
Michel Gaboly
Bonjour,

Voici une fonction, à appeler à partir d'une boucle, qui devrait faire
ce que tu réclames :

Function Nombre12Car(Val As Single)
Dim Entier As Single, Dec As String
Entier = Int(Val)
Dec = Left((Val - Entier) * 100 & "00", 2)
Nombre12Car = Right(Space(12) & Entier & "." & Dec, 12)
End Function



Bonjour,
j'ai beau avoir vu pas mal de conseils, astuces et autres dans le
genre, je ne trouve pas la solution à mon problème que voici:
Je dois formater des nombres (depuis un code VBA) pour export dans un
fichier texte selon le format suivant:
- un nombre fixe de caractères (mettons 12) avec au besoin des blancs
avant mes chiffres
- ma valeur numérique avec 2 décimales
- un point comme séparateur des décimales, au lieu de la virgule que
me donne Excel.
Par exemple: 123,45 doit donner " 123.45" (6 espaces)
et 2,5 doit donner " 2.50" (8 espaces).

La solution la plus proche que j'ai trouvée est d'utiliser le format
"comptabilité" avec un coup d'enregistreur de macro pour obtenir le
code, puis compter le nombre de caractères de la chaine et rajouter
mes espaces ensuite. Malheureusement, j'obtiens à chaque fois une
virgule et pas un point, ce qui semble venir des normes françaises de
format des nombres. Si je demande un remplacement, le dernier
caractère saute si c'est un "0".

Comment puis-je obtenir ce résultat en VBA, sachant que le code risque
d'être porté sur des machines pas nécessairement réglée pour un
affichage "français" ? (en gros, j'ai besoin d'une solution
indépendante des options régionales).

Merci d'avance pour votre aide,
Laurent


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
billybob207
merci beaucoup pour ces réponses.
Laurent