'Propriétés de la fonction Mod :'(x + y) Mod z (x Mod z + y Mod z) Mod z >(P1)'(x * y) Mod z (x * (y Mod z)) Mod z >(P2) '(x * y) Mod z = ((x Mod z) * y) Mod z '(x * y) Mod z = ((x Mod z) * (y Mod z)) Mod z '--------------------------------------------------------------- Dim a As Double, d As Long, r As Long, L As Long, aStr As String 'Pour l'exemple :a 5019991665#: d 97aStr Trim(Str(a)) '"5019991665" L = Log(a) / Log(10) - 1 '(nbre de chiffres de a) - 1 Select Case L Case 9 '10 chiffres : dépasst capacité si a > 2 147 483 647 'dans l'exemple, r = 5 * (1 000 000 000 Mod 97) (P2) r = Val(Left(aStr, 1)) * (1000000000 Mod d) 'on supprime le premier chiffre : aStr = "019991665" aStr = Mid(aStr, 2) a Val(aStr) ' a 019991665 r = r + (a Mod d) ' (P1) r = r Mod d ' si r >= d Case Is < 9 'moins de 10 chiffres : pas de problème r = a Mod d Case Else 'plus de 10 chiffres : que fait-on ? End Select