\ et Mod qui ne fonctionnent pas - VB/VBA/VBS - Programmation
Marsh Posté le 14-12-2021 à 20:52:25
P4board a écrit : Bonjour, j'essaye d'utiliser \ et Mod en VBA sous Excel pour avoir la partie entière et la partie décimale. Quand mon nombre est entier, cela fonctionne, mais quand mon nombre est réel, ça ne fonctionne pas : |
L'aide dans l'éditeur VBA d'Excel précise que les opérateurs \ et Mod arrondissent les opérandes à virgules en Byte, Integer ou Long avant exécution.
Dans ton exemple, 9.5 est arrondi à 10 avant le calcul du quotient et du reste.
Marsh Posté le 14-12-2021 à 21:08:36
Si tu veux diviser des nombres décimaux par des entiers tu peux commencer par soustraire et stocker tes décimales puisqu'elles ne joueront que sur le reste.
Tu prends ton nombre décimal, tu le tronques, en soustrayant ton nombre décimal par sa troncature tu obtiens une partie du reste qu'il suffira d'ajouter à ton reste.
Si tu veux diviser par autre chose qu'un entier, tu multiplies ton dividende et ton diviseur par 10 à la puissance du nombre de décimales (du diviseur) pour obtenir un entier. Ensuite en appliquant le mod tu obtiendras le bon quotient, mais il faudra diviser ton reste par "10 à la puissance du nombre de décimales (du diviseur)".
Tu peux mixer ces deux techniques pour parer à tous les cas.
EDIT : en VBA tu peux aussi appeler les fonctions des feuilles de calcul via l'objet "WorksheetFunction" https://docs.microsoft.com/fr-fr/of [...] sual-basic
Marsh Posté le 06-12-2021 à 10:41:29
Bonjour, j'essaye d'utiliser \ et Mod en VBA sous Excel pour avoir la partie entière et la partie décimale. Quand mon nombre est entier, cela fonctionne, mais quand mon nombre est réel, ça ne fonctionne pas :
9 \ 2 = 4
9 Mod 2 = 1
9.5 \ 2 = 5
9.5 Mod 2 = 0
9 \ 1 = 9
9 Mod 1 = 0
9.5 \ 1 = 10
9.5 Mod 1 = 0
Les fonctions QUOTIENT et MOD en feuille de calcul fonctionnent parfaitement.
Une idée ?
Merci,
Olivier.