OVH Cloud OVH Cloud

[VBA] incompréhensions entre Modulo et moi...

4 réponses
Avatar
Microsoft VBA Excel
Salut à tous,

je m'arrache les cheveux sur un problème simple :
je ne comprends pas comment fonctionne l'instruction Mod (modulo).
Dans l'aide du VBE, il est dit :

result = number1 Mod number2
L'opérateur modulo, ou reste, divise l'argument number1 par l'argument
number2 (en arrondissant les nombres à virgules flottantes à des nombres
entiers) et ne retourne que le reste dans l'argument result

dans l'exemple ci-dessous, A (argument result) est égal à 5.
A = 19 Mod 6.7Or, avec ma petite calculatrice, (parce que depuis 5 minutes,
je boude Excel...), j'obtiens :19/6,7 = 2,83582208Et je ne comprends pas
comme Excel trouve 5... Qu'est-ce que "le reste" comme il l'appelle ?Merci à
toute âme charitable et compatissant à mon malheur...

4 réponses

Avatar
Microsoft VBA Excel
Une fois que la bonne âme aura réussi à me réconcillier avec Mod,
je cherche à savoir si deux valeurs sont multiples.

On m'a donné sur ce forum (et je remercie) le code :

if var1 mod var2=0 then
"multiple"
else
"pas multiple"
end if

ça fonctionne bien pour des valeurs qui n'ont pas de virgule.
Cependant, j'ai des cas avec virgule qui ne fonctionnent pas...

exemple, 36,58 n'est pas multiple de 36,59
or 36.58 mod 36.59 = 0

Merci d'avance bonne âme !



"Microsoft VBA Excel" a écrit dans le message de news:
%
Salut à tous,

je m'arrache les cheveux sur un problème simple :
je ne comprends pas comment fonctionne l'instruction Mod (modulo).
Dans l'aide du VBE, il est dit :

result = number1 Mod number2
L'opérateur modulo, ou reste, divise l'argument number1 par l'argument
number2 (en arrondissant les nombres à virgules flottantes à des nombres
entiers) et ne retourne que le reste dans l'argument result

dans l'exemple ci-dessous, A (argument result) est égal à 5.
A = 19 Mod 6.7Or, avec ma petite calculatrice, (parce que depuis 5
minutes, je boude Excel...), j'obtiens :19/6,7 = 2,83582208Et je ne
comprends pas comme Excel trouve 5... Qu'est-ce que "le reste" comme il
l'appelle ?Merci à toute âme charitable et compatissant à mon malheur...



Avatar
Gilles MOUGNOZ
Une fois que la bonne âme aura réussi à me réconcillier avec Mod,
je cherche à savoir si deux valeurs sont multiples.
On m'a donné sur ce forum (et je remercie) le code :
if var1 mod var2=0 then
"multiple"
else
"pas multiple"
end if
ça fonctionne bien pour des valeurs qui n'ont pas de virgule.
Cependant, j'ai des cas avec virgule qui ne fonctionnent pas...
exemple, 36,58 n'est pas multiple de 36,59
or 36.58 mod 36.59 = 0
Merci d'avance bonne âme !
Salut à tous,
je m'arrache les cheveux sur un problème simple :
je ne comprends pas comment fonctionne l'instruction Mod (modulo).
Dans l'aide du VBE, il est dit :
result = number1 Mod number2
L'opérateur modulo, ou reste, divise l'argument number1 par l'argument
number2 (en arrondissant les nombres à virgules flottantes à des nombres
entiers) et ne retourne que le reste dans l'argument result
dans l'exemple ci-dessous, A (argument result) est égal à 5.
A = 19 Mod 6.7Or, avec ma petite calculatrice, (parce que depuis 5
minutes, je boude Excel...), j'obtiens :19/6,7 = 2,83582208Et je ne
comprends pas comme Excel trouve 5... Qu'est-ce que "le reste" comme il
l'appelle ?Merci à toute âme charitable et compatissant à mon malheur...



Bonjour, "Microsoft VBA Excel"

A la base, le modulo sert à donner le reste entier d'une division entière.
Qu'est-ce que le reste, me diras-tu ?
En reprenant ton exemple (19 mod 6,7):
1) on commence par arrondir 6,7 à l'entier le plus proche, soit 7;
2) on enlève 7 à 19 jusqu'à ce que le résultat soit inférieur à 7;
3) c'est ce dernier résultat que la fonction renvoie, soit: 19-7-7=5
On peut également traduire cela par : 19 = 7*2 + 5 où 2 est le résultat de
la division entière ( opérateur ) et 5 est le reste de la division entière
( opérateur mod ).

Pour ce qui est de la fonction permettant de savoir si un nombre est
multiple d'un autre, essaie de remplacer le test par:
If CInt(var1/var2) = var1/var2 Then

Bonne continuation


Avatar
AV
| exemple, 36,58 n'est pas multiple de 36,59
| or 36.58 mod 36.59 = 0

Utilise la fonction de feuille de calcul et la méthode Evaluate :

Voir les différences de résultats entre la fonction vba et la fonction de
feuille de calcul :

'résultat attendu 7
MsgBox 100 Mod 15.5 ---> 4
MsgBox [mod(100,15.5)] ---> 7

AV
Avatar
Microsoft VBA Excel
Merci merci merci Alain, j'ai la réponse à un problème que je traîne depuis
des jours et des jours !

"AV" a écrit dans le message de news:
uoW%
| exemple, 36,58 n'est pas multiple de 36,59
| or 36.58 mod 36.59 = 0

Utilise la fonction de feuille de calcul et la méthode Evaluate :

Voir les différences de résultats entre la fonction vba et la fonction de
feuille de calcul :

'résultat attendu 7
MsgBox 100 Mod 15.5 ---> 4
MsgBox [mod(100,15.5)] ---> 7

AV