VBA éviter l'Arrondi du dernier chiffre avant la virgule.

zozo

XLDnaute Occasionnel
Bonjour à tout le forum,

Ma préoccupation en VBA est comme suit :

- J'ai la valeur initiale suivante (somme d'une colonne) : 4509833.72

- En VBA, en utilisant Application.Substitute(mt, ".", "") pour éliminer la virgule, la valeur devient : 450983472 (le problème : arrondi du dernier chiffre avant la virgule)

- Le résultat que j'essaie d'avoir en VBA est : 450983372 (avec élimination de la virgule uniquement).

Merci pour toute intervention de votre part.
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour à tout le forum,

Ma préoccupation en VBA est comme suit :

- J'ai la valeur initiale suivante (somme d'une colonne) : 4509833.72

- En VBA, en utilisant Application.Substitute(mt, ".", "") pour éliminer la virgule, la valeur devient : 450983472 (le problème : arrondi du dernier chiffre avant la virgule)

- Le résultat que j'essaie d'avoir en VBA est : 450983372 (avec élimination de la virgule uniquement).

Merci pour toute intervention de votre part.
:cool: simplement :
=INT(100*mt)
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir à tous :)

@Modeste geedee : apparemment INT n'est pas reconnu(directement dans la barre de formule).

Fonction personnalisée d'après Modeste geedee et pierrejean, à mettre dans un module.

Function Entier(cellule)
Entier = Int(100 * cellule)
End Function

Ensuite en C1: =Entier(A1), puis tirer vers le bas.
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
apparemment INT n'est pas reconnu(directement dans la barre de formule).
????
en formule :
=ENT(100*CelluleSomme)

:confused::rolleyes::mad::D
Excel est d'abord un tableur ,
avant que de penser : panacée=VBA
maîtriser le B.A. BA des feuille de calculs !!!!

et puis comme le dit JOB75,
un exemple et son contexte en situation avec le résultat attendu
faciliteraient la compréhension de tous...o_O⚡

;) NB :
je découvre à l'instant le menu contextuel Emoji
upload_2018-8-16_11-41-55.png
 

patricktoulon

XLDnaute Barbatruc
Bonjour
le mieux c'est encore de travailler le nombre en string mais de le restituer en long avec val
vous constaterez que j'injecte un nombre avec pour separatuer decimal un point mais!!! que je replace une virgule dans la fonction
VB:
Sub test()
valeur = sansvirgule(4509833.72)
MsgBox "valeur :" & valeur & "  type: " & TypeName(valeur)
End Sub

Function sansvirgule(NBRE As String) As Long
sansvirgule = Val(Replace(NBRE, ",", ""))
End Function
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG