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).
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
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).
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).