0
(0)

Son rôle

Récupérer le reste d'une division.

= MOD( Nombre ; Diviseur )
  • Nombre : Le nombre à diviser pour obtenir le reste.
  • Diviseur : Le valeur par lequel vous souhaitez diviser Nombre.

Elle fonctionne !

Quel est le reste de la division de 11 par 4 ?

= MOD( 11 ; 4 ) ' => 3

C'est le bon résultat :
Le résultat de la division est 2 avec un reste de 3 (4 x 2 + 3 = 11).

Passons du coté obscure !

= MOD( -11 ; 4 ) ' => 1 !

Ce n'est pas le résultat attendu !

Comment est calculé ce reste ?

= Nombre - Diviseur * ENT( Nombre / Diviseur )

Exemple avec une valeur positive

Le reste de la division de 11 par 4.

= 11 - 4 * ENT( 11 / 4 )
= 11 - 4 * ENT(  2,75  )
= 11 - 4 * 2
= 11 - 8
=  3

C'est le bon résultat.

Exemple avec une valeur négative

Le reste de la division de -11 par 4.

= -11 - 4 * ENT( -11 / 4 )
= -11 - 4 * ENT(  -2,75  )
= -11 - 4 * -3
= -11 + 12 
=   1

Le problème vient ici de la fonction ENT car ENT( -2,75 ) = -3 et non -2 ! (Voir Comment arrondir des nombres de mille et une façons dans Excel)

Mais en réalité ce n'est pas faux !

= -11 / 4
 
> est égale à -2 et un reste de -3 (-2 * 4 -3 = -11).
> est aussi égale à -3 et un reste de +1 (-3 * 4 + 1 = -11). ! 

Ce n'est simplement pas la forme "classique".

Voir la section Entiers relatifs de la page Reste — Wikipédia (wikipedia.org).

Une solution

Faire attention à la concordance des signes

Il faut que le Diviseur soit du même signe que le Nombre

Le reste de la division de -11 par -4.

= -11 - (-4) * ENT( -11 / -4 )
= -11   + 4  * ENT(   2,75   )
= -11   + 4  * 2
= -11   + 8 
=  -3

= MOD( -11 ; -4 ) ' => 3

Comment faire si je ne connais pas le signe de Nombre ?

=SI( Nombre ; MOD( Nombre ; Diviseur * SIGNE(Nombre)) ; 0 )
  • * SIGNE(Nombre) permet d'adapter le signe ( SIGNE(-4) = -1 et SIGNE(4) = 1).
  • Mais SIGNE(0)=0 ce qui est problématique d'où la fonction SI.

Autre solution, utiliser TRONQUE à la place de ENT

= Nombre - Diviseur * TRONQUE( Nombre / Diviseur)

= 11 - 4 * TRONQUE( 11 / 4 )
= 11 - 4 * TRONQUE(  2,75  )
= 11 - 4 * 2
= 11 - 8
=  3

= -11 - 4 * TRONQUE( -11 / 4 )
= -11 - 4 * TRONQUE(  -2,75  )
= -11 - 4 * -2
= -11 + 8 
=  -3

Autre problématique avec MOD

Elle est impactée par le problème des calculs en virgule flottante.

=MOD(4,2 ; 0,6)=0 renvoie FAUX !!!

En revanche

=(4,2-0,6*TRONQUE(4,2/0,6))=0 renvoie VRAI

(Rappel : 0,6 * 7 = 4,2 =>Donc le reste est bien égale à 0 !)

Voir Scoop : Excel ne sait pas faire de simple soustraction !

Merci pour votre attention bienveillante.

Article intéressant ?

Cliquez sur une étoile pour noter cet article !

Note moyenne 0 / 5. Nombre de votes : 0

Aucun vote pour l'instant ! Soyez le premier à noter ce post.

Nous sommes désolés que cet article ne vous ait pas été utile !

Améliorons cet article !

Dites nous comment nous pouvons améliorer cet article ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *