\ et Mod qui ne fonctionnent pas

\ et Mod qui ne fonctionnent pas - VB/VBA/VBS - Programmation

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.

Reply

Marsh Posté le 06-12-2021 à 10:41:29   

Reply

Marsh Posté le 06-12-2021 à 12:45:28    

-


Message édité par P4board le 06-12-2021 à 12:47:14
Reply

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.

Reply

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


Message édité par MaybeEijOrNot le 14-12-2021 à 21:10:15

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed