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 : 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
Partager