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
    1. Extraction de la chaine de caractère correspondant au montant unitaire
    2. Extraction de la chaine de caractère déterminant la position de la virgule pour la chaine de caractère
    3. Reconstitution du montant de la chaine de caractères
    4. Utilisation d'une fonction " fx_nb_dec" pour formater le montant avec tous les chiffres après la virgule

  • Calcul du montant total




Code : Sélectionner tout - Visualiser dans une fenêtre à part
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