Problème format d'un nombre (avec décimales) calculé dans un autre module
Bonjour,
J'ai un problème de format, en effet je dois calculer un montant total à partir d'un prix unitaire qui est dans un fichier plat.
Dans ce fichier plat il y a position du montant unitaire et la position de la virgule à placer pour reconstituer le montant unitaire
Ex : 00001280007 -
Le dernier caractère correspond au placement de la virgule (de la droite vers la gauche)
Les 10 autres caractères correspondent au montant
Le montant unitaire est donc 0.0128
Jusqu'à cette étape je récupère bien 0.0128 mais lorsque je veux récupérer ce montant dans un autre module pour l'utiliser il m'indique 0.
Ci-dessous les étapes pour reconstituer le montant final plus la macro utilisée
Pouvez-vous m'aider?
Merci
- Dans un module "Module2" - Extraction du montant unitaire dans un fichier plat
- Extraction de la chaine de caractère correspondant au montant unitaire
- Extraction de la chaine de caractère déterminant la position de la virgule pour la chaine de caractère
- Reconstitution du montant de la chaine de caractères
- Utilisation d'une fonction " fx_nb_dec" pour formater le montant avec tous les chiffres après la virgule
- Calcul du montant total
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| Public Function SplitAmount(Line As String)
'Montant extrait montant d'une chaine de caractères
Montant = Replace(Mid(strLine, 38, 14), " ", "")
'Montant_Decimal_Locator donne le nombre de caractère de droite à gauche pour placer la virgule
Montant_Decimal_Locator = Replace(Mid(strLine, 52, 1), " ", "")
Nb_Decimale = Len(Montant) - Montant_Decimal_Locator
nb_Avant_Virgule = Mid(Montant, 1, Montant_Decimal_Locator)
nb_Après_Virgule = Mid(Montant, Montant_Decimal_Locator + 1, Len(Montant) - Montant_Decimal_Locator)
Montant_Final_Unitaire = fx_nb_dec((nb_Avant_Virgule & "," & nb_Après_Virgule), Nb_Decimale)
End Function
Public Function fx_nb_dec(ByVal Nombre, ByVal Decimales)
fx_nb_dec = Int(Nombre * 10 ^ Decimales + 1 / 2) / 10 ^ Decimales
End Function
'Dans un autre module
Public Montant_Final_Unitaire As Double
Sub test
Dim Montant As Double
Dim Quantité as Integer
Dim...
Montant_Total = Quantité * Montant_Final_Unitaire |