Les grands nombres dans excel

Excel affiche des 0 au delà du 15ème chiffre. Y a t'il une solution pour voir le nombre complètement ? D'autre part, la fonction Mod renvoie #NOMBRE! si j'utilise un grand nombre. Comment obtenir l'équivalent de cette fonction et avoir un résultat visible ?

Excel travaille avec des nombres de type Double, sur une précision d'environ 15 chiffres. Il n'y a aucun moyen de le forcer à utiliser une précision supérieure.
Si tu en as vraiment besoin, tu peux te faire aider par le type "Decimal" de VBA, qui autorise une précision d'environ 28 chiffres. Il faudra saisir tous tes grands nombres dans des cellules formatées en texte et faire tous les calculs sur ces nombres par l'intermédiaire de fonctions macro.
1) Tout d'abord il faut saisir tes nombres avec une quote ( ' ) devant pour permettre leur visualisation et éviter la perte de la précision.
2) On utilise le type Decimal pour convertir la chaîne de caractères immanquablement obtenue par la quote. Le type Decimal permet d 'obtenir des nombres sur 12 octets soit environ des nombres au delà des 27 chiffres.
Comme figurant dans le code exemple, on ne peut déclarer immédiatement le type Decimal par Dim x As Decimal (pas bon). Il faut passer par un variant puis le convertir au moyen de CDec soit
Dim x As Variant x = CDec(x) 3)
Dans le code il y une sub (donc sans valeur de retour) qui affiche par MsgBox le résultat du triple et du quart du nombre sélectionné. Il y a aussi des fonctions permettant les opérations de base sur les nombres de plus de 15 chiffres.
A noter que la valeur de retour est une chaîne de caractères pour que le nombre puisse apparaître complet, au niveau de la précison, dans la cellule de réception. Les fonctions ont des arguments Range. Il faut par conséquent leur passer des paramètres Range.
Exemple pour utiliser la fonction DECMultiplier:
Entrez en A1 la valeur '12345678901234567890 (ne pas oublier la quote)
Entrez en B1 le multiplicateur soit la valeur 17 (par exemple)
Entrez en C1 la formule =DECMultiplier(A1;B1)
Le résultat '209876541320987654130 s'affichera en C1 Si #VALEUR! s'affiche il y a un dépassement de capacité.

Quelques exemples de fonctions utilisant le type Decimal
' Addition

Function ADD(Nombre1 As String, Nombre2 As String) As String
 ADD = CDec(Nombre1) + Nombre2
 End Function

' Soustraction

Function subST(Nombre1 As String, Nombre2 As String) As String
 subST = CDec(Nombre1) - Nombre2
 End Function

' Multiplication

Function MULT(Nombre1 As String, Nombre2 As String) As String
 MULT = CDec(Nombre1) * Nombre2
 End Function

'Division

Function DIV(Nombre1 As String, Nombre2 As String) As String
 DIV = CDec(Nombre1) / Nombre2
 End Function

' Modulo

Function MOD2(Nombre As String, Diviseur As String) As String
 Dim Tmp
 Tmp = CDec(Nombre) / Diviseur
 MOD2 = Nombre - CDec(Left(Tmp, InStr(1, Tmp, _
  Application.International(xlDecimalSeparator)) - 1)) * Diviseur
 End Function

' Somme d'une plage

Function SOMME2(Plage As Range)
 Dim Arr
 Arr = (Plage)
 For Each Elt In Arr
  SOMME2 = CDec(SOMME2) + CDec(Elt)
 Next
 SOMME2 = CStr(SOMME2)
 End Function

Avec par exemple les nombres 123456789012345678901 et 98765432109876543210 saisis en A1 et A2 (formatées en texte), =MOD2(A1;A2) renverra le modulo sur 20 chiffres, 24691356902469135691 (également en format texte).

sub OperationsBigNumber()
 Dim x As Variant
 x = ActiveCell
 If IsEmpty(x) Or _
 Not IsNumeric(x) Then exit sub
 x = CDec(x)
 MsgBox "le triple de " & x & " est: " & x * 3
 MsgBox "le quart de " & x & " est: " & x / 4
 end sub

Auteur :

Mots clefs associés à cette page : ,

Function MOD2

Bonjour,
Lorsque j'utilise votre fonction MOD2 comme vous le présentez, avec Excel 2010, il donne comme résultat #REF!,
J'ai remplacé le nom de MOD2 par le nom "result"... elle fonctionne.
Je pense que la fonction MOD2 est utilisée par Excel...